我是新的html 5自适应流媒体和信息,这是相当矛盾的。我想在我的Windows服务器云上创建一个测试环境,传输一个2小时的h264文件,并在我的本地计算机上使用html5播放器播放。
问题: 为什么我需要Dash.js来播放Mpeg破折号视频? Dash.js是否必须在服务器中安装(听起来很明显)或客户端(听起来很奇怪)?
答案 0 :(得分:14)
任何现代网络服务器都可以通过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>
显然,你需要一名球员。存在不同类型的播放器:独立桌面应用(例如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>
。