Journal Mediadeepa : que contiennent vos médias audio/vidéo ?

Posté par  (site web personnel, Mastodon) . Licence CC By‑SA.
Étiquettes :
23
28
oct.
2024

Bonjour à toutes et tous.

Cela fait très longtemps que je n’ai pas publié ici, alors autant annoncer des choses intéressantes !

J’ai suffisamment avancé dans l’écriture de mon (nouvel) applicatif libre pour considérer qu’il est en version beta : stable dans ses fonctions et corrigé de tous ses bugs connus. Je pense qu’il est venu le temps de vous en parler ici (il ne s’agit pas d’une pub et je n’ai rien à vendre !)

Mediadeepa est un petit utilitaire en ligne de commande, libre (GPLv3), en Java, qui permet d’analyser techniquement le contenu audio et vidéo d’un fichier média, via utilisation de filtres dédiés de ffmpeg.

En gros, l’application va lancer ffmpeg et ffprobe, via la création de lignes de commandes sur-mesure, récupérer à la volée tout ce qu’ils vont produire, traiter ces données pour en sortir des statistiques, des tableaux de données brutes, des graphiques, et même un petit rapport en HTML…

Le point fort de cette appli, c’est de faciliter toutes ces opérations, en rendant le processus accessible en quelques paramètres, et facilement automatisable. La gestion de la chaîne de filtre dans ffmpeg ainsi que l’exploitation des données brutes qui en sort s’avère être tout un art…

Ceci peut être très utile pour avoir une vue relativement rapide et précise de ce que contient un fichier audio/vidéo, comme des informations sur le débit réel, les niveaux audio, la présence d’image au noir, de silence audio ou d’images statiques, etc… ça peut même générer des copies d’écran, et une forme d’onde audio.

Si vous voulez en savoir plus, n’hésitez pas à me poser des questions.

Vous pouvez bien sûr visiter le repo, et le petit site de présentation/documentation auto généré.

Si cela vous intéresse et que voulez m’aider, vous pouvez essayer de lire la documentation et me faire un retour (notamment, s’il y a des choses qui ne sont pas claires). Vous pouvez même essayer l’appli : il y a certainement tout un tas de bugs qui attendent d’être découverts. Je fournis des paquets deb et rpm ! (si vous installez une JVM récente).

Aucun modèle économique est prévu pour le moment. Ça reste un outil spécial pour des besoins spéciaux. Ayant un boulot à côté, il m’est difficile de prioriser du temps à passer sur ce projet.

Merci à tous !

