我需要将图像和音频转换为 avi 视频文件,以便用于视频混合工具仅接受 avi 视频。
我如何能:
- 无需视频通道即可将 mp3 音频转换为 avi
- 将 jpg 图像转换为无声 avi
如果可能的话,不要进行不必要的重新编码。另外,我想我可以使用黑色背景图像作为输入,但如果可能的话,我宁愿完全不使用视频通道。
如果可能的话,我更喜欢简单的命令行解决方案。
答案1
获取真正的 ffmpeg。假的 ffmpeg存储库存在错误。此命令将下载最近的ffmpeg 的静态构建,因此不需要安装,也不会干扰存储库中的任何内容:
wget http://ffmpeg.gusari.org/static/32bit/ffmpeg.static.32bit.$(date +"%F").tar.gz tar xzvf ffmpeg.static.32bit.$(date +"%F").tar.gz
运行命令(注意
./
之前的ffmpeg
):无需视频通道即可将 mp3 音频转换为 avi
./ffmpeg -i input.mp3 -map 0:a -codec:a copy output.avi
将 jpg 图像转换为无声 avi
./ffmpeg -loop 1 -i input.jpg -codec:v copy -t 10 output.avi
笔记:
ffmpeg 将 MP3 文件中的专辑封面视为视频流。由于您不希望使用视频,因此使用
-map 0:a
告诉 ffmpeg 仅从输入复制音频流0
(第一个输入是0
,在您的情况下它也是唯一的输入)。否则,默认行为是从输入到输出的每个流类型都包含一个流(请参阅流选择了解更多信息)。或者,-vn
也可以使用。-codec:a copy
将开启流复制模式。这只是重新混合流,因此无需重新编码,也不会损失音频质量。-loop 1
将循环播放输入文件,并-t 10
创建 10 秒的输出;否则将永远循环。如果您想要一定数量的帧,请使用-vframes
。默认情况下,输入图像的帧速率为 25。如果要更改该值,请使用
-r
输入选项(之前-i
)。输出将继承输入帧速率。如果还想更改输出帧速率,请添加另一个-r
输出选项。ffmpeg 将删除或复制帧以达到所需的输出帧速率。AVI 是一种容器格式,可以使用多种音频和视频格式,因此如果某些东西声称只支持“AVI”,那么您应该要求提供更具体的信息。