Encoding ffmpeg-筛选器\u复杂列表太长

Encoding ffmpeg-筛选器\u复杂列表太长,encoding,ffmpeg,Encoding,Ffmpeg,比如说,我想在视频中使用特殊字体、颜色等覆盖一个时钟到大约30分钟长的视频。我以命令结束: ffmpeg -y -i in.mp4 -filter_complex " [0:v]drawtext=fontfile=/var/www/sites/manage/elements/digital-7.ttf:text='00\:00':fontcolor=white@1.0:fontsize=26:x=100:y=65:enable='between(t,0,7)'[tmp]; [tmp]drawte

比如说,我想在视频中使用特殊字体、颜色等覆盖一个时钟到大约30分钟长的视频。我以命令结束:

ffmpeg -y -i in.mp4 -filter_complex "
[0:v]drawtext=fontfile=/var/www/sites/manage/elements/digital-7.ttf:text='00\:00':fontcolor=white@1.0:fontsize=26:x=100:y=65:enable='between(t,0,7)'[tmp];
[tmp]drawtext=fontfile=/var/www/sites/manage/elements/digital-7.ttf:text='00\:01':fontcolor=white@1.0:fontsize=26:x=100:y=65:enable='between(t,7,8)'[tmp]; 
[tmp]drawtext=fontfile=/var/www/sites/manage/elements/digital-7.ttf:text='00\:02':fontcolor=white@1.0:fontsize=26:x=100:y=65:enable='between(t,8,9)'[tmp]; 
[tmp]drawtext=fontfile=/var/www/sites/manage/elements/digital-7.ttf:text='00\:03':fontcolor=white@1.0:fontsize=26:x=100:y=65:enable='between(t,9,10)'[tmp]; 
[tmp]drawtext=fontfile=/var/www/sites/manage/elements/digital-7.ttf:text='00\:04':fontcolor=white@1.0:fontsize=26:x=100:y=65:enable='between(t,10,11)'[tmp];
......." 
-map "[tmp]" -map 0:a -acodec copy -c:v h264 out.mp4
这个时钟并不是我拥有的唯一覆盖,所以最终我得到了216kB长的命令,但由于参数列表太长,我甚至无法在bash中运行这个命令

我只想对视频重新编码一次。我还有别的办法吗

谢谢

使用

ffmpeg -y -i in.mp4
-vf "drawtext=fontfile=/var/www/sites/manage/elements/digital-7.ttf: \
text='%{eif\:trunc((t-7)/60)\:d\:2}\:%{eif\:trunc(mod(t-7\,60))\:d\:2}': \
fontcolor=white@1.0:fontsize=26:x=100:y=65:enable='gte(t,7)'" \
-map "[tmp]" -map 0:a -acodec copy -c:v h264 out.mp4
其中
t
是过滤帧的时间戳,单位为秒。毫秒

7
是TC显示器的理想
开始时间


2
是输出字段宽度,即零填充。

在时钟下面有一个纯色边框可以吗?可以,我可以。你在想什么?在drawtext中使用时间码生成器。如果您对完整的HH:MM:SS.ffff读数满意,则不需要一个框,否则使用颜色框,在顶部绘制TC,将其裁剪为仅显示MM:SS,并将结果覆盖在基础视频上。您还可以分割基本视频-在一个输入上覆盖完整的TC,裁剪它并在第二个输入上覆盖它。但这可能会导致框架下降和错位。我们需要测试和检查。太好了,谢谢!我认为这可以做的工作,但我必须增加视频的FPS,因为现在它是14.98(15000/1001),似乎它不受时间码的支持。事实上,这就是我所做的,它工作得很好!