Visuel de l'appli

  • # Quelles sont les différences et similitudes par rapport à MediaInfo ?

    Posté par  . Évalué à 8 (+6/-0).

    Bonjour,

    Comme dis dans le titre du commentaire:
    Quelles sont les différences et similitudes par rapport à MediaInfo ?

    Merci !

    • [^] # Re: Quelles sont les différences et similitudes par rapport à MediaInfo ?

      Posté par  (site web personnel, Mastodon) . Évalué à 10 (+9/-0).

      La réponse courte : Mediainfo se limitera à lire les en-têtes et de les interpréter.
      Ici, je vais demander à ffmpeg d’ouvrir le container et de décoder les images et les sons, ce qui va lui permettre de récupérer des informations sur le contenu lui-même. Cela peut prendre beaucoup plus de temps.

      La réponse longue : les deux outils sont complémentaires, et redondant sur les informations extraites des en-têtes (via ffprobe de mon coté). Il est possible que Mediainfo sorte plus d’informations de son côté. Il est parfaitement envisageable de rajouter les informations issue de Mediainfo en plus de celles existantes dans Mediadeepa. Et peut-être même d’afficher des différences. À ma connaissance, Médiainfo, ne pourra pas sortir des informations ou des statistiques issus des paquets du container média, des images vidéos, et des sons.
      Enfin, certains containers n’ont pas vraiment d’entêtes (MPEG PS/TS), et d’autres peuvent mentir dedans (AVI double audio). A un moment donné il peut être utile de voir ce qu’il y a réellement dans le fichier.

    • [^] # Re: Quelles sont les différences et similitudes par rapport à MediaInfo ?

      Posté par  (site web personnel, Mastodon) . Évalué à 9 (+8/-0).

      D’autre part, Mediainfo peut interpréter certains résultats (heuristiques) pour apporter une meilleure réponse. Ceci est pratique pour l’utilisateur, mais dans des workflow techniques ou dans du debug, on veut avoir besoin de savoir exactement ce que le fichier prétend être. Et dans d’autres cas, on a même besoin de savoir ce que ffmpeg voit… dans les workflow où il va agir. Ffprobe répondra à ces questions.

      • [^] # Re: Quelles sont les différences et similitudes par rapport à MediaInfo ?

        Posté par  (site web personnel) . Évalué à 6 (+4/-0).

        pour le coup, ce serait bien d'avoir l'avis de Zenitram< ;-) (genre liste à la Prévert de fonctionnalités dans une grille consultant-aware compliant)

        si ça se trouve, il va te trouver un financement pour devnewton< pour relire ton code java :D

        En tout cas, félicitations pour ta doc' en anglais (bon, ça manque de tournures idiomatiques et ça se voit que ce n'est pas ta langue maternelle, mais c'est de meilleure facture que certains français sont capables d'écrire :p). Reste à avoir une doc' en français o_O

        • [^] # Re: Quelles sont les différences et similitudes par rapport à MediaInfo ?

          Posté par  (site web personnel, Mastodon) . Évalué à 2 (+1/-0).

          Merci pour ton retour !

          Les objectifs pour moi en terme de documentation, c’était que ça soit le plus compréhensible possible, complet sans que ça soit trop lourd, et surtout que ça doit coller avec ce que fait précisément l’application (à jour quoi). Le reste, c’est du bonus.

          Si certaines phrases te semblent mal foutues, n’hésite pas à me les remonter !

          Pour une VF, un bon coup de trad automatique… et ça devrait faire l’affaire, sinon, n’hésite pas non plus à me demander de l’aide !

        • [^] # Re: Quelles sont les différences et similitudes par rapport à MediaInfo ?

          Posté par  . Évalué à 2 (+1/-0). Dernière modification le 29 octobre 2024 à 11:44.

          Bravo et merci pour ce travail.

          MediaInfo avertit pour un MP4/AVC s'il y a un dépassement d'offset du conteneur par le flux vidéo.

          • [^] # Re: Quelles sont les différences et similitudes par rapport à MediaInfo ?

            Posté par  (site web personnel, Mastodon) . Évalué à 1 (+0/-0).

            Merci pour ton retour !

            Je pense que ffprobe aussi, et je crois que je l’affiche. Je suis preneur d’un fichier d’exemple pour vérifier.

            • [^] # Re: Quelles sont les différences et similitudes par rapport à MediaInfo ?

              Posté par  . Évalué à 1 (+0/-0).

              Désolé, je ne peux faire sortir, je n'ai constaté cela qu'en contexte pro.

              • [^] # Re: Quelles sont les différences et similitudes par rapport à MediaInfo ?

                Posté par  (site web personnel, Mastodon) . Évalué à 1 (+0/-0).

                Et ce que tu serais reproduire/décrire le process qui produit ce fichier ?

                A minima publier la sortie de ffprobe dessus?

                • [^] # Re: Quelles sont les différences et similitudes par rapport à MediaInfo ?

                  Posté par  . Évalué à 1 (+0/-0).

                  Désolé, j'ai cherché, nous n'avons plus de fichier présentant cette erreur.

                  L'erreur était, dans MediaInfo : Element size 6726752534 is more than maximal permitted size 6724214162 (offset 0xF040)

                  Discordance entre les tailles déclarées des conteneur et flux vidéo.

                  • [^] # Re: Quelles sont les différences et similitudes par rapport à MediaInfo ?

                    Posté par  . Évalué à 2 (+1/-0).

                    J'en ai retrouvé un, mais ce n'est pas un AVC mais un APR.

                    Sorties :

                    MediaInfo

                    Conformance errors : 1 
                    mdat : Yes   0x00000000 : Yes    General compliance : Element size 79830182439 is more than maximal permitted size 79827055488 (offset 0x30)
                    

                    ffprobe

                    ffprobe version 4.2.7-0ubuntu0.1 Copyright (c) 2007-2022 the FFmpeg developers
                      libavutil      56. 31.100 / 56. 31.100
                      libavcodec     58. 54.100 / 58. 54.100
                      libavformat    58. 29.100 / 58. 29.100
                      libavdevice    58.  8.100 / 58.  8.100
                      libavfilter     7. 57.100 /  7. 57.100
                      libavresample   4.  0.  0 /  4.  0.  0
                      libswscale      5.  5.100 /  5.  5.100
                      libswresample   3.  5.100 /  3.  5.100
                      libpostproc    55.  5.100 / 55.  5.100
                    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.mov':
                      Metadata:
                        major_brand     : qt  
                        minor_version   : 537199360
                        compatible_brands: qt  
                        creation_time   : 2024-08-15T20:28:44.000000Z
                      Duration: 01:01:45.49, start: 0.000000, bitrate: 172349 kb/s
                        Stream #0:0(eng): Video: prores (HQ) (apch / 0x68637061), yuv422p10le(tv, bt709/unknown/unknown, progressive), 1920x1080, 163115 kb/s, SAR 1:1 DAR 16:9, 23.98 fps, 23.98 tbr, 24k tbn, 24k tbc (default)
                        Metadata:
                          creation_time   : 2024-08-15T20:28:44.000000Z
                          handler_name    : Apple Video Media Handler
                          encoder         : Apple ProRes 422 (HQ)
                          timecode        : 00:59:20:00
                        Stream #0:1(eng): Audio: pcm_s24le (lpcm / 0x6D63706C), 48000 Hz, 1 channels (FL), s32 (24 bit), 1152 kb/s (default)
                        Metadata:
                          creation_time   : 2024-08-15T20:28:44.000000Z
                          handler_name    : Apple Sound Media Handler
                        Stream #0:2(eng): Audio: pcm_s24le (lpcm / 0x6D63706C), 48000 Hz, 1 channels (FR), s32 (24 bit), 1152 kb/s (default)
                        Metadata:
                          creation_time   : 2024-08-15T20:28:44.000000Z
                          handler_name    : Apple Sound Media Handler
                        Stream #0:3(eng): Audio: pcm_s24le (lpcm / 0x6D63706C), 48000 Hz, mono, s32 (24 bit), 1152 kb/s (default)
                        Metadata:
                          creation_time   : 2024-08-15T20:28:44.000000Z
                          handler_name    : Apple Sound Media Handler
                        Stream #0:4(eng): Audio: pcm_s24le (lpcm / 0x6D63706C), 48000 Hz, 1 channels (LFE), s32 (24 bit), 1152 kb/s (default)
                        Metadata:
                          creation_time   : 2024-08-15T20:28:44.000000Z
                          handler_name    : Apple Sound Media Handler
                        Stream #0:5(eng): Audio: pcm_s24le (lpcm / 0x6D63706C), 48000 Hz, 1 channels (BL), s32 (24 bit), 1152 kb/s (default)
                        Metadata:
                          creation_time   : 2024-08-15T20:28:44.000000Z
                          handler_name    : Apple Sound Media Handler
                        Stream #0:6(eng): Audio: pcm_s24le (lpcm / 0x6D63706C), 48000 Hz, 1 channels (BR), s32 (24 bit), 1152 kb/s (default)
                        Metadata:
                          creation_time   : 2024-08-15T20:28:44.000000Z
                          handler_name    : Apple Sound Media Handler
                        Stream #0:7(eng): Audio: pcm_s24le (lpcm / 0x6D63706C), 48000 Hz, downmix, s32 (24 bit), 2304 kb/s (default)
                        Metadata:
                          creation_time   : 2024-08-15T20:28:44.000000Z
                          handler_name    : Apple Sound Media Handler
                        Stream #0:8(eng): Data: none (tmcd / 0x64636D74) (default)
                        Metadata:
                          creation_time   : 2024-08-15T20:28:44.000000Z
                          handler_name    : Apple Timecode Media Handler
                          timecode        : 00:59:20:00
                    
                    • [^] # Re: Quelles sont les différences et similitudes par rapport à MediaInfo ?

                      Posté par  (site web personnel, Mastodon) . Évalué à 2 (+1/-0).

                      En effet, Mediainfo ne l’aime pas.
                      Par contre, ffprobe n’a pas du tout l’air d’être dérangé (et rien ne sera remonté dans Mediadeepa).

                      Donc, même si le fichier n’est pas conforme, ça n’a pas l’air de s’opposer à son exploitation.

                      Et qu’en pensent d’autres outils libres sur ce fichier ? Après les mov, hors mp4, ça peut être sioux parfois (sans compter le fast start).

                      Et je suis admiratif de l’organisation des pistes audio, avec un stream par canal 5.1… ça doit être fun à gérer derrière !

        • [^] # Re: Quelles sont les différences et similitudes par rapport à MediaInfo ?

          Posté par  (site web personnel) . Évalué à 10 (+11/-0).

          pour le coup, ce serait bien d'avoir l'avis de Zenitram< ;-) (genre liste à la Prévert de fonctionnalités dans une grille consultant-aware compliant)

          Pas trop mon truc de mettre en compétition.
          Mais en gros MediaInfo et son pendant focalisé sur le conformance checker MediaConch regardent la structure d'un fichier, pendant que notre outil QCTools regarde la qualité du contenu et est donc plutôt dans le style du produit présenté.
          que chacun teste les logiciels et prenne le meilleur pour lui.

          A noter que les filtres astats utilisés par Mediadeepa ont pour la plupart été créés dans le cadre du développement de QCTools :-p.

  • # Bravo

    Posté par  (site web personnel, Mastodon) . Évalué à 4 (+3/-0).

    Beau projet.

    En survolant la doc je lis

    It only support the first video, and the first founded audio stream of a file.

    Ça veut dire que tu ne peux pas l'utiliser sur des containers type MXF OP 1A pour lesquels l'audio multicanal est fourni sous forme de plusieurs streams mono ?

    Est-ce que tu connais les travaux de l'UER sur le contrôle qualité ( https://tech.ebu.ch/qc ) ?

    • [^] # Re: Bravo

      Posté par  (site web personnel, Mastodon) . Évalué à 2 (+1/-0).

      Merci pour ton compliment.

      Oui, c’est exactement pour ça que j’ai écrit cette phrase. D’ailleurs, j’ai cette issue d’ouverte à ce sujet. Cependant, il traitera correctement la vidéo et la première piste audio (mono).

      Il est prévu par la suite, notamment si le besoin se fait fortement sentir, de prendre en charge des topologies audio personnalisées et d’exploiter tous les flux. Ça va bouger pas mal le modèle de données internes. Cela risque d’avoir des effets de bord que je n’ai pas encore évalué.

      Quand au QC, ça viendra plus tard, et je ne connais pas encore assez bien le MXF pour pouvoir apporter quelque chose dessus d’intéressant.

      Après, s’il existe des outils libres qui me renvoient des informations et une approche pour les traiter (peut-être BBC BMX), ça serait avec plaisir d’insérer ça dans la roadmap.

Envoyer un commentaire

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.