来自单个 jpg 和 ogg 的 avconv 视频

plu*_*uke 2 ffmpeg ubuntu-12.04

我有一个很长的 ogg 声音文件,我想放在 youtube 上,我没有视频,所以想在 ogg 的持续时间内显示单个 jpg。我见过:

 avconv -i "sound file.ogg" -i cog.jpg out.avi
Run Code Online (Sandbox Code Playgroud)

我已将 jpg 调整为 640 x 480,但收到以下警告:

 Incompatible pixel format 'yuvj420p' for codec 'mpeg4', auto-selecting format 'yuv420p'

 Incompatible sample format 's16' for codec 'ac3', auto-selecting format 'flt'
 [ac3 @ 0x18ae340] invalid bit rate
Run Code Online (Sandbox Code Playgroud)

它轰炸了:

 Error while opening encoder for output stream #0:1 - maybe incorrect parameters such as bit_rate, rate, width or height
Run Code Online (Sandbox Code Playgroud)

关于我可以使用哪些参数来完成这项工作的任何想法?

slh*_*hck 6

没有看到完整的命令行输出,这归结为猜测,但似乎avconv在这里为音频选择了 AC3 编码器,这不是一个有用的默认值。

尝试指定要使用的编码器。对于 YouTube,建议使用 H.264 和 AAC,而不是 MPEG-4 Part 2 视频和 AC3 音频。

avconv -loop 1 -i cog.jpg -i "sound file.ogg" \
-c:v libx264 -tune stillimage -pix_fmt yuv420p \
-c:a libfaac -q:a 100 \
-shortest \
out.mp4
Run Code Online (Sandbox Code Playgroud)

您应该添加-loop 1强制循环图像的-shortest选项,以及在没有更多音频后停止编码的选项。相反的-shortest,你也可以指定-t 00:02:30到停止2分30秒,这比更准确后-shortest

以上应该适用于任何最新版本。请注意,avconv它不是来自 FFmpeg,而是来自 Libav fork,因此与ffmpeg命令完全无关。