html5-video - 为什么我需要 Dash.js 来流式传输 MPEG DASH 视频?

标签 html5-video mpeg-dash dash.js

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

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

最佳答案

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

提供 DASH 视频

任何现代 Web 服务器(Apache、ngnix、IIS 等)都可以通过 HTTP 或 HTTPS 传送 DASH 视频片段。服务器端不需要插件或其他软件来提供 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 编码器以不同的方式命名它们的文件。

一些 DASH 播放器,尤其是基于 Web 的播放器,可能还需要服务器支持 cross-origin resource sharing (CORS) .这是一种安全机制,可让您选择可以在哪些网站上显示您的内容,从而帮助防止恶意网站运行。您的服务器需要提供的确切 CORS header 还取决于播放器 - 在某些情况下,会使用其他 header 并且必须显式启用。我会将 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-video - 为什么我需要 Dash.js 来流式传输 MPEG DASH 视频?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28529383/

相关文章:

javascript - 访问多个摄像头javascript getusermedia

HTML5 视频录制并自动上传到服务器

ffmpeg - HTML5 Progressive Streaming -- 无后续范围请求

javascript - html5视频: play/pause custom button issue

ffmpeg - 如果有人掌握了解码的初始化数据和/或 Widevine 许可证 key ,他可以解码我的 Widevine Mpeg Dash 流吗?

drm - MPEG-DASH list 中的内容保护系统之间的差异

javascript - Multi-drm 内容的 Dash.js 问题

javascript - 带有 MPEG DASH 的 JwPlayer

FFMPEG/DASH-LL 以不同的速率创建音频和视频 block ;玩家很困惑(404错误)

javascript - 如何在 DashMetrics 上获取 periodId