我使用以下命令将AVI编码为H264视频,以便在HTML5视频标记中使用:
ffmpeg -y -i "test.avi" -vcodec libx264 -vpre slow -vpre baseline -g 30 "out.mp4"
这很好用。但我也想从一张静态图像中创建一个占位符视频(长篇故事),所以我这样做:
ffmpeg -y -i "test.jpg" -vcodec libx264 -vpre slow -vpre baseline -g 30 "out.mp4"
这不起作用。是什么给了什么?
编辑:在尝试了LordNeckbeards的回答之后,这是我的完整输出:http://pastebin.com/axhKpkLx答案 0 :(得分:4)
10秒输出的示例:
ffmpeg -loop 1 -framerate 24 -i input.jpg -c:v libx264 -preset slow -tune stillimage -crf 24 -vf format=yuv420p -t 10 -movflags +faststart output.mp4
同样的事情,但有音频。输出持续时间将与输入音频持续时间匹配:
ffmpeg -loop 1 -framerate 24 -i input.jpg -i audio.mp3 -c:v libx264 -preset slow -tune stillimage -crf 24 -vf format=yuv420p -c:a aac -shortest -movflags +faststart output.mp4
-loop 1
循环输入图像。
-framerate
设置图像输入的帧速率。默认值为25.某些播放器存在帧速率较低的问题,因此建议使用超过6左右的值。
-i input.jpg
输入。
-c:v libx264
H.264视频编码器。
-preset
x264编码预设。使用最慢的一个。
-tune
x264 tuning进行各种调整以适应特定情况。
-crf
的质量。值越低,质量越高。使用仍然提供可接受质量的最高值。默认值为23。
-vf format=yuv420p
将像素格式输出为yuv420p
。这确保了输出使用广泛可接受的色度子采样方案。从图像编码时推荐用于libx264。
-c:a aac
AAC音频编码器。如果您的输入已经是AAC或M4A,那么请使用-c:副本代替stream copy而不是重新编码。
-t 10
(在第一个示例中)输出10秒。需要因为图像无限循环。
-shortest
(在第二个示例中)使输出与最短输入的持续时间相同。在这种情况下,它是音频,因为图像无限循环。
-movflags +faststart
在编码完成后将moov原子重定位到文件的开头。允许在渐进式下载播放中更快地开始播放;否则整个视频必须在播放前下载。
-profile:v main
(可选)某些设备无法处理高调。
有关详细信息,请参阅FFmpeg Wiki: H.264。