注意:此答案自最初发布以来经过了大量编辑。现在是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编码指南。
.mov
HTML5视频没有,也没有h.264
扩展名。还有是.264
,这是原始附件B字节流的NAL单元。视频编码不是火箭科学,但是您需要花费一些时间来了解这些概念。