有没有办法使用 Quicktime 或 MPEG2/MPEG4 从各种多媒体容器文件中提取日期/时间或时间戳?我正在寻找理想的命令行工具。我已经能够使用ffprobe
获取时间戳,这是ffmpeg
套件的一部分,但我没有得到年、月和日期。相机有一个时钟,所以我很确定这些信息是可用的。
这个数据文件的历史是,它首先是在miniDV上拍摄的,并使用QuicktimePlayer通过Firewire 800传输到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文件中,mediainfo在其"常规"部分中显示"录制日期":
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
ffprobe/ffmpeg似乎只显示编码/标记日期,而不显示此"记录日期"。
请注意,即使mediainfo
也只在最新版本上显示此字段。版本 18.12-2 在 Debian 9 上显示它,但 Ubuntu 16.04 上的 0.7.82-1 版本没有。