video-streaming - 跨大多数浏览器和设备一致的自适应流媒体策略

标签 video-streaming html5-video http-live-streaming mpeg-dash adaptive-bitrate

我已经研究了很多关于视频流和在网络上播放的当前状态。我正在发布我总结的内容以及我认为我应该遵循的策略以支持跨大多数设备和浏览器的自适应流。如果我正在制定的策略有任何重大漏洞/改进,我只是想从社区获得反馈。

总结

  • 为了支持当今大多数浏览器在 html 中播放视频 <video>我们需要以至少 3 种 WEBM、OGG 和 MP4 格式对视频进行编码的元素
  • 要为视频点播服务提供自适应流媒体服务,可用的选项包括 MPEG-DASH、Apple 的 HLS、Microsoft 的 Smooth Streaming 和 Adob​​e 的 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 设备。

    这似乎是一个好习惯吗?还是我缺少跨浏览器自适应流媒体解决方案的重要内容?

    欢迎提示/建议/建议。

    谢谢 !

    最佳答案

    在这里,您可以在 MPEG-DASH 和/或 HLS 支持方面看到不同浏览器和平台的概述:http://www.dash-player.com/blog/2015/06/replacing-flash-adaptive-streaming-and-drm-in-html5/

    我们通常并行生成 MPEG-DASH + HLS 内容,并使用 MPEG-DASH(在 HTML5 或 Flash 中使用例如 http://www.dash-player.com)为大约 80% 到 90% 的所有用户提供服务,并使用 HLS 为 10% 到 20% 的用户提供服务。

    关于video-streaming - 跨大多数浏览器和设备一致的自适应流媒体策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31357378/

    相关文章:

    Android - ExoPlayer 2 离线播放 DRM (widevine)

    video - 如何根据请求有效地处理视频?

    amazon-web-services - 如何防止使用签名网址从亚马逊云端下载视频

    FFmpeg:1个输入流,2个不同属性的输出流

    ios - 在 iPhone MPMoviePlayerController 上播放字节流

    javascript - 如何使用 JavaScript 暂停 HTML5 视频?

    iOS热点与全屏视频播放器状态栏混淆

    javascript - Chrome - 不播放多个视频 - 网络卡在待定状态

    HTML 视频播放一段时间后返回 MEDIA_ERR_SRC_NOT_SUPPORTED 错误

    windows - Windows 8 中的 HLS Steaming