我需要几堆ffmpeg脚本才能获得HTML5兼容的“所有人的视频”?


12

我应该在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
...

然后将“所有人的视频”代码复制并粘贴到您的页面中?

我的目标是在我托管的个人网页中嵌入视频。首选具有Flash后备功能的HTML5,因此最简单的方法似乎是“所有人的视频”。但是该页面保留了最复杂的部分,将视频编码为所有不同的格式,以供读者阅读有关视频格式的冗长而完整的文章来弄清楚。当然这不是必须的。我可以为用户提供命令列表,以将音频文件盲目转换为多种不同的格式。希望ffmpeg大师可以对视频做同样的事情。


1
对您的伪代码示例进行少量评论:.movHTML5视频没有,也没有h.264扩展名。还有 .264,这是原始附件B字节流的NAL单元。视频编码不是火箭科学,但是您需要花费一些时间来了解这些概念。
slhck

Answers:


21

注意:此答案自最初发布以来经过了大量编辑。现在是2017年;流式传输的工作方式与以往不同。本指南假定以一种给定的分辨率简单渐进地下载一个视频流-没有自适应流。

要求

首先,请确保下载最新ffmpeg版本(下载静态版本;请勿调用apt-get install ffmpeg或类似版本)。理想情况下,自己编译。不会花太长时间。

要生成大多数浏览器支持的视频,请始终检查最新的兼容性表。没有在每种浏览器中都能使用的编解码器/格式,但是如果您在WebM的MP4和VP9中生成H.264,并使用各自的音频编解码器,则将支持Chrome,Firefox,Safari和某些版本的IE。

WebM(VP9 / Vorbis)

请遵循FFmpeg VP9指南中的建议,并使用具有速率限制的两遍编码方法:

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

目标比特率取决于分辨率,帧频,内容类型以及所需的质量。对于每秒30帧的高清视频,2.5 MBit / s应该是一个很好的折衷方案。有关一些建议,请参阅此Google指南

MP4(H.264 / AAC)

请遵循FFmpeg H.264指南中的建议,并使用具有速率限制的两遍编码方法:

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

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

有关设置音频选项的信息,请参见AAC编码指南


1
您的段落之一的2013-12-19版本在句子中间中断。“音频再次默认为128 kBit / s,但是您可以将q:a设置为可变比特率,其中值的范围为0到500。默认值为100,更高的值表示更好。如果”
Alan De Smet 2014年

@slhck很有道理,但我的两分钱是您放下Ogg并将其替换为mpegts / m3u8以支持所有iOS设备或接受HLS的设备。您可以重用.mp4文件,只需在ffmpeg中添加mpeg-ts处理即可。
Paul Gregoire 2014年

@Mondain确实,但是MPEG-TS / .m3u8通常不是兼容HTML5的视频。您需要一个HLS服务器,并且需要了解有关流技术的更多信息,这实际上不在此问题的范围之内。
slhck 2014年

很好,但是根据我的经验,到目前为止,一个简单的http服务器可以将m3u8用作视频标签。通常唯一需要做的就是将m3u8和ts的mime类型添加到各自的服务器配置中。
Paul Gregoire 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.