我遇到了一个看起来很简单的问题,但实际上比我预想的要困难得多。问题如下:
我有一个相当大的图像序列,由带编号的框架组成(从Maya输出),这些图像目前以Targa (.tga)格式存在,但如果需要,我可以将它们转换为PNG或其他任意格式。重要的是,它们拥有alpha通道。
我想要编程将它们转换成视频剪辑。格式并不重要,但其必须是无损的,并且具有alpha通道。在Quicktime容器中的未压缩视频可能是最理想的。
我的初始想法是使用FFmpeg,但经过一整天的浪费之后,似乎它根本不支持alpha通道。要么我忽略了什么,要么是底层的libavcodec根本就不会实现它。
那么,正确的方法是什么呢?像FFmpeg这样的命令行工具很好,但任何在Windows上运行且可从脚本中调用的解决方案都可以。
注意:在您的视频中具有alpha通道实际上并不常见,但如果您想将其合成到另一个视频剪辑或静止图像之上,则非常有用。就我所知,未压缩视频、Quicktime动画编解码器和Sorenson Video 3编解码器都支持透明度,我听说H.264也支持。我们真正要讨论的仅是32位颜色深度,这是相当广泛支持的;Quicktime .mov文件和Windows .avi文件都可以处理它,可能还有更多。
Quicktime Pro非常乐意将图像序列转换为32位.mov文件。点击导出,将颜色深度更改为“数百万种颜色+”,选择Animation编解码器,将质量调高到100,然后就可以得到无损压缩的视频,带有Alpha通道,并且由于该编解码器从Quicktime 1.0版本开始就已经存在,所以几乎在任何地方都可以回放。问题是,Quicktime Pro没有任何命令行界面(至少在Windows上)。ffmpeg支持使用Quicktime Animation编解码器(它称之为qtrle)进行编码,但它只支持24位的位深度。
问题不在于找到支持alpha通道的视频格式。Quicktime Animation会很理想,但即使是无压缩视频也应该可以。问题在于找到支持它的工具。