如何在iOS上进行MPEG-DASH视频流传输?

13

我正在尝试编写一个基于JavaScript的MPEG-DASH视频流实现。 我参考了以下文档:

这些库使用MSE(Media Source Extensions)。

我的理解

MPEG-DASH是用于流媒体视频的国际标准,但目前在iOS设备上不受原生支持。在其他浏览器和设备中,它需要支持MPEG-DASH的JavaScript库或视频播放器(例如Dash.Js,Shaka player)。

还有另一种流媒体技术是HLS。 它是由苹果创建的自适应流媒体通信协议。 Safari浏览器可以在网页内播放HLS流,iPhone和iPod touch设备也可以播放。

在这里,我们可以看到MPEG-DASH(因为MSE)目前在iOS设备上不受原生支持。

现在,我的疑问是:

  1. 如何在iOS中没有MSE的情况下流式传输MPEG-DASH视频?
  2. Facebook和其他流媒体服务如何播放他们的视频?仅使用HLS吗?

任何建议/解释都将非常有帮助!


澄清一下,https://caniuse.com/?search=mse MPEG-DASH目前在iPad OS中得到支持,他们甚至在iPad发布会上暗示了这一点。我怀疑这是为了取悦运营商,就像“5Ge”一样。但是,如果您不观看高清视频并使用备用方案,电池寿命将会更好。 - Ray Foss
3个回答

11
  1. 你无法实现这个功能。

  2. 是的,他们使用HLS。iOS 10及以上版本支持在HLS中使用fmp4。因此,dash和hls之间唯一的区别是清单(manifest)。


2
仍然是半真的。现在可能可以在服务工作者中将mpd转换为m3u8。不确定。 - szatmary
@szatmary 这就是全部吗?使用Mp4/AV1时片段没有任何区别吗? - Ray Foss
2
@RayFoss 对于DASH H.264转换为HLS的问题,是的,只需创建一个指向每个fmp4文件的m3u8,并将初始化片段放入#EXT-X-MAP中即可。 - szatmary
@szatmary谢谢你的回答!基于iOS的Apple TV将支持4K播放,并且旧版本一直受到媒体的抨击。M1已经能够处理低比特率4K的AV1解码。苹果知道如何挤压它的8宽解码块和GPU。https://www.anandtech.com/show/16226/apple-silicon-m1-a14-deep-dive/2 - Ray Foss
1
@RayFoss Apple TV可以通过软件解码几乎任何内容。但这是因为它有插入墙壁的电源线。预计具有良好电池寿命的手机将成为采用HLS的障碍。解码AV1不是一个大规模并行的问题,标准GPU无法胜任。它需要专用硬件原语。这就是为什么QuickSync / NVENC / VideoToolBox都存在的原因。此外,M1耗电40瓦(非常令人印象深刻),但A14只耗电其十分之一! - szatmary
显示剩余4条评论

2
尝试同时提供HLS和DASH容器,让媒体查询选择合适的容器。"Original Answer"翻译成"最初的回答"。

7
嗨,Cary,如果你需要澄清问题,你应该在问题下面发表评论。答案应该提供解决问题的方法。我稍微修改了你的回答措辞,使其更加符合“回答”而不是“评论”的形式。 - brasofilo

1
你可以在设备上设置代理服务器,然后创建一个解析器,将mpd文件转换为m3u8并为AVPlayer提供m3u8服务。 对于iOS代理,GCD应该可以胜任: GCDWebServer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接