为 YouTube 创建带有音频和静态图像的视频

为 YouTube 创建带有音频和静态图像的视频

我正在运行以下命令:

ffmpeg -i audio.mp3 -ar 44100 -f image2 -i logo.jpg -r 15 -b 1800 -s 640x480 foo.mov

它成功输出了包含我录制的音频和图像的视频。

当我尝试将其上传到 YouTube 时,无论我尝试哪种格式,它都无法处理:.mov、.avi、.flv、.mp4

上面的设置中是否遗漏了某些可以生成 Youtube 可以接受的格式的设置?我尝试查看 ffmpeg 文档,但还是无法理解。

我做了一个实验,将一段 2 秒的视频与一段 30 秒的 mp3 放在一起。当我上传到 YouTube 时,生成的视频只有 2 秒长。因此,YouTube 可能只根据视频轨道来确定长度,而由于图片只有一帧长或其他原因,这也许会让它变得糟糕。

答案1

以下是有效的方法:

ffmpeg -i audio.mp3 -f image2 -loop 1 -i logo.jpg 
-r 15 -s 640x480 \
-c:v libx264 -crf 18 -tune stillimage -preset medium \
-shortest foo.mov

具体来说,该loop选项会将图像复制为帧。它还需要一个shortest选项来阻止文件不断增长(这样它会将其截断为最短流的长度 - 此处为音频文件)。

r选项可更改帧速率并crf 18设置质量(此处使用较高的值可降低视频质量)。有关更多详细信息,请参阅此处:FFmpeg:终极视频和音频处理工具

答案2

来自另一个论坛的一段对我有用的代码:

ffmpeg -loop 1 -r ntsc -i image.jpg -i song.mp3 -c:a copy -c:v libx264 -preset fast -threads 0 -shortest output.mkv 

答案3

我采用了 Pavel 的代码,它也适用于我,并通过修剪不必要的选项来缩短它:

ffmpeg -loop 1 -shortest -i <audio file> -i <image file> <output video file>

这是一种通用形式,可以使用任何图像和音频文件作为输入并生成视频文件作为输出。

也就是说,由于您的视频流将由无限重复的单个图片组成,因此您可以使用 设置较低的帧速率(即一秒钟内出现的图像数量)-r。请注意,并非所有输出容器都允许低帧速率。一个允许低帧速率的是avi,因此您可以这样做:

ffmpeg -loop 1 -shortest -r 0.1 -i <audio file> -i <image file> output.avi

这将创建一个帧率为 0.1(即每 10 秒一个图像)的视频文件,而不是默认的 25。这会影响文件大小,但不会影响视频质量。最后,您可以使用设置音频比特率以获得更好的音频质量-ab。这是我实际用于为 YouTube 制作此类视频的命令:

ffmpeg -loop 1 -shortest -r 0.1 -i <audio file> -i <image file> -ab 128k output.avi

答案4

为了添加一些简短的内容,这对我有用:

ffmpeg -i audio.wav -loop 1 -i image.png -shortest foo.flv

选项的顺序很重要。

相关内容