我已经研究了很多关于视频流和在网络上播放的当前状态。我正在发布我总结的内容以及我认为应该遵循的策略,以支持跨大多数设备和浏览器的自适应流媒体。如果我正在制定的策略有任何重大漏洞/改进,我只是想从社区获得反馈。
概括
- 为了支持当今大多数浏览器以 html
<video>
元素播放视频,我们需要以至少 3 种格式 WEBM、OGG 和 MP4 对视频进行编码 - 要为视频点播服务提供自适应流媒体,可用的选项有 MPEG-DASH、Apple 的 HLS、Microsoft 的 Smooth Streaming 和 Adobe 的 HDS
- 最初我更喜欢使用 MPEG-DASH,因为它是一种类似于 HDS、HLS 和平滑流的开放标准,并且被发明为提供一个通用平台来在任何浏览器和操作系统上提供音频/视频内容。
- 但截至目前,在 iOS 上运行 Safari 和在 Mac 上运行 Safari 的 Apple 设备并不完全支持 MPEG-DASH 标准,因为 Apple 尚未支持 MPEG-DASH 所基于的 html5 的媒体源扩展 API。
- 所以我要实现 MPEG-DASH(对于非苹果设备)+ HLS(对于苹果设备)
- 这意味着我必须在服务器端生成.mpd(由 mpeg-dash 使用)和.m3u8(由 HLS 使用)文件,然后将其提供给客户端。我在服务器端使用 Node.js 进行编码。
现在据我所知,当使用 mpeg-dash 时,它的基本作用是从源文件和包含关于将哪个流发送到客户端的描述/规则的配置文件创建具有不同比特率的各种不同媒体文件取决于带宽。
相同的逻辑适用于 HLS,但它创建的配置文件具有与 mpeg-dash 不同的扩展名。
如果我计划支持具有 3 种不同分辨率的 3 比特率,例如 1020*720、800*600、400*300 的视频,那么我需要为我将要支持的 3 种格式(即 WEBM、 OGG, MP4)
因此,对于客户端上传的任何一个视频,我总共需要生成 3*3 = 9 个视频,同时生成一个 .mpd 和 .m3u8 文件以支持非 Apple 和 Apple 设备。
这似乎是一个好习惯吗?或者我是否缺少跨浏览器自适应流媒体解决方案?
欢迎提示/建议/建议。
谢谢 !