从HLS流下载所有文件的客户端
hlsclient的Python项目详细描述
这是一个简单的PythonHTTP Live Streaming Client它消耗了 远程播放列表的列表,并保存为 本地播放列表:键、段和经过修改的带路径的m3u8 正常化
它还支持备份,也就是说,如果相同的播放列表在 多个服务器,它将跟踪每个服务器状态并切换 如果需要的话。
通过config.ini,可以自定义文件的位置 将被保存,通过json提供服务器信息的url是什么。
JSON必须类似于:
{ "streams": [ "nasa": { "input-path": "/msfc/Edge.m3u8", servers: [ "http://liveips.nasa.gov.edgesuite.net" ] } ] }
生成不同的播放列表
hlslcient可以使用多个播放列表,然后生成不同的播放列表分组
为此,为每个流包含一个bandwidth,并添加一个操作以将它们组合到JSON中:
{ "streams": { "Nasa-low": { "input-path": "/msfc/Edge.m3u8", "servers": ["http://liveips.nasa.gov.edgesuite.net"], "bandwidth": 254082 }, "Nasa-medium": { "input-path": "/msfc/3G.m3u8", "servers": ["http://liveips.nasa.gov.edgesuite.net"], "bandwidth": 460658 }, "Nasa-high": { "input-path": "/msfc/Wifi.m3u8", "servers": ["http://liveips.nasa.gov.edgesuite.net"], "bandwidth": 1080434 } }, "actions": [ { "type": "combine", "input": ["Nasa-low", "Nasa-medium", "Nasa-high"], "output": "/msfc/nasa_mbr.m3u8" } ] }
转码
hlsclient还可以使用ffmpeg从视频流创建仅音频的曲目。
为此,请添加一个transcodeaction并在合并操作中包含新流:
"actions": [ { "type": "combine", "input": ["Nasa-audio-only", "Nasa-low", "Nasa-medium", "Nasa-high"], "output": "/msfc/nasa_mbr.m3u8" }, { "type": "transcode", "input": "Nasa-low", "output": { "audio": { "Nasa-audio-only": { "path": "Nasa-audio-only.m3u8", "audio-bitrate": 64000, "bitrate": 65000 } } } } ]
加密
如果在配置文件中设置encryption=true,则hlsclient将 使用随机AES-128密码自动加密所有流。
运行
要运行客户端,只需运行:
$ python -m hlsclient
运行测试
您需要安装ffmpeg和mediainfo。
$ ./runtests
ffmpeg安装
为了使用当前版本的hlsclient并支持转码, 必须与libaac和libx264一起安装ffmpeg下载它们并 像这样编译FFfmpeg:
libaac:
./configure && make && sudo make install
libx264:
./configure --enable-shared && make && sudo make install
ffmpeg:
./configure --enable-libx264 --enable-gpl --enable-libfaac --enable-nonfree --enable-shared && make && sudo make install
测试版本为:
- libaac:faac-1.28
- libx264:x264-snapshot-20121030-2245
- ffmpeg:n-46213-g976175f