【发布时间】:2020-05-24 20:30:25
【问题描述】:
有没有办法使用 Quicktime 或 MPEG2/MPEG4 从各种多媒体容器文件中提取日期/时间或时间戳?我正在寻找理想的命令行工具。我已经能够使用ffprobe(ffmpeg 套件的一部分)获取时间戳,但我还没有得到年、月和日期。相机有一个时钟,所以我很确定这个信息是可用的。
这个数据文件的历史是它首先在 miniDV 上拍摄,然后使用 QuicktimePlayer 通过 Firewire 800 传输到 Mac 来录制视频。有人告诉我 miniDV 格式是运动 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
%
我想要输出显示这张照片的拍摄年份、月份和日期。
【问题讨论】:
-
这些 miniDV 文件中可能不存在该信息。您可能有时间码,但默认情况下(至少在 miniDV 时)是记录“连续”时间码:从磁带开头的 0 开始。专业人士有时会将其更改为实时记录,但通常只记录时间。在时间码的单独字段中有“用户比特”,这些可以设置为记录日期。但是这些用户比特通常被用户以及摄取材料的程序所忽略。
-
然而,在某些情况下,Quicktime 元数据中有一个“记录日期”字段。
mediainfo显示在我的一些旧文件中。 -
您不想要帧或数据包表示时间戳,它们与记录的时间戳无关,它只是一个字符串元数据字段。在任何情况下,fps 过滤器都会破坏现有的时间戳并生成新的时间戳。如果日期元数据存在,可以通过
ffprobe file -show_entries format_tags获取 -
我认为如果您要使用 ffmpeg,@Gyan 的建议是您最好遵循的,因为他是 ffmpeg 开发团队的一员。我还建议您查看 mediainfo。
标签: ffmpeg quicktime multimedia mpeg