该项目可代理多种流媒体格式,包括:
- M3U8 文件(支持 多级、多轨道 M3U8 文件)
- 视频文件
- 流式传输的视频
- MPD 文件
- 某些客户端没有 IPV6 地址,可以将本项目部署到有 IPV6 地址的主机进行反代。
- 某些 URL 需要特定网络环境才能访问,可以统一在一台主机管理。
如需自定义 Content-Type,可修改文件中的代码:route/consts/url_type.py
文件类型 | 支持的 Content-Type(正则表达式) |
---|---|
M3U8 文件 | 见文件 route/consts/url_type.py |
视频文件 | 'application\\/octet-stream', '^video\\/.*$' |
流式传输的视频 | 'application\\/octet-stream', 'video\\/x-flv' |
MPD 文件 | 'application\\/octet-stream', 'application/dash' |
pip install -r requirements.txt
-
gunicorn启动
注意:需要设置超时时间,否则在代理流式传输的视频时,会播放一段时间就自动停止。
设置
--timeout 600
参数表示 10*60 秒内自动关闭连接# gunicorn --timeout 600 -w 线程数 -c gunicorn_config.py m3u8ProxyServer:app # 例如 gunicorn --timeout 600 -w 4 -c gunicorn_config.py m3u8ProxyServer:app
-
直接启动(单线程)
# 无输出日志 # python3 -u m3u8ProxyServer.py >> /dev/null 2>&1 & # 输出日志 /usr/bin/python3 -u m3u8ProxyServer.py >> run.log 2>&1 &
使用 monitor/monitor.sh
脚本启动。
- 该脚本可以用于 crontab 监控运行检查服务运行是否正常。
- 使用前需要修改脚本里的文件夹路径。
-
默认不代理本地地址(127.0.0.1/localhost),如有需要请在配置文件添加以下规则:
{ "proxy": { "server": { "rules": { "127\\.0\\.0\\.1": "default", "localhost": "default" } } } }