问题
拿到 m3u8播放地址,有很多 m3u8资源不允许跨域播放。 如下资源:
使用 google前 5 个 m3u8在线播放器试试。
https://m3u8-player.com/
https://m3u8player.org/
http://tool.liumingye.cn/m3u8/
http://tool.pfan.cn/m3u8
https://m3u8play.com/
在浏览器开发者工具看到CORS错误如下:
Access to XMLHttpRequest at 'https://foxtv.blutv.com/blutv_foxtv_live/live.m3u8' from origin 'xxx' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
这些在线播放器很优秀,UI 上做的漂亮,但他们都是君子播放器。
这资源就是想看,网上那么多现成的 m3u8资源,去哪儿找他们的官方播放地址?
目标
公开可播放的m3u8资源我要看,没开放 CORS 跨站m3u8资源我也要看。
实现办法:
- 自已实现修改浏览器,不守 CORS 规则。显然:难度高上天,不可能。
- 先下载,再播放。 不算友好:需要清除下载的 ts文件。
- 实现一个代理,通过代理转发,避免CORS问题。
后两个办法可取, 我选择第三种方式,起一个后台代理
技术实现m3u8代理
- 生成代理m3u8地址:原 m3u8地址发给代理服务器,生成代理 m3u8地址。
- url转换:master playlist和 media playlist中的相对 url路径和绝对 url路径在代理中修改成代理m3u8地址
- ts 内容经代理直接输出。
实现软件
飞鸟 m3u8下载器 v2.0.2新增功能:跨域播放
UI 丑了点:会慢慢改进。
没有在线播放方便: 服务器播放容易封 IP,效果不佳。 再一个小弟的服务器不承压。
玩的开心,别因 UI 丑而生气,不值得,想开点。
下载地址
GitHub - youwen21/flybird-m3u8downloader: https://github.com/youwen21/flybird-downloader