Retrieving and saving media metadata using FFmpeg

I want to read the metadata in media files, and then save this metadata in a text / XML file so that I can later insert this data into my database. I would prefer to use ffmpeg.

Can you do the same with MediaInfo? I know that I can get metadata for individual tracks using MediaInfo, but I would like to automate it; as in the case of a new media file, read its metadata, and then save it in a txt / xml file.

Or is there another tool / utility / API that I can use for this?

+44
ffmpeg metadata media
Feb 27 '12 at 11:55
source share
4 answers

You can save the media metadata to a text file using the -f ffmetadata as follows:

 ffmpeg -i input_video -f ffmetadata metadata.txt 

For more information, see the Metadata section in the ffmpeg documentation.

+55
Feb 27 '12 at 22:18
source share

I prefer using exiftool, which offers me more exits than ffmpeg. take an example (file from iphone):

 exiftool IMG_0014.MOV >a.txt 

output




 ExifTool Version Number : 8.60 File Name : IMG_0014.MOV Directory : . File Size : 19 MB File Modification Date/Time : 2013:07:19 12:03:22-10:00 File Permissions : rw-r--r-- File Type : MOV MIME Type : video/quicktime Major Brand : Apple QuickTime (.MOV/QT) Minor Version : 0.0.0 Compatible Brands : qt Movie Data Size : 19979709 Movie Header Version : 0 Modify Date : 2013:07:19 22:03:21 Time Scale : 600 Duration : 7.27 s Preferred Rate : 1 Preferred Volume : 100.00% Preview Time : 0 s Preview Duration : 0 s Poster Time : 0 s Selection Time : 0 s Selection Duration : 0 s Current Time : 0 s Next Track ID : 3 Track Header Version : 0 Track Create Date : 2013:07:19 22:03:13 Track Modify Date : 2013:07:19 22:03:21 Track ID : 1 Track Duration : 7.27 s Track Layer : 0 Track Volume : 0.00% Image Width : 1920 Image Height : 1080 Graphics Mode : ditherCopy Op Color : 32768 32768 32768 Compressor ID : avc1 Source Image Width : 1920 Source Image Height : 1080 X Resolution : 72 Y Resolution : 72 Compressor Name : H.264 Bit Depth : 24 Video Frame Rate : 27.011 Camera Identifier : Back Frame Readout Time : 28512 microseconds Matrix Structure : 1 0 0 0 1 0 0 0 1 Media Header Version : 0 Media Create Date : 2013:07:19 22:03:13 Media Modify Date : 2013:07:19 22:03:21 Media Time Scale : 44100 Media Duration : 7.31 s Media Language Code : und Balance : 0 Handler Class : Data Handler Handler Vendor ID : Apple Handler Description : Core Media Data Handler Audio Channels : 1 Audio Bits Per Sample : 16 Audio Sample Rate : 44100 Audio Format : chan Model : iPhone 4S Software Version : 6.1.3 Create Date : 2013:07:20 08:03:13+10:00 Make : Apple Handler Type : Metadata Tags Make (und-AU) : Apple Creation Date (und-AU) : 2013:07:20 08:03:13+10:00 Software (und-AU) : 6.1.3 Model (und-AU) : iPhone 4S Avg Bitrate : 22 Mbps Image Size : 1920x1080 Rotation : 90 



and if I use ffmpeg

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

exit

 ;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 



+22
Sep 06 '13 at 12:46 on
source share

You can use ffprobe (which comes with ffmpeg ) to collect information about media files. For information on the general contents of a multimedia file, use

 ffprobe -show_streams -show_format DV06xx.avi 

and for information about each individual frame in the video file, use

 ffprobe -show_frames DV06xx.avi 

However, ffprobe doesn’t get as much information as my favorite tool, Mediainfo , for example, ffprobe 'does not display the time code of the first frame of the video (although it would otherwise refer to the manual page) or the recording date.

If you run mediainfo on the command line, you can even request XML output:

 mediainfo --OUTPUT=XML DV06xx.avi 

In my example, the output is:

 <?xml version="1.0" encoding="UTF-8"?> <Mediainfo version="0.7.63"> <File> <track type="General"> <Complete_name>DV06xx.avi</Complete_name> <Format>AVI</Format> <Format_Info>Audio Video Interleave</Format_Info> <Commercial_name>DVCPRO</Commercial_name> <Format_profile>OpenDML</Format_profile> <File_size>13.3 GiB</File_size> <Duration>1h 2mn</Duration> <Overall_bit_rate_mode>Constant</Overall_bit_rate_mode> <Overall_bit_rate>30.5 Mbps</Overall_bit_rate> <Recorded_date>2004-03-28 15:42:35.000</Recorded_date> </track> <track type="Video"> <ID>0</ID> <Format>DV</Format> <Commercial_name>DVCPRO</Commercial_name> <Codec_ID>dvsd</Codec_ID> <Codec_ID_Hint>Sony</Codec_ID_Hint> <Duration>1h 2mn</Duration> <Bit_rate_mode>Constant</Bit_rate_mode> <Bit_rate>24.4 Mbps</Bit_rate> <Encoded_bit_rate>28.8 Mbps</Encoded_bit_rate> <Width>720 pixels</Width> <Height>576 pixels</Height> <Display_aspect_ratio>4:3</Display_aspect_ratio> <Frame_rate_mode>Constant</Frame_rate_mode> <Frame_rate>25.000 fps</Frame_rate> <Standard>PAL</Standard> <Color_space>YUV</Color_space> <Chroma_subsampling>4:2:0</Chroma_subsampling> <Bit_depth>8 bits</Bit_depth> <Scan_type>Interlaced</Scan_type> <Scan_order>Bottom Field First</Scan_order> <Compression_mode>Lossy</Compression_mode> <Bits__Pixel_Frame_>2.357</Bits__Pixel_Frame_> <Time_code_of_first_frame>00:00:01:10</Time_code_of_first_frame> <Time_code_source>Subcode time code</Time_code_source> <Stream_size>12.6 GiB (94%)</Stream_size> <Encoding_settings>ae mode=full automatic / wb mode=automatic / white balance= / fcm=manual focus</Encoding_settings> </track> <track type="Audio"> <ID>1</ID> <Format>PCM</Format> <Format_settings__Endianness>Little</Format_settings__Endianness> <Format_settings__Sign>Signed</Format_settings__Sign> <Codec_ID>1</Codec_ID> <Duration>1h 2mn</Duration> <Bit_rate_mode>Constant</Bit_rate_mode> <Bit_rate>1 536 Kbps</Bit_rate> <Channel_s_>2 channels</Channel_s_> <Sampling_rate>48.0 KHz</Sampling_rate> <Bit_depth>16 bits</Bit_depth> <Stream_size>688 MiB (5%)</Stream_size> <Alignment>Aligned on interleaves</Alignment> <Interleave__duration>40 ms (1.00 video frame)</Interleave__duration> <Interleave__preload_duration>40 ms</Interleave__preload_duration> </track> </File> </Mediainfo> 

Adding the optional -f option will give you even more detailed information.

+6
Mar 03 '15 at 20:56
source share

There is also atomicparsley for MPEG-4 files.

0
Feb 20 '14 at 6:40
source share



All Articles