我正在尝试使用以下命令将两个视频合并在一起,都具有透明度
ffmpeg.exe -i person2.mov -vf“[输入]比例= iw/2:ih/2,淡入= out:300:30:alpha = 1,pad = 2 * iw:ih [左]; 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 [输出]“-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!
最佳答案
您没有为输出指定视频编解码器,因此它对.mov
文件使用默认的视频编解码器,即H.264(libx264
编码器)。但是,H.264不支持Alpha channel 。如果要在输出视频中保持透明,则需要指定一个支持Alpha channel 的输出视频编解码器,例如用于输入的 channel ,即QuickTime Animation RLE(qtrle
)。为此,请在输出文件名之前添加-c:v qtrle
选项。另一个支持alpha channel 并可以存储在.mov
文件中的编解码器是png
。
您可以使用ffmpeg
检查ffmpeg -encoders
支持的编码器列表。像ffmpeg -h encoder=qtrle
这样的命令将列出特定于该编码器的信息,包括受支持的像素格式。包含字符串argb
,rgba
,abgr
,bgra
,gbra
或yuva
的像素格式具有Alpha channel 。