【发布时间】:2017-12-13 11:42:21
【问题描述】:
我在组合过滤器时遇到问题。我正在尝试从相机拍摄视频,在其上应用计时器并在中心覆盖一个框。我可以使用 -vf drawtext 命令输入时间码(本地时间和点)没有问题:
ffmpeg -f video4linux2 -input_format mjpeg -s 1280x720 -i /dev/video0 \
-vf "drawtext=fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: \
text='%{localtime} %{pts\:hms}': fontcolor=white: fontsize=24: box=1: \
boxcolor=black@0.8: boxborderw=5: x=0: y=0" -vcodec libx264 \
-preset ultrafast -f mp4 -pix_fmt yuv420p -y output.mp4
然后我有一个使用drawbox绘制一个小盒子:
ffmpeg -f video4linux2 -input_format mjpeg -s 1280x720 -i /dev/video0 \
-filter_complex " drawbox=x=iw/2:y=0:w=10:h=ih:color=red@0.1": \
-vcodec libx264 -preset ultrafast -f mp4 -pix_fmt yuv420p -y output.mp4
我假设我可以将这些与 filter_complex 开关结合起来,并像这样使用分号将它们分开
ffmpeg -f video4linux2 -input_format mjpeg -s 1280x720 -i /dev/video0 -filter_complex "drawtext=fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='%{localtime} %{pts\:hms}': fontcolor=white: fontsize=24: box=1: boxcolor=black@0.8;drawbox=x=iw/2:y=0:w=10:h=ih:color=red@0.1": -vcodec libx264 -preset ultrafast -f mp4 -pix_fmt yuv420p -y output.mp4
但是在第二个过滤器上找不到输入流:
输入 #0, video4linux2,v4l2, from '/dev/video0':
时长:N/A,开始:10651.720690,比特率:N/A
流 #0:0:视频:mjpeg、yuvj422p(pc、bt470bg/unknown/unknown)、1280x720、-5 kb/s、30 fps、30 tbr、1000k tbn、1000k tbc
在过滤器 Parsed_drawbox_1 上找不到未标记输入 pad 0 的匹配流
我试图像这样将它定向到 [0]:
ffmpeg -f video4linux2 -input_format mjpeg -s 1280x720 -i /dev/video0 -filter_complex " \
drawtext=fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: \
text='%{localtime} %{pts\:hms}': fontcolor=white: fontsize=24: box=1: \
boxcolor=black@0.8;[0] drawbox=x=iw/2:y=0:w=10:h=ih:color=red@0.1": \
-vcodec libx264 -preset ultrafast -f mp4 -pix_fmt yuv420p -y output.mp4
但它无法将框放在输出端。
所以我尝试像这样拆分流
ffmpeg -f video4linux2 -input_format mjpeg -s 1280x720 -i /dev/video0 -filter_complex " \
split [main][tmp];\
[main] drawtext=fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: \
text='%{localtime} %{pts\:hms}': fontcolor=white: fontsize=24: box=1: boxcolor=black@0.8 [tmp];\
[main] drawbox=x=iw/2:y=0:w=10:h=ih:color=red@0.1 [tmp2]; [tmp][tmp2] overlay": \
-vcodec libx264 -preset ultrafast -f mp4 -pix_fmt yuv420p -y output.mp4
但是我的构建没有符合它的覆盖过滤器。在这一点上,我决定停下来问问我是否让这件事变得比应该做的更难。最终结果是我只想要一个计时器和一个在视频上绘制的框。有没有更好的方法或格式化技巧来做到这一点?
谢谢
【问题讨论】:
标签: ffmpeg