FFMPEG - 合并带透明度的视频

6
我正在尝试合并两个具有透明度的视频,使用命令

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!

请展示完整的ffmpeg控制台输出。你所说的“当我尝试将这个视频(Output_people.mov)与另一个视频合并时,它没有相同的透明度”是什么意思? - llogan
我用来将这两个视频合并成Output_people.mov的命令就是我放在上面的那个,输出结果可以在https://www.dropbox.com/s/gpid1pptfio31gd/ffmpeg-20130701-193206.log中找到。 - fernandonos
我以为你的意思是你要将 Output_people.mov 与其他视频合并。 - llogan
哦,我明白了...对不起,是我的错...但我正在使用我上面放的同样的命令,并将Output_people.mov作为第一个视频传递。 - fernandonos
1
从我所看到的情况来看,问题就出在那里,因此需要控制台输出。 - llogan
显示剩余2条评论
1个回答

8
您没有为输出指定视频编解码器,因此它正在使用默认的视频编解码器.mov文件,即H.264 (libx264编码器)。然而,H.264不支持Alpha通道。如果您想在输出视频中实现透明度,则需要指定一个支持Alpha通道的输出视频编解码器,例如用于输入的编解码器,即QuickTime动画RLE(qtrle)。要做到这一点,请在输出文件名之前添加选项-c:v qtrle。另一个支持Alpha通道并且可以存储在.mov文件中的编解码器是png
您可以使用ffmpeg -encoders检查您的ffmpeg支持的编解码器列表。像ffmpeg -h encoder=qtrle这样的命令将列出特定于该编解码器的信息,包括支持的像素格式。包含字符串argbrgbaabgrbgragbrayuva的像素格式具有Alpha通道。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接