我正在尝试将一系列 png 转换为 mp4 视频。我正在使用 ffmpeg,并希望使用 H.264 编解码器对视频进行编码。使用命令
ffmpeg -y -r 30 -b 1800k -i _tmp%04d.png -vcodec libx264 out.mp4
Run Code Online (Sandbox Code Playgroud)
我收到以下警告消息
Incompatible pixel format 'bgra' for codec 'libx264', auto-selecting format 'yuv420p'
Run Code Online (Sandbox Code Playgroud)
我的理解是 png 中有一个 alpha 通道,x264 编码器无法处理。有没有办法解决这个问题?例如,有没有办法让编码器忽略 alpha 通道(我的 png 实际上没有任何透明元素)?
我知道我可以预先批量转换 png 以去除 alpha 通道,但是图像序列是由另一个程序生成的,并且每次制作视频时都必须预处理图像将不是最佳选择。
编辑:使用命令从每一帧中剥离 alpha 通道后
convert in.png -background white -flatten +matte out.png
Run Code Online (Sandbox Code Playgroud)
ffmpeg 给出警告信息
Incompatible pixel format 'pal8' for codec 'libx264', auto-selecting format 'yuv420p'
Run Code Online (Sandbox Code Playgroud)
所以仍然没有骰子。
我正在考虑使用AVISynth和框架服务来解决这个问题,但看起来 ffmpeg 现在对 AVISynth 具有本机支持。这意味着您可以使用 AVISynth 脚本作为输入。
因此,使用脚本sequence.avs,您可以执行以下操作:
ffmpeg -i sequence.avs -vcodec libx264 out.mp4
其中sequence.avs是:
ImageSource("_tmp%04d.png", start=0, end=1, fps=30).ConvertToYV12()
注意:可选的开始和结束参数反映了我使用两个图像进行了测试,_tmp0000.png
和_tmp0001.png
。
归档时间: |
|
查看次数: |
2699 次 |
最近记录: |