我正在尝试将两个视频合并在一起,两个视频都具有透明度,使用命令
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!
答案 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
这样的命令将列出特定于该编码器的信息,包括支持的像素格式。包含字符串argb
,rgba
,abgr
,bgra
,gbra
或yuva
的像素格式具有Alpha通道。