it-swarm.com.de

Medien-Metadaten mit FFmpeg abrufen und speichern

Ich möchte die Metadaten in Mediendateien lesen und diese Metadaten dann in einer Text-/XML-Datei speichern, damit ich sie später in meine Datenbank einfügen kann. Ich würde es vorziehen, ffmpeg zu verwenden.

Ist das gleiche auch mit MediaInfo möglich? Ich weiß, dass ich die Metadaten für einzelne Tracks mit MediaInfo abrufen kann, aber ich möchte sie automatisieren. Lesen Sie wie in jedem Fall, in dem eine neue Mediendatei gefunden wird, ihre Metadaten und speichern Sie sie in einer txt/xml-Datei.

Gibt es ein anderes Tool/Utility/API, das ich dafür verwenden kann?

53
Rahul Patwa

Sie können die globalen Metadaten mit der Option -f ffmetadata wie folgt in einer Textdatei speichern:

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

Wenn Sie auch Metadaten aus den Video- und Audioströmen benötigen (z. B. wenn die globalen Metadaten die Erstellungszeit nicht enthalten), verwenden Sie Folgendes:

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

Weitere Informationen finden Sie im Abschnitt Metadata in der ffmpeg-Dokumentation.

Informationen zum Wiederherstellen von Metadaten aus einer Datei finden Sie unter https://stackoverflow.com/a/50580239/2235831 .

69

Ich bevorzuge die Verwendung von Exiftool, das mir mehr Ausgänge bietet als ffmpeg. Nehmen Sie ein Beispiel (eine Datei vom iPhone):

exiftool IMG_0014.MOV >a.txt

die Ausgabe ist 


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

während ich ffmpeg benutze

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

die Ausgabe ist

;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

27
Chenming Zhang

Sie können ffprobe (im Lieferumfang von ffmpeg enthalten) verwenden, um Informationen zu Multimediadateien zu sammeln. Informationen zum Gesamtinhalt einer Multimediadatei finden Sie hier

ffprobe -show_streams -show_format DV06xx.avi 

und für Informationen zu jedem einzelnen Bild in einer Videodatei

ffprobe -show_frames DV06xx.avi 

Allerdings ffprobe ruft nicht so viele Informationen ab wie mein Lieblingswerkzeug Mediainfo , z. B. zeigt 'ffprobe' nicht den Zeitcode des ersten Frames des Videos (obwohl die Manpage anders behauptet) oder die Aufnahmedatum.

Wenn Sie mediainfo in der Befehlszeile ausführen, können Sie sogar eine Ausgabe im XML-Format anfordern:

mediainfo --OUTPUT=XML DV06xx.avi 

In meinem Beispiel lautet die Ausgabe:

<?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>

Durch das Hinzufügen des optionalen Parameters -f werden noch detailliertere Informationen angezeigt.

9
Daniel K.

Es gibt auch atomicparsley für MPEG-4 -Dateien.

0
Memming

Sie können die Metadaten für ein Video festlegen

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

Und erhalte das Meta-Tag als:

ffmpeg -i destination.mp4

Verwenden Sie dies in der Befehlszeile.

0
Pankaj Chauhan