使用 clappr 播放流式 RTMP 视频被 CORS 阻止

Posted

技术标签:

【中文标题】使用 clappr 播放流式 RTMP 视频被 CORS 阻止【英文标题】:Play streaming RTMP video with clappr is blocked by CORS 【发布时间】:2021-12-24 08:54:50 【问题描述】:

我正在尝试使用clappr 在 html 上播放流式视频,但尝试通过 rtmp 浏览器(任何浏览器)加载流时显示此错误:

访问“rtmp://my.domain.com/vod/mp4:360_bridge.mp4”上的视频 来自原点“https://my.domain.com”已被 CORS 策略阻止: 跨源请求仅支持协议方案:http, 数据、铬、铬扩展、铬不受信任、https。

我了解 CORS 策略会阻止 rtmp,因为即使资源位于同一服务器中,它也是与 Web 上的端口 (443) 不同的端口 (1935)。

另外,阅读错误,我知道我的服务器返回 Access-Control-Allow-Origin * 并不重要,(我知道这不是最佳做法),浏览器会阻止资源加载,因为 rtmp不在支持的协议中。

我为什么要使用 clappr?因为我要播放的视频流是 360 度视频,而 clapper 是在网络上播放 360 度视频的一种非常简单的方法。

clappr 的版本是 0.3.13。 我的服务器是带有 Apache 2.4.41 的 Ubuntu 20.04。

Clappr-video360 plugin Clappr V0.3.13 download

我的代码其实很简单:

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf8">
    <title>CLappr video</title>
</head>
<body>
    <div id="player"></div>

    <script src="../../public/assets/js/clappr.js"></script>
    <script src="../../public/assets/js/clappr-video360.min.js"></script>
     <script type="text/javascript" src="https://cdn.jsdelivr.net/gh/video-dev/clappr-rtmp-plugin@latest/dist/rtmp.min.js"></script>

    <script>
        var video = 'rtmp://my.domain.com/vod/mp4:360_bridge.mp4'

        var PlayerInstance = new Clappr.Player(
            source: video,
            plugins: 
                container: [Video360],
                'playback': [RTMP]
            ,
            parentId: '#player',
        )

        PlayerInstance.getPlugin('click_to_pause').disable();
    </script>
</body>

我已经研究了很多,用不同的浏览器进行了测试,尝试在 Chrome 和 Opera 中禁用 cors 策略,但即使我的测试也找不到解决方案。

如何阻止此错误发生?

如果有任何帮助或建议,我将不胜感激。

【问题讨论】:

【参考方案1】:

这不是CORS的问题,因为你的流是RTMP,现在浏览器不支持(2021.12)。

var video = 'rtmp://my.domain.com/vod/mp4:360_bridge.mp4'

对于视频点播,您可以使用 HTTP-MP4、HTTPS-MP4 或 HLS。请搜索一下,使用&lt;video&gt;标签很容易玩。

直播请使用HTTP-FLV、HLS或DASH等,请见this post。

【讨论】:

感谢您的回答,我一直在研究RTMP的错误方式,现在我明白了这个协议和Flash之间的关系以及为什么两者都死了。我会按照你的指示学习如何从视频标签中播放。 不客气,协议见this post,媒体服务器见here

以上是关于使用 clappr 播放流式 RTMP 视频被 CORS 阻止的主要内容,如果未能解决你的问题,请参考以下文章

ExoPlayer 无法播放 Adob​​e 实时流编码器流式传输的音频/视频 (RTMP)

通过 RTP 流式传输,RTMP 播放质量问题

官方文档Nginx模块Nginx-Rtmp-Module学习笔记流式播放Live HLS视频

可以使用带有 HTML5 播放器的 Amazon S3/CloudFront 流式传输视频吗?

有人遇到这个错误吗? RTMP 流式视频过早结束 3-4 秒?

直播 RTMP/RTSP 播放器,无需在 Android 上使用 webview(WOWZA 服务器)