FFmpeg 用于根据参考日期标记时间视频
FFmpeg for marking time video based on a reference date
我正在尝试使用 drawtext
过滤器在视频中标记时间戳。
FFmpeg 很容易根据 localtime
、gmtime
甚至 PTS
标记时间戳。但是,我想为时间戳分配一个参考时间(开始时间),以表示视频被录制(未编码)的时间。
阅读文档,我发现选项 basetime
可用于此目的。但是,这似乎不起作用,或者我遗漏了一些东西。
我使用的命令行是:
ffmpeg -y -i input.mp4 -filter_complex drawtext="fontfile=/tmp/UbuntuMono-B.ttf: fontsize=36: fontcolor=yellow: box=1: boxcolor=black@0.4: text='Wall Clock Time\: %{gmtime\:%Y-%m-%d %T}': basetime=1456007118" output.mp4
通过使用 basetime=1456007118
,预计开始时间设置为“02/20/2016 20:25:18”,因为 1456007118 是该时间和日期的 UTC 时间:
date -d '02/20/2016 20:25:18' +"%s" # format MM/DD/AAAA hh:mm:ss
1456007118
但是,FFmpeg 没有发出错误,并且视频被标记为当前 GMT,忽略了 basetime
选项。
有什么提示吗?
谢谢。
关于 FFmpeg 版本和输出的完整信息是:
ffmpeg -y -i /home/denio/Videos/Interstellar_2014_Trailer_4_5.1-1080p-HDTN.mp4 -filter_complex drawtext="fontfile=/tmp/UbuntuMono-B.ttf: fontsize=36: fontcolor=yellow: box=1: boxcolor=black@0.4: text='Wall Clock Time\: %{gmtime\:%Y-%m-%d %T}': basetime=1470226363" /tmp/x.mp4
ffmpeg version 3.1.1 Copyright (c) 2000-2016 the FFmpeg developers
built with gcc 5.3.1 (Ubuntu 5.3.1-14ubuntu2.1) 20160413
configuration: --enable-libxavs --enable-bzlib --enable-libfaac --enable-libfreetype --enable-libfontconfig --enable-libmp3lame --enable-libschroedinger --enable-libspeex --enable-libvorbis --enable-libx264 --enable-libx265 --enable-libxvid --enable-zlib --enable-x11grab --enable-static --enable-pthreads --enable-gpl --enable-nonfree --enable-version3 --disable-ffserver --enable-libgsm --enable-librtmp --enable-libvpx --enable-libschroedinger --enable-libopencore-amrnb --enable-libopenjpeg
libavutil 55. 28.100 / 55. 28.100
libavcodec 57. 48.101 / 57. 48.101
libavformat 57. 41.100 / 57. 41.100
libavdevice 57. 0.101 / 57. 0.101
libavfilter 6. 47.100 / 6. 47.100
libswscale 4. 1.100 / 4. 1.100
libswresample 2. 1.100 / 2. 1.100
libpostproc 54. 0.100 / 54. 0.100
...
...
我在源代码中看到了 basetime
,但在 Web 文档中没有看到,所以不确定它应该如何工作。
您可以改为使用 pts
函数。
ffmpeg -y -i input.mp4 -vf "drawtext=fontfile=/tmp/UbuntuMono-B.ttf:
fontsize=36:fontcolor=yellow:
box=1:boxcolor=black@0.4:
text='Wall Clock Time\: %{pts\:gmtime\:1456007118}'"
output.mp4
您可能需要在绘图文本之前重置 PTS (setpts=PTS-STARTPTS
)。
我正在尝试使用 drawtext
过滤器在视频中标记时间戳。
FFmpeg 很容易根据 localtime
、gmtime
甚至 PTS
标记时间戳。但是,我想为时间戳分配一个参考时间(开始时间),以表示视频被录制(未编码)的时间。
阅读文档,我发现选项 basetime
可用于此目的。但是,这似乎不起作用,或者我遗漏了一些东西。
我使用的命令行是:
ffmpeg -y -i input.mp4 -filter_complex drawtext="fontfile=/tmp/UbuntuMono-B.ttf: fontsize=36: fontcolor=yellow: box=1: boxcolor=black@0.4: text='Wall Clock Time\: %{gmtime\:%Y-%m-%d %T}': basetime=1456007118" output.mp4
通过使用 basetime=1456007118
,预计开始时间设置为“02/20/2016 20:25:18”,因为 1456007118 是该时间和日期的 UTC 时间:
date -d '02/20/2016 20:25:18' +"%s" # format MM/DD/AAAA hh:mm:ss
1456007118
但是,FFmpeg 没有发出错误,并且视频被标记为当前 GMT,忽略了 basetime
选项。
有什么提示吗? 谢谢。
关于 FFmpeg 版本和输出的完整信息是:
ffmpeg -y -i /home/denio/Videos/Interstellar_2014_Trailer_4_5.1-1080p-HDTN.mp4 -filter_complex drawtext="fontfile=/tmp/UbuntuMono-B.ttf: fontsize=36: fontcolor=yellow: box=1: boxcolor=black@0.4: text='Wall Clock Time\: %{gmtime\:%Y-%m-%d %T}': basetime=1470226363" /tmp/x.mp4
ffmpeg version 3.1.1 Copyright (c) 2000-2016 the FFmpeg developers
built with gcc 5.3.1 (Ubuntu 5.3.1-14ubuntu2.1) 20160413
configuration: --enable-libxavs --enable-bzlib --enable-libfaac --enable-libfreetype --enable-libfontconfig --enable-libmp3lame --enable-libschroedinger --enable-libspeex --enable-libvorbis --enable-libx264 --enable-libx265 --enable-libxvid --enable-zlib --enable-x11grab --enable-static --enable-pthreads --enable-gpl --enable-nonfree --enable-version3 --disable-ffserver --enable-libgsm --enable-librtmp --enable-libvpx --enable-libschroedinger --enable-libopencore-amrnb --enable-libopenjpeg
libavutil 55. 28.100 / 55. 28.100
libavcodec 57. 48.101 / 57. 48.101
libavformat 57. 41.100 / 57. 41.100
libavdevice 57. 0.101 / 57. 0.101
libavfilter 6. 47.100 / 6. 47.100
libswscale 4. 1.100 / 4. 1.100
libswresample 2. 1.100 / 2. 1.100
libpostproc 54. 0.100 / 54. 0.100
...
...
我在源代码中看到了 basetime
,但在 Web 文档中没有看到,所以不确定它应该如何工作。
您可以改为使用 pts
函数。
ffmpeg -y -i input.mp4 -vf "drawtext=fontfile=/tmp/UbuntuMono-B.ttf:
fontsize=36:fontcolor=yellow:
box=1:boxcolor=black@0.4:
text='Wall Clock Time\: %{pts\:gmtime\:1456007118}'"
output.mp4
您可能需要在绘图文本之前重置 PTS (setpts=PTS-STARTPTS
)。