我需要哪些 ffmpeg 脚本才能获得与 HTML5 兼容的“人人享有的视频”?

我需要哪些 ffmpeg 脚本才能获得与 HTML5 兼容的“人人享有的视频”?

我应该在 ffmpeg/mencoder/some_other_CLI_app 中执行哪些命令才能获得所有正确格式的视频适合所有人的视频

即是否有一个微妙之处,可以防止出现机械教程,说

VIDEO=video.mp4
TYPE=$(ffmpeg --find-information-about-the-video ... )
ffmpeg ... > video.mov
ffmpeg ... > video.flv
ffmpeg ... > video.webm
ffmpeg ... > video.h.264
...

然后将 Video for Everybody 代码复制并粘贴到您的页面中?

我的目标是在我托管的个人网页中嵌入视频。首选带有 Flash 后备功能的 HTML5,因此最简单的方法似乎是 Video for Everybody。但该页面将最复杂的部分(将视频编码为各种不同格式)留给读者通过阅读来弄清楚一篇关于视频格式的长而完整的文章。当然这不是必要的。我可以为用户提供一系列命令,让他们盲目地将音频文件转换为多种不同的格式。希望 ffmpeg 专家可以对视频做同样的事情。

答案1

笔记:这个答案可能不是你需要的,自 2012 年首次发布以来,它已被大量编辑。现在是 2022 年;流媒体的工作方式与以前不同。本指南假设以给定的分辨率(例如 1080p)对一个视频文件进行简单的渐进式下载 - 没有自适应流媒体。如果您需要自适应流媒体(MPEG-DASH 或 HLS),请搜索其他指南。

要求

首先,确保下载最新ffmpeg版本(下载静态构建;不要调用apt-get install ffmpeg或类似)。

要生成大多数浏览器支持的视频,请始终检查最新的兼容性表. 最常支持的视频编解码器和容器是:

  • MP4 容器中的 H.264 或 H.265 视频
  • WebM/MKV 容器中的 VP9 或 AV1 视频

由于 H.264 和 VP9 编码速度更快,因此本回答仅关注它们。要使用其他编解码器(H.265、AV1),请检查FFmpeg Wiki 编码指南

WebM(VP9/Vorbis)

遵循FFmpeg VP9 指南并使用具有速率约束的两遍编码方法:

ffmpeg -y -i input-c:v libvpx-vp9 -b:v 2000k -minrate 500k -maxrate 2500k -c:a libopus -pass 1 -f webm /dev/null && \
ffmpeg -i input-c:v libvpx-vp9 -b:v 2000k -minrate 500k -maxrate 2500k -c:a libopus -pass 2 output.webm

目标比特率取决于您的分辨率、帧速率、内容类型以及您想要的质量。对于 30 fps 的高清视频,2.5 MBit/s 应该是一个不错的折衷方案。请参阅这个谷歌指南以获得一些建议。

MP4(H.264 / AAC)

遵循FFmpeg H.264 指南并使用具有速率限制的两遍编码方法。对于流式应用程序,两遍比特率方法是首选:

ffmpeg -y -i input -c:v libx264 -b:v 5000k -minrate 1000k -maxrate 8000k -pass 1 -an -f mp4 /dev/null && \
ffmpeg -i input -c:v libx264 -b:v 5000k -minrate 1000k -maxrate 8000k -pass 2 -c:a aac -b:a 192k -movflags faststart output.mp4

这里的目标比特率应该比 VP9 视频高出约 50%,因为 H.264 效率不高。将该-movflags faststart选项添加到第二遍可加快视频的初始加载速度。

要设置音频选项,请参阅AAC 编码指南

相关内容