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

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这样的命令将列出特定于该编码器的信息,包括受支持的像素格式。包含字符串argbrgbaabgrbgragbrayuva的像素格式具有Alpha channel 。

10-07 19:15
查看更多