nginx 中的 Mpeg-dash 支持

Posted

技术标签:

【中文标题】nginx 中的 Mpeg-dash 支持【英文标题】:Mpeg-dash support in nginx 【发布时间】:2015-10-21 08:20:06 【问题描述】:

我搜索得够多,但无法弄清楚如何使用 nginx_vod_module 在 nginx 中配置 mpeg-dash vod。

http 服务器块内用于启用破折号的配置是

  location /voddash 
        vod dash;
        vod_mode local;
        root /usr/share/nginx/html;
        gzip on;
        gzip_types application/dash+xml mpd;
        add_header Access-Control-Allow-Headers "origin,range,accept-encoding,referer";
        add_header Access-Control-Expose-Headers "Server,range,Content-Length,Content-Range";
        add_header Access-Control-Allow-Methods "GET, HEAD, OPTIONS";
        add_header Access-Control-Allow-Origin "*";
        expires 100d;
        add_header Last-Modified "Sun, 19 Nov 2000 08:52:00 GMT";
    

请求 url 是 http://localhost/voddash/Input.mp4/manifest.mpd 。 我只在破折号位置放置了 Input.mp4。我如何流式传输破折号内容。还有像 nginx 中用于 mpeg 破折号的预先创建的清单和块的流式传输?

【问题讨论】:

【参考方案1】:

我的服务器上也有同样的配置,使用下面的html+js代码来播放动态生成的manifest.mpd文件:

<!doctype html>
<html>
    <head>
        <title>Dash.js Rocks</title>
        <style>
            video 
                width: 640px;
                height: 360px;
            
        </style>
    </head>
    <body>
        <div>
            <video id="videoPlayer" controls></video>
        </div>
        <script src="http://dashif.org/reference/players/javascript/nightly/dash.js/dist/dash.all.min.js"></script>
        <script>
            (function()
                var url = "http://localhost/voddash/Input.mp4/manifest.mpd";
                var player = dashjs.MediaPlayer().create();
                player.initialize(document.querySelector("#videoPlayer"), url, true);
            )();
        </script>
    </body>
</html>

【讨论】:

以上是关于nginx 中的 Mpeg-dash 支持的主要内容,如果未能解决你的问题,请参考以下文章

MPEG-DASH视频传输中的常见问题

支持 MPEG-DASH 的媒体播放器 [关闭]

从开始的 mpeg-dash 实时流延迟

用于实时流媒体的 MPEG-DASH 编码

通过 HTTP (MPEG-DASH) 进行流式传输有啥意义?

具有安全 S3 URL 的 MPEG-Dash