我对html5自适应流媒体是个新手,外面的信息很矛盾。我想在我的html5服务器云上创建一个测试环境,流式传输一个2小时的h264文件,然后在我的本地计算机上使用windows播放器播放。
问:为什么需要Dash.js来播放Mpeg dash视频?Dash.js是我必须安装在服务器(听起来很明显)还是客户端(听起来很奇怪)的东西?
发布于 2015-02-16 16:36:54
DASH视频,像任何其他视频一样,包括两个部分:一个发球为视频提供服务,一个播放器消费它们并将它们呈现给用户。我将解释双方都需要什么。
提供DASH视频
DASH视频片段可以由任何现代web服务器通过HTTP或HTTPS传送- Apache、ngnix、IIS和其他服务器。服务器端不需要插件或额外的软件来提供DASH视频-它们只是文件,每个web服务器都知道如何提供文件。但是,您可能需要进行一些配置。
大多数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播放器,特别是基于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),用于安卓/iOS应用程序的播放器SDK(例如ExoPlayer和微软PlayReady客户端SDK)以及网站播放器(例如dash.js和Bitdash)。在Windows10上,Internet Explorer甚至会包含一个内置的DASH视频播放器。
这就是dash.js的用武之地--它是一个玩家。如果你想让你的网站播放视频,你可以把它放到你的网站上。也有不同的玩家可用。
根据您希望向最终用户提供内容的方式,您可以选择一个播放器,如果不是独立播放器,则将其嵌入到您的应用程序或网站中。您将URL提供给播放器,它就会执行它的操作。很简单。
基于网站的播放器需要服务器支持CORS,但独立或应用托管的播放器不需要。
发布于 2017-05-24 18:50:43
为什么需要dash.js来流式传输MPEG-DASH视频
您需要它,因为web浏览器本身并不支持DASH,因为它们不需要这样做。然而,网络浏览器需要支持 (MSE)。对于实现了MSE的(较新的)浏览器版本,可以通过包含dash.js等Javascript库来简单地使用DASH来补充其支持的“基本”媒体源,如MP4。这比要求用户安装像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>请注意,如果你想做明文密钥加密,你将需要提供机器人的视频文件和dash.all.min.js从一个安全的上下文(例如。TLS)。如果希望使用xhtml格式而不是html,则需要在<video>元素的每个布尔属性后添加="true"。
https://stackoverflow.com/questions/28529383
复制相似问题