有没有一种方法可以从Quicktime或MPEG2MPEG4的各种多媒体容器文件中提取日期时间或时间戳?我正在寻找一个理想的命令行工具。我已经能够使用下面的工具获得时间戳 ffprobe
的一部分。ffmpeg
套装,但我还没有得到年、月、日。相机有一个时钟,所以我很确定这些信息是可用的。
这个数据文件的历史是,它最初是在miniDV上拍摄的,并通过Firewire 800使用QuicktimePlayer记录视频转移到Mac上。据悉,miniDV的格式是motion jpeg。该 file
命令报告说,该文件是 ISO Media, Apple QuickTime movie, Apple QuickTime (.MOV/QT)
.
% ffprobe -f lavfi -i "movie=filename.mov,fps=fps=25[out0]" -show_frames -show_streams -show_entries frame=pkt_pts_time -of csv=p=0 2>&1 | head -30
ffprobe version 4.2.2 Copyright (c) 2007-2019 the FFmpeg developers
built with Apple clang version 11.0.0 (clang-1100.0.33.17)
configuration: --prefix=/opt/local --enable-swscale --enable-avfilter --enable-avresample --enable-libmp3lame --enable-libvorbis --enable-libopus --enable-librsvg --enable-libtheora --enable-libopenjpeg --enable-libmodplug --enable-libvpx --enable-libsoxr --enable-libspeex --enable-libass --enable-libbluray --enable-lzma --enable-gnutls --enable-fontconfig --enable-libfreetype --enable-libfribidi --disable-libjack --disable-libopencore-amrnb --disable-libopencore-amrwb --disable-libxcb --disable-libxcb-shm --disable-libxcb-xfixes --disable-indev=jack --enable-opencl --disable-outdev=xv --enable-audiotoolbox --enable-videotoolbox --enable-sdl2 --disable-securetransport --mandir=/opt/local/share/man --enable-shared --enable-pthreads --cc=/usr/bin/clang --arch=x86_64 --enable-x86asm --enable-libx265 --enable-gpl --enable-postproc --enable-libx264 --enable-libxvid --enable-nonfree --enable-libfdk-aac
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, lavfi, from 'movie=/Volumes/SanDiskSSD/Movies/Italy22.mov,fps=fps=25[out0]':
Duration: N/A, start: 0.000000, bitrate: N/A
Stream #0:0: Video: rawvideo (I420 / 0x30323449), yuv420p, 640x480 [SAR 1:1 DAR 4:3], 25 tbr, 25 tbn, 25 tbc
0.000000
0.040000
0.080000
0.120000
0.160000
0.200000
0.240000
0.280000
0.320000
0.360000
0.400000
0.440000
0.480000
0.520000
0.560000
%
我希望输出显示年、月、日,这是拍摄的。
既然你能够得到时间戳,那么你可以使用类似这样的工具。
ffmpeg -y -i name.mp4 -vf "drawtext=fontsize=36:fontcolor=blue:text='%{pts\:gmtime\:1675556887\:%A, %d, %B %Y %I\\\:%M\\\:%S %p}'" -preset ultrafast -f mp4 output.mp4
记得把这部分改一下 gmtime\:1575556887
到已经得到的时间戳
在一些旧的DV Quicktime文件,我有。媒体信息 在它的 "General "部分显示了 "Recorded date"。
General Complete name : /path/to/some-dv.mov Format : QuickTime Format/Info : Original Apple specifications Commercial name : DVCAM File size : 125 MiB Duration : 34 s 520 ms Overall bit rate : 30.4 Mb/s Recorded date : 2008-03-16 16:50:46.000 Encoded date : UTC 2010-03-31 16:20:48 Tagged date : UTC 2010-03-31 16:21:25 Writing library : Apple QuickTime Media/UUID : E70E5054-029E-42DE-A25F-7739BCBD7D0A
ffprobeffmpeg似乎只显示EncodedTagged日期,而不显示 "录制日期".
注意,即使是 mediainfo
只有在最近的版本中才会显示这个字段。Debian 9上的18.12-2版本会显示这个字段,但Ubuntu 16.04上的0.7.82-1版本不会。