第三方播放M3U8等问题
提示:查看该问题的时候,请确保自身的M3U8播放没问题;可通过后台预览视频。

一般我们将转码后的M3U8链接拿到第三方程序播放出现的话,大致上会出现以下问题,这里详细说下。

https协议与http协议问题

出现原因

第三方程序绑定的域名开启了SSL,即https访问,而转码端未开启SSL,依然使用http访问。

调试确定

pc上使用谷歌浏览器打开播放页面,按下f12,点击播放的时候查看控制台,看到以下类似错误即为该问题。

解决办法

给转码程序绑定的域名开启SSL,强制https访问;或者将第三方程序绑定的域名去掉SSL,使用http访问,也就是均为httphttps

APP或IOS不能播放

对于APP,http不能播放的话,建议开启https。

跨域问题

提示:如果程序未绑定域名,即M3U8为ip:7001链接,则必跨域,请先看文档安装教程绑定域名即可。

程序内置跨域放行所有文件,即默认对所有域名放行;如果只对部分域名放行,则前往转码设置设置引用域名即可。

调试确定

pc上使用谷歌浏览器打开播放页面,按下f12,点击播放的时候查看控制台,看到以下类似错误即为该问题。

解决方法

通过跨域信息,确定跨域的后缀文件,比如ts,这里以宝塔面板为例,先点击域名设置-反向代理-编辑配置文件,再以下代码复制进去:

#单个ts后缀跨域
location ~ .*\.ts$
{
    add_header Access-Control-Allow-Origin *;
    proxy_pass http://127.0.0.1:7001;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header REMOTE-HOST $remote_addr; 
}

#多个后缀跨域,比如m3u8和ts,中间用|分开
location ~ .*\.(m3u8|ts)$
{
    add_header Access-Control-Allow-Origin *;
    proxy_pass http://127.0.0.1:7001;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header REMOTE-HOST $remote_addr; 
}

proxy_pass为反代地址,可参考初始反代配置的地址。

如果还有其他问题在这里找不到解决方案,可以直接联系我们。