为什么我需要Dash.js来播放MPEG DASH视频?

时间:2015-02-15 18:13:44

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

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

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

2 个答案:

答案 0 :(得分:14)

与任何其他视频一样,DASH视频涉及两个部分:一个服务提供视频,一个玩家消费它们并将它们呈现给用户。我将解释双方需要什么。

提供DASH视频

任何现代网络服务器都可以通过HTTP或HTTPS传送DASH视频片段 - Apache,ngnix,IIS等。服务器端不需要插件或其他软件来提供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播放器,尤其是基于网络的播放器,可能还需要服务器支持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,但独立或应用托管的玩家不需要它。

答案 1 :(得分:1)

为什么需要dash.js来播放MPEG-DASH视频

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

客户端设置

您还询问dash.js是否需要在服务器端或客户端安装。 Sander已经写了关于服务文件所需的任何服务器端设置,因此我将添加如何在客户端实现它的说明。

来自dash.js GitHub 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>

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