将 jpeg 编码为 h264 视频

jef*_*ten 3 ffmpeg h.264

我正在使用以下命令将 AVI 编码为 H264 视频以用于 HTML5 视频标签:

ffmpeg -y -i "test.avi" -vcodec libx264 -vpre slow -vpre baseline -g 30 "out.mp4"
Run Code Online (Sandbox Code Playgroud)

这工作得很好。但我也想从单个静止图像创建一个占位符视频(长篇故事),所以我这样做:

ffmpeg -y -i "test.jpg" -vcodec libx264 -vpre slow -vpre baseline -g 30 "out.mp4"
Run Code Online (Sandbox Code Playgroud)

这不起作用。是什么赋予了?

编辑:在尝试 LordNeckbeards 回答后,这是我的完整输出:http ://pastebin.com/axhKpkLx

llo*_*gan 7

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
Run Code Online (Sandbox Code Playgroud)

同样的事情,但有音频。输出持续时间将匹配输入音频持续时间:

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
Run Code Online (Sandbox Code Playgroud)
  • -loop 1 循环图像输入。

  • -framerate设置图像输入的帧率。默认为 25。一些玩家有低帧率的问题,所以建议值超过 6 左右。

  • -i input.jpg 输入。

  • -c:v libx264 H.264 视频编码器。

  • -presetx264 编码预设。使用最慢的一种。

  • -tune x264 调整进行各种调整以适应特定情况。

  • -crf为了质量。较低的值导致较高的质量。使用仍能为您提供可接受质量的最高值。默认值为 23。

  • -vf format=yuv420p输出像素格式yuv420p. 这确保输出使用广泛接受的色度子采样方案。从图像编码时推荐用于 libx264。

  • -c:a aacAAC 音频编码器。如果您的输入已经是 AAC 或 M4A,则使用 -c:a copy 来流式复制而不是重新编码。

  • -t 10(在第一个示例中)产生 10 秒的输出。需要,因为图像无限循环。

  • -shortest(在第二个示例中)使输出的持续时间与最短的输入相同。在这种情况下,它是音频,因为图像无限循环。

  • -movflags +faststart编码完成后将 moov atom 重新定位到文件的开头。允许在渐进式下载播放中更快地开始播放;否则必须在播放前下载整个视频。

  • -profile:v main (可选)某些设备无法处理高配置文件。

有关更多信息,请参阅FFmpeg Wiki:H.264