107 votes

Récupérer et enregistrer les métadonnées des médias en utilisant FFmpeg

Je veux lire les métadonnées dans les fichiers multimédias, puis enregistrer ces métadonnées dans un fichier texte/xml, afin de pouvoir ensuite insérer ces données dans ma base de données. Je préférerais utiliser ffmpeg.

Est-il également possible de faire la même chose avec MediaInfo?? Je sais que je peux obtenir les métadonnées pour des pistes individuelles en utilisant MediaInfo, mais je voudrais automatiser cela ; c'est-à-dire que chaque fois qu'un nouveau fichier multimédia est trouvé, lire ses métadonnées et les stocker dans un fichier txt/xml.

Ou, existe-t-il un autre outil/utilitaire/API que je peux utiliser pour cela?

135voto

Dmitry Shkuropatsky Points 1835

Vous pouvez enregistrer les métadonnées globales dans un fichier texte en utilisant l'option -f ffmetadata comme suit :

ffmpeg -i in.mp4 -f ffmetadata in.txt

Si vous avez également besoin des métadonnées des flux vidéo et audio (par exemple si les métadonnées globales ne contiennent pas l'heure de création), utilisez :

ffmpeg -i in.mp4 -c copy -map_metadata 0 -map_metadata:s:v 0:s:v -map_metadata:s:a 0:s:a -f ffmetadata in.txt

Pour plus de détails, consultez la section Métadonnées dans la documentation de ffmpeg.

Pour restaurer les métadonnées à partir d'un fichier, consultez https://stackoverflow.com/a/50580239/2235831.

67voto

Chenming Zhang Points 318

Je préfère utiliser exiftool qui m'offre plus de sorties que ffmpeg. prenez un exemple (un fichier iphone):

exiftool IMG_0014.MOV >a.txt

La production est


Numéro de version d'ExifTool         : 8.60
Nom de fichier                       : IMG_0014.MOV
Répertoire                           : .
Taille du fichier                    : 19 Mo
Date/Heure de modification du fichier : 2013:07:19 12:03:22-10:00
Permissions de fichier                : rw-r--r--
Type de fichier                      : MOV
Type MIME                            : video/quicktime
Marque principale                    : Apple QuickTime (.MOV/QT)
Version mineure                      : 0.0.0
Marques compatibles                  : qt
Taille des données vidéo              : 19979709
Version de l'en-tête de la vidéo      : 0
Date de modification                 : 2013:07:19 22:03:21
Echelle de temps                     : 600
Durée                                : 7,27 s
Taux préféré                         : 1
Volume préféré                       : 100,00%
Temps de prévisualisation            : 0 s
Durée de la prévisualisation         : 0 s
Temps d'affichage                    : 0 s
Temps de sélection                   : 0 s
Durée de sélection                   : 0 s
Temps actuel                         : 0 s
ID de piste suivante                 : 3
Version de l'en-tête de piste        : 0
Date de création de la piste         : 2013:07:19 22:03:13
Date de modification de la piste     : 2013:07:19 22:03:21
ID de piste                          : 1
Durée de la piste                    : 7,27 s
Couche de piste                       : 0
Volume de piste                       : 0,00%
Largeur de l'image                    : 1920
Hauteur de l'image                    : 1080
Mode graphique                        : ditherCopy
Couleur d'opération                   : 32768 32768 32768
ID du compresseur                     : avc1
Largeur de l'image source              : 1920
Hauteur de l'image source             : 1080
Résolution en X                       : 72
Résolution en Y                       : 72
Nom du compresseur                    : H.264
Profondeur en bits                    : 24
Fréquence d'images vidéo              : 27,011
Identifiant de la caméra              : Arrière
Temps de lecture d'image              : 28512 microseconds
Structure de la matrice               : 1 0 0 0 1 0 0 0 1
Version de l'en-tête multimédia       : 0
Date de création multimédia           : 2013:07:19 22:03:13
Date de modification multimédia      : 2013:07:19 22:03:21
Echelle de temps multimédia          : 44100
Durée multimédia                      : 7,31 s
Code langue multimédia                : und
Balance                               : 0
Classe de gestionnaire                : Gestionnaire de données
ID du vendeur de gestionnaire         : Apple
Description du gestionnaire           : Gestionnaire de données Core Media
Canaux audio                          : 1
Bits audio par échantillon            : 16
Taux d'échantillonnage audio          : 44100
Format audio                         : chan
Modèle                               : iPhone 4S
Version du logiciel                  : 6.1.3
Date de création                     : 2013:07:20 08:03:13+10:00
Fabricant                            : Apple
Type de gestionnaire                : Balises de métadonnées
Fabricant (und-AU)                   : Apple
Date de création (und-AU)            : 2013:07:20 08:03:13+10:00
Logiciel (und-AU)                    : 6.1.3
Modèle (und-AU)                      : iPhone 4S
Débit binaire moyen                  : 22 Mbps
Taille de l'image                     : 1920x1080
Rotation                             : 90

alors si j'utilise ffmpeg

 ffmpeg -i IMG_0014.MOV -f ffmetadata metadata.txt

La production est

;FFMETADATA1
major_brand=qt  
minor_version=0
compatible_brands=qt  
date-eng=2013-07-20T08:03:13+1000
encoder=6.1.3
encoder-eng=6.1.3
date=2013-07-20T08:03:13+1000

30voto

Daniel K. Points 420

Vous pouvez utiliser ffprobe (fourni avec ffmpeg) pour recueillir des informations sur les fichiers multimédias. Pour obtenir des informations sur le contenu global d'un fichier multimédia, utilisez

ffprobe -show_streams -show_format DV06xx.avi 

et pour des informations sur chaque image individuelle dans un fichier vidéo, utilisez

ffprobe -show_frames DV06xx.avi 

Cependant, ffprobe ne récupère pas autant d'informations que mon outil préféré, Mediainfo, par exemple, 'ffprobe' ne affiche pas le code temporel de la première image de la vidéo (bien que la page de manuel prétende le contraire) ou la date d'enregistrement.

Si vous exécutez mediainfo en ligne de commande, vous pouvez même demander une sortie au format XML :

mediainfo --OUTPUT=XML DV06xx.avi 

Dans mon exemple, la sortie est :

DV06xx.avi
AVI
Audio Video Interleave
DVCPRO
OpenDML
13.3 GiB
1h 2mn
Constant
30.5 Mbps
2004-03-28 15:42:35.000

0
DV
DVCPRO
dvsd
Sony
1h 2mn
Constant
24.4 Mbps
28.8 Mbps
720 pixels
576 pixels
4:3
Constant
25.000 fps
PAL
YUV
4:2:0
8 bits
Interlaced
Bottom Field First
Lossy
2.357
00:00:01:10
Subcode time code
12.6 GiB (94%)
ae mode=full automatic / wb mode=automatic / white balance= / fcm=manual focus

1
PCM
Little
Signed
1
1h 2mn
Constant
1 536 Kbps
2 channels
48.0 KHz
16 bits
688 MiB (5%)
Aligned on interleaves
40 ms (1.00 video frame)
40 ms

Ajouter le paramètre optionnel -f produira des informations encore plus détaillées.

2voto

Pankaj Chauhan Points 21

Vous pouvez définir les métadonnées sur la vidéo, mentionnez ci-dessous l'album_artist

ffmpeg -i source.mp4 -metadata album_artist='stack developer' -y -r 1 -acodec copy -vcodec copy destination.mp4

Et récupérez la balise meta comme suit:

ffmpeg -i destination.mp4

Utilisez ceci sur la ligne de commande.

1voto

Memming Points 982

Il y a aussi atomicparsley pour les fichiers MPEG-4.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X