【发布时间】:2020-12-07 18:44:11
【问题描述】:
FFMPEG 几个月前推出了带有新过滤器“overlay_cuda”的新版本 FFMPEG,此过滤器与“覆盖”相同,但使用 Nvidia 卡进行应用。
我在 FFMPEG 网站上找到了该过滤器的描述,但没有关于如何使用它的示例。我发现的唯一示例来自开发者提交,但是将视频或照片放在另一个视频上。
我在普通覆盖过滤器之前使用宽度为两倍的 nullsrc 图像执行此操作,但现在我不知道如何使用此过滤器。
提交说明:https://patchwork.ffmpeg.org/project/ffmpeg/patch/20200318071955.2329-1-yyyaroslav@gmail.com/ ffmpeg 文档网页:https://ffmpeg.org/ffmpeg-filters.html#overlay_005fcuda-1
我希望你能帮助我。
更新:
我做了这个 FFmpeg 命令:
- 输入每个视频。
- 第一个视频在右侧创建填充,然后上传到卡的内存中。
- 使用覆盖 Cuda,另一个视频放在原始视频的右侧。
ffmpeg -y -loglevel info \
-i $video_1 \
-hwaccel cuda -hwaccel_output_format cuda -i $video_2 \
-filter_complex \
" \
[0:v]pad=w=2*iw:h=ih:x=0:y=0,hwupload_cuda[base];
[base][1:v]overlay_cuda=x=800:y=0" \
-an -c:v h264_nvenc overlay_test.mp4
但我收到此错误消息:
[overlay_cuda @ 0x55fdec4b2ec0] Can't overlay nv12 on yuv420p
[Parsed_overlay_cuda_2 @ 0x55fdec4b2d80] Failed to configure output pad on Parsed_overlay_cuda_2
Error reinitializing filters!
Failed to inject frame into filter network: Invalid argument
Error while processing the decoded data for stream #1:0
我对像素格式有疑问,希望您能帮助我。
更新 2:
我终于解决了像素格式问题,现在用填充制作叠加(为叠加视频添加空间)
这是成功的命令:
ffmpeg -y -loglevel info \
-i $video_1 \
-hwaccel cuda -hwaccel_output_format cuda -i $video_2 \
-filter_complex \
" \
[0:v]pad=w=2*iw:h=ih:x=0:y=0,hwupload_cuda,scale_npp=format=nv12[base];
[base][1:v]overlay_cuda=x=800:y=0" \
-an -c:v h264_nvenc overlay_test.mp4
现在我想将x=800 更改为x=iw+1 之类的变量,但这个过滤器似乎不支持。有没有办法设置全局变量?
【问题讨论】:
标签: video ffmpeg nvidia video-processing