Bug#1050219: Quicktime timestamp metadata not preserved correctly
Package: ffmpeg
Version: 7:5.1.3-1
Severity: normal
While developing my own software that parses file metadata (via exiftool in
my case), I noticed that ffmpeg does not preserve timestamps in metadata,
turning them into '0000:00:00 00:00:00'. Demonstrating with a video from my
Olympus OM-D E-M5 II:
michael@joyola:/tmp/ffbug$ exiftool 1110-mvi.mov|grep Date
File Modification Date/Time : 2023:08:22 15:40:21+08:00
File Access Date/Time : 2023:08:22 15:40:38+08:00
File Inode Change Date/Time : 2023:08:22 15:40:21+08:00
Create Date : 2013:06:14 12:13:13
Modify Date : 2013:06:14 12:13:13
Track Create Date : 2013:06:14 12:13:13
Track Modify Date : 2013:06:14 12:13:13
Media Create Date : 2013:06:14 12:13:13
Media Modify Date : 2013:06:14 12:13:13
michael@joyola:/tmp/ffbug$ ffprobe 1110-mvi.mov 2>&1|grep time
creation_time : 2013-06-14T12:13:13.000000Z
creation_time : 2013-06-14T12:13:13.000000Z
creation_time : 2013-06-14T12:13:13.000000Z
michael@joyola:/tmp/ffbug$ ffmpeg -i 1110-mvi.mov -c:v copy output.mov
ffmpeg version 5.1.3-1 Copyright (c) 2000-2022 the FFmpeg developers
built with gcc 12 (Debian 12.2.0-14)
configuration: --prefix=/usr --extra-version=1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libglslang --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librabbitmq --enable-librist --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzimg --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --disable-sndio --enable-libjxl --enable-pocketsphinx --enable-librsvg --enable-libmfx --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-libplacebo --enable-librav1e --enable-shared
libavutil 57. 28.100 / 57. 28.100
libavcodec 59. 37.100 / 59. 37.100
libavformat 59. 27.100 / 59. 27.100
libavdevice 59. 7.100 / 59. 7.100
libavfilter 8. 44.100 / 8. 44.100
libswscale 6. 7.100 / 6. 7.100
libswresample 4. 7.100 / 4. 7.100
libpostproc 56. 6.100 / 56. 6.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '1110-mvi.mov':
Metadata:
major_brand : qt
minor_version : 537331968
compatible_brands: qt CAEP
creation_time : 2013-06-14T12:13:13.000000Z
Duration: 00:00:02.93, start: 0.000000, bitrate: 26595 kb/s
Stream #0:0[0x1](eng): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuvj420p(pc, smpte170m/bt709/bt709, progressive), 1280x720, 25884 kb/s, 30 fps, 30 tbr, 3k tbn (default)
Metadata:
creation_time : 2013-06-14T12:13:13.000000Z
vendor_id : [0][0][0][0]
Stream #0:1[0x2](eng): Audio: pcm_s16le (sowt / 0x74776F73), 44100 Hz, mono, s16, 705 kb/s (default)
Metadata:
creation_time : 2013-06-14T12:13:13.000000Z
vendor_id : [0][0][0][0]
Stream mapping:
Stream #0:0 -> #0:0 (copy)
Stream #0:1 -> #0:1 (pcm_s16le (native) -> aac (native))
Press [q] to stop, [?] for help
Output #0, mov, to 'output.mov':
Metadata:
major_brand : qt
minor_version : 537331968
compatible_brands: qt CAEP
encoder : Lavf59.27.100
Stream #0:0(eng): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuvj420p(pc, smpte170m/bt709/bt709, progressive), 1280x720, q=2-31, 25884 kb/s, 30 fps, 30 tbr, 12k tbn (default)
Metadata:
creation_time : 2013-06-14T12:13:13.000000Z
vendor_id : [0][0][0][0]
Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 69 kb/s (default)
Metadata:
creation_time : 2013-06-14T12:13:13.000000Z
vendor_id : [0][0][0][0]
encoder : Lavc59.37.100 aac
frame= 88 fps=0.0 q=-1.0 Lsize= 9297kB time=00:00:02.94 bitrate=25827.5kbits/s speed=35.4x
video:9268kB audio:25kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.041738%
[aac @ 0x5619bb344480] Qavg: 623.405
michael@joyola:/tmp/ffbug$ ffprobe output.mov 2>&1|grep time
michael@joyola:/tmp/ffbug$ exiftool output.mov |grep Date
File Modification Date/Time : 2023:08:22 15:46:39+08:00
File Access Date/Time : 2023:08:22 15:56:16+08:00
File Inode Change Date/Time : 2023:08:22 15:46:39+08:00
Create Date : 0000:00:00 00:00:00
Modify Date : 0000:00:00 00:00:00
Track Create Date : 0000:00:00 00:00:00
Track Modify Date : 0000:00:00 00:00:00
Media Create Date : 0000:00:00 00:00:00
Media Modify Date : 0000:00:00 00:00:00
Notice that ffmpeg itself reports the correct timestamps for output.mov in
its output, however the creation_time values are absent from the file. The
same issue occurs when outputting to an MP4 container. With MKV or AVI
container, timestamp metadata is of course missing altogether. Including
'-movflags use_metadata_tags' also doesn't help either.
It'd be good to avoid having to muck about with exiftool to push missing
metadata back into output files.
-- System Information:
Debian Release: 12.1
APT prefers stable-updates
APT policy: (500, 'stable-updates'), (500, 'stable-security'), (500, 'oldstable-updates'), (500, 'oldstable-security'), (500, 'stable'), (500, 'oldstable'), (490, 'testing'), (400, 'unstable'), (1, 'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386
Kernel: Linux 6.1.0-9-amd64 (SMP w/4 CPU threads; PREEMPT)
Kernel taint flags: TAINT_CPU_OUT_OF_SPEC, TAINT_WARN
Locale: LANG=en_AU.UTF-8, LC_CTYPE=en_AU.UTF-8 (charmap=UTF-8), LANGUAGE=en_AU:en
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled
Versions of packages ffmpeg depends on:
ii libavcodec59 7:5.1.3-1
ii libavdevice59 7:5.1.3-1
ii libavfilter8 7:5.1.3-1
ii libavformat59 7:5.1.3-1
ii libavutil57 7:5.1.3-1
ii libc6 2.36-9+deb12u1
ii libpostproc56 7:5.1.3-1
ii libsdl2-2.0-0 2.26.5+dfsg-1
ii libswresample4 7:5.1.3-1
ii libswscale6 7:5.1.3-1
ffmpeg recommends no packages.
Versions of packages ffmpeg suggests:
pn ffmpeg-doc <none>
-- debconf-show failed
-MD
--
-----------------------------------------------------------------------------
Michael Deegan Hugaholic https://www.deegan.id.au/
------------------------ Jung, zr jbeel? ----------------------------------
Reply to: