是否有任何开源流解决方案支持 Http Adaptive Streaming?根据我的研究,VLC 不支持自适应流。我不确定 Darwin Streaming Server。有任何想法吗?
4 回答
我看到了它们,但还没有测试过它们。我建议他们在 HTTP 实时流的早期阶段造成的悲痛是不值得的。很少有可用资源可供您用来尝试解决它的问题。
如果你想便宜,你可以试试:
50 美元:苹果压缩机。如果您有 MAC,则将编码和分段全部合二为一
25 美元:Markelsoft HLS 分段器:但是,您可能需要使用一些 X.264 设置来获得最终产品,并且虽然它分段(大工作)它不会创建变体播放列表。您可以使用记事本手动执行此操作。这不是一项大工作。
如果你想完全免费,你有:
编码:手刹、MeGui,随心所欲。只需遵循 Android 编码规范。使用 H264 和 AAC。不要使用渐进式下载设置/预设。使用 CBR 而不是 VBR 并确保您的帧速率是恒定的而不是可变的。选择可以在乘法中轻松使用的帧速率,以便确保关键帧在片段中的位置。
使用 Apple 的免费工具:mediafilesegment、variantplaylistcreator 等。Mediafilesegmenter 会询问您想要多大的片段。默认值为 10 秒。这样您就可以设置解码器关键帧以确保每个片段都以关键帧开头。
我举两个例子。
示例 1:
- 分割大小:10秒
- 帧率:最初为 29.97 变量,编码为 30 fps 常量
- 以帧为单位的关键帧距离:30 x 10 秒 = 300 帧。每 300 帧需要一个关键帧。
- 推荐的自适应关键帧:每 2 秒
关键帧设置 2 * 30 = 60 帧。每 5 个关键帧 (5 * 60) 引导一个片段
示例 2:
- 帧率:最初为 23.97 变量,编码为 24 fps 常量
- 分段大小:8 秒
- 片段所需的关键帧:8 * 24 = 192
- 推荐用于自适应 2 秒 = 2 * 24 = 48
- 每第 4 个关键帧 (4 * 48) 引导一个片段
如果您想要一个开源解决方案,您可以使用 x264 和 mp4box 来实现。以下命令将是一个示例,您可以如何创建一个单一的质量/表示/再现:
x264 --output intermediate_2400k.264 --fps 24 --preset slow --bitrate 2400 --vbv-maxrate 4800 --vbv-bufsize 9600 --min-keyint 48 --keyint 48 --scenecut 0 --no-scenecut --pass 1 --video-filter "resize:width=1280,height=720" inputvideo.mkv
下一步是将编码内容多路复用到 mp4 中:
MP4Box -add intermediate.264 -fps 24 output_2400k.mp4
然后创建各个段和清单:
MP4Box -dash 4000 -frag 4000 -rap -segment-name segment_ output_2400k.mp4
然后,您可以创建其他几个品质并使用像dash.js这样的开源播放器之一来播放它们。
OSMF 播放器: http ://www.osmf.com/
老实说,根本没有简单的解决方案可以完成所有这些工作,更不用说自适应流媒体了。绝对没有一体化的开源解决方案来进行 HTTP 流的编码、分段和交付(更不用说具有同步关键帧的自适应流)。