FFMPEG - 将视频与透明度合并

时间:2013-07-02 00:31:30

标签: video merge ffmpeg transparency alpha

我正在尝试将两个视频合并在一起,两个视频都具有透明度,使用命令

ffmpeg.exe -i person2.mov -vf“[in] scale = iw / 2:ih / 2,fade = out:300:30:alpha = 1,pad = 2 * iw:ih [ left]; movie = person2.mov,scale = iw / 2:ih / 2,fade = out:300:30:alpha = 1 [right]; [left] [right] overlay = main_w / 3:0,fade = out:300:30:alpha = 1 [out]“-b:v 768k Output_people.mov

通过这样做,我得到以下输出:

http://i263.photobucket.com/albums/ii122/Fernando461/Untitled.png

正如您所看到的,可以将两个视频放在一起。但是,当我尝试将此视频(Output_people.mov)与另一个视频合并时,它没有相同的透明度。是否有可能保持结果的透明度?

修改1:

这是我得到的输出:https://www.dropbox.com/s/gpid1pptfio31gd/ffmpeg-20130701-193206.log

并且“它没有相同的透明度”我的意思是背景是黑色而不是透明,所以如果我把一个视频放在彼此的顶部,后面的那个视频被黑色部分覆盖前面那个人。

编辑2: 将-vcodec qtrle添加到代码中。谢谢mark4o!

1 个答案:

答案 0 :(得分:7)

您没有为输出指定视频编解码器,因此它使用的是.mov文件的默认视频编解码器,即H.264(libx264编码器)。但H.264不支持alpha通道。如果您希望输出视频具有透明度,则需要指定支持Alpha通道的输出视频编解码器,例如用于输入的通道,即QuickTime Animation RLE(qtrle)。为此,请在输出文件名前添加选项-c:v qtrle。另一个支持Alpha通道且可以存储在.mov文件中的编解码器是png

您可以使用ffmpeg查看ffmpeg -encoders支持的编码器列表。像ffmpeg -h encoder=qtrle这样的命令将列出特定于该编码器的信息,包括支持的像素格式。包含字符串argbrgbaabgrbgragbrayuva的像素格式具有Alpha通道。