【问题标题】:Why Do I need Dash.js for streaming MPEG DASH videos?为什么我需要 Dash.js 来流式传输 MPEG DASH 视频?
【发布时间】:2015-04-16 06:04:21
【问题描述】:

我是 html 5 自适应流媒体的新手,那里的信息非常矛盾。我想在我的 windows 服务器云上创建一个测试环境,流式传输一个 2 小时的 h264 文件,并在我的本地计算机上使用 html5 播放器播放。

问题: 为什么我需要 Dash.js 来播放 Mpeg dash 视频? 我必须在服务器(听起来很明显)或客户端(听起来很奇怪)中安装 Dash.js 吗?

【问题讨论】:

    标签: html5-video mpeg-dash dash.js


    【解决方案1】:

    为什么需要 dash.js 来传输 MPEG-DASH 视频

    您需要它,因为 Web 浏览器本身并不支持 DASH,因为它们不需要这样做。但是,Web 浏览器需要支持 Media Source Extensions (MSE)。对于确实实现 MSE 的(较新的)浏览器版本,它们的“基本”支持媒体源(如 MP4)可以通过包含 dash.js 等 Javascript 库来由 DASH 进行补充。与要求用户安装 Flash Player 等插件以播放非基本媒体类型的旧例程相比,这更加灵活(并且面向未来)。

    客户端设置

    您还询问了dash.js 是需要安装在服务器端还是客户端。 Sander 已经写过任何可能需要为文件提供服务的服务器端设置,所以我将添加一个关于如何在客户端实现它的说明。

    来自dash.jsGitHub page

    <script src="http://cdn.dashjs.org/latest/dash.all.min.js"></script>
    ...
    <style>
        video {
           width: 640px;
           height: 360px;
        }
    </style>
    ...
    <body>
       <div>
           <video data-dashjs-player autoplay src="http://dash.edgesuite.net/envivio/EnvivioDash3/manifest.mpd" controls></video>
       </div>
    </body>
    

    请注意,如果您也想进行 Clear Key 加密,则需要从安全上下文(例如 TLS)向 bot 提供视频文件和 dash.all.min.js。如果您想使用xhtml 格式而不是html,则需要在&lt;video&gt; 元素的每个布尔属性之后添加="true"

    【讨论】:

      【解决方案2】:

      DASH 视频与任何其他视频一样,包含两个部分:服务提供视频,播放器消费这些视频并将其呈现给用户。我会解释双方都需要什么。

      投放 DASH 视频

      任何现代网络服务器(Apache、ngnix、IIS 等)都可以通过 HTTP 或 HTTPS 传送 DASH 视频片段。服务器端不需要插件或其他软件来提供 DASH 视频 - 它们只是文件,每个 Web 服务器都知道如何提供文件。不过,您可能需要进行一些配置。

      大多数网络服务器都有一个允许提供的文件的 MIME 类型列表 - 您通常需要将 DASH 视频添加到此列表中,因为出于安全原因,默认设置往往具有限制性并且不允许 DASH 视频流式传输。

      这是一个用于 IIS 的示例 web.config,它允许提供 DASH 视频:

      <?xml version="1.0" encoding="UTF-8"?>
      <configuration>
          <system.webServer>
              <staticContent>
                  <remove fileExtension=".m4s" />
                  <mimeMap fileExtension=".m4s" mimeType="video/mp4" />
      
                  <remove fileExtension=".mpd" />
                  <mimeMap fileExtension=".mpd" mimeType="application/dash+xml" />
      
                  <remove fileExtension=".m4f" />
                  <mimeMap fileExtension=".m4f" mimeType="video/mp4" />
      
                  <remove fileExtension=".m4a" />
                  <mimeMap fileExtension=".m4a" mimeType="video/mp4" />
              </staticContent>
          </system.webServer>
      </configuration>
      

      存在不同的video/mp4 元素,因为不同的 DASH 编码器对其文件的命名不同。

      某些 DASH 播放器,尤其是基于 Web 的播放器,可能还需要服务器支持 cross-origin resource sharing (CORS)。这是一种安全机制,可让您选择可以在哪些网站上显示您的内容,从而帮助防止恶意网站运行。您的服务器需要提供的确切 CORS 标头还取决于播放器 - 在某些情况下,会使用其他标头并且必须显式启用。我会将 CORS 的详细信息超出此答案的范围。下面是一个简单的 IIS 配置示例,它允许任何网站使用提供的视频:

      <?xml version="1.0" encoding="UTF-8"?>
      <configuration>
          <system.webServer>
              <httpProtocol>
                  <customHeaders>
                      <add name="Access-Control-Allow-Origin" value="*" />
                  </customHeaders>
              </httpProtocol>
          </system.webServer>
      </configuration>
      

      播放 DASH 视频

      显然,你需要一名球员。存在不同类型的播放器:独立桌面应用程序(例如 VLC)、适用于 Android/iOS 应用程序的播放器 SDK(例如 ExoPlayer 和 Microsoft PlayReady Client SDK)和网站播放器(例如 dash.js 和 Bitdash)。在 Windows 10 上,Internet Explorer 甚至会包含一个用于 DASH 视频的内​​置播放器。

      这就是 dash.js 的用武之地——它是一个播放器。如果您希望您的网站播放视频,请将其放入您的网站。也有不同的播放器可用。

      根据您希望向最终用户提供内容的方式,您可以选择播放器,如果不是独立播放器,请将其嵌入到您的应用或网站中。您将 URL 提供给播放器,它会做它的事情。很简单。

      基于网站的播放器需要服务器支持 CORS,但独立或应用托管的播放器不需要它。

      【讨论】:

      • 非常详细和好的答案!简短评论:对于自适应流媒体内容,HTML5 浏览器支持通过 HTML5 媒体源扩展进行解码和呈现。但是,清单文件 (MPD) 的解析和媒体片段(例如 DASH 片段)的下载必须通过 JavaScript 完成。这些段通过 MSE 的接口移交给浏览器。这是 dash.js 或 bitdash 等玩家的主要任务。
      猜你喜欢
      • 2017-11-19
      • 1970-01-01
      • 1970-01-01
      • 2016-06-13
      • 2018-06-29
      • 1970-01-01
      • 2023-03-24
      • 1970-01-01
      • 2023-03-18
      相关资源
      最近更新 更多