![在将一个视频与另一个视频合并之前,如何测试其 alpha 通道?](https://linux22.com/image/1499713/%E5%9C%A8%E5%B0%86%E4%B8%80%E4%B8%AA%E8%A7%86%E9%A2%91%E4%B8%8E%E5%8F%A6%E4%B8%80%E4%B8%AA%E8%A7%86%E9%A2%91%E5%90%88%E5%B9%B6%E4%B9%8B%E5%89%8D%EF%BC%8C%E5%A6%82%E4%BD%95%E6%B5%8B%E8%AF%95%E5%85%B6%20alpha%20%E9%80%9A%E9%81%93%EF%BC%9F.png)
我正在处理带有 Alpha 通道的视频,并将其与给定位置的背景视频合并(例如,[100,100]). 您可以使用以下方法实现此目的:
ffmpeg -i BACK -i OVER -filter_complex [0][1]overlay=100:100 输出
但我想测试结果而不必生成整个视频然后播放它。
我试过了甚高频液晶但它唯一的覆盖选项是将图片(甚至不是动画)放在视频上。我不知道有没有着色器MPC一HC适合我的,但我还没有找到(而且即使是最简单的着色器,通常也需要 CPU)。同样的事情也发生在avisynth:播放很不流畅,甚至更糟(我相信是因为avisynth可处理并输出未压缩的视频)。
有没有办法可以即时观看生成的视频,并且能够跳转到其中的任意一点并使用合理数量的 CPU?
答案1
如果您生成了碎片化的 MP4,则可以在视频编码时观看视频。您只能查找到在加载文件时已经编码的点。因此,如果您想进一步查找,请稍后重新加载。
基本语法是
ffmpeg -i input -<encoding parameters> -movflags +frag_keyframe+separate_moof+omit_tfhd_offset+empty_moov out.mp4
答案2
我回答自己:
我发现了一个相关的问题,我想我可以管道ffmpeg到韓國。它可以部分工作(您可以观看合并的视频),但您无法搜索(并且它会阻塞 CPU)。
ffmpeg -i BACKGROUND -i OVERLAY -filter_complex [0][1]overlay=100:100 -f matroska - | ffplay -
但我没想到韓國可以使用,尽管韓國只接受一个-i
选项,修改ffmpeg过滤器,我遇到了movie
过滤器(几乎没用过ffmpeg因为你可以添加多个-i
选项),这提供了一种添加更多输入的方法。经过一些测试,我可以做我想做的事情:
ffplay -i BACKGROUND -vf "movie=OVERLAY[ov]; [in][ov]overlay=100:100"
(如果您使用的是 Windows,并且OVERLAY
名称带有空格,则可以用 将其括起来''
。)
使用此命令行,您可以搜索结果视频,而无需明显的额外 CPU(只需右键单击图像 - 您将转到文件中与宽度分数相对应的百分比)。
一个优点是,如果你在最终编码中需要一些额外的选项ffmpeg,它们可以被理解韓國。