第三方播放M3U8等问题
提示:查看该问题的时候,请确保自身的M3U8播放没问题;可通过后台预览视频。
一般我们将转码后的M3U8
链接拿到第三方程序播放出现的话,大致上会出现以下问题,这里详细说下。
https协议与http协议问题
出现原因
第三方程序绑定的域名开启了SSL
,即https
访问,而转码端未开启SSL
,依然使用http
访问。
调试确定
在pc
上使用谷歌浏览器打开播放页面,按下f12
,点击播放的时候查看控制台,看到以下类似错误即为该问题。
解决办法
给转码程序绑定的域名开启SSL
,强制https
访问;或者将第三方程序绑定的域名去掉SSL
,使用http
访问,也就是均为http
或https
。
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
为反代地址,可参考初始反代配置的地址。
如果还有其他问题在这里找不到解决方案,可以直接联系我们。