abr*_*hab 30 freebsd ffmpeg streaming video-streaming
我怎么能转换some.flv或some.avi或some.wmv与FFmpeg的,以确保该视频将是可玩性,可查找在JW播放器?
slh*_*hck 54
通常,您希望在 MP4 容器中创建 x264 视频。基本上任何设备和浏览器都支持此选项。
以下应该足够了。确保替换输入名称和 CRF 选项。后者设置质量,其中合理的值范围从 19 到 25 - 越低意味着质量越好,但比特率也越高:
ffmpeg -i input.avi -c:v libx264 -crf 23 -c:a aac -movflags faststart output.mp4
如果您喜欢 GUI 方式,您也可以使用Handbrake进行编码。
faststart选项现在,您需要做的是将 MP4 容器的MOOV 原子移到开头。这个原子(本质上是 MP4 容器中的一个数据单元)将包含关于视频/音频流本身的重要元数据。-movflags faststart应该这样做。
如果您的 FFmpeg 版本没有此选项,请考虑升级。如果您无法升级,您可以使用以下任何工具实现相同的目的:
QTIndexSwapper,一个 Adobe AIR 应用程序
MP4Box,免费且开源,运行类似于以下的命令,您可以在其中更改间隔(此处为 500):
mp4box -inter 500 input.mp4
Python 中的 qt-faststart,它适用于安装 Python 的任何地方。
qtfaststart input.mp4
就是这样。
现在,当然,对于流媒体,您实际上可能希望将比特率限制在特定范围内。您可以在我关于速率控制方法的博文中阅读更多相关信息。
例如,通过添加-maxrate 2M -bufsize 2M编码选项,您可以将编码限制为 2 Mbit/s,这对于 720p 视频来说可能就足够了。当然,所需的比特率取决于内容的复杂程度。这需要一些试验和错误。
Vin*_*eet 10
这是对您@abrahab 上次评论的回答。
你不需要mp4box一个文件就可以通过 nginx 伪流它。无论 moov 原子的位置如何,MP4 流模块都会处理它(mp4box将 moov 原子移到文件的开头)。
现在对于 500 服务器错误,您是否在 mp4box 中使用了“-frag”选项?MP4 流媒体模块无法读取碎片化的 MP4 文件。mp4box伪流的良好用途是交错视频以更好地寻找。Moov 原子移动是一个额外的优势。
我总是对mp4boxFFmpeg 编码的文件执行此操作
MP4Box -add MyVideo.mp4 -isma Myvideo-box.mp4
Run Code Online (Sandbox Code Playgroud)
默认情况下,这还将在 500 毫秒的块中交错 MP4 文件。
小智 9
您可以通过执行以下操作简单地转换不可流式传输的 AVI 或 MP4,也无需重新编码所有内容:
ffmpeg -i INPUT.mp4 -c copy -movflags faststart STREAMABLE_OUTPUT.mp4
不需要重新编码任何东西,因为只需要移动 moov 原子。