ffmpeg将m3u8转换成mp4
有两种方法可以实现,
第一种:直接使用ffmpeg转成mp4 (缺点:ffmpeg下载m3u8太慢了)
第二种:自行下载m3u8到本地,然后由ffmpeg转,下载ts的时候可以使用多线程,速度大大的提升了。
一、直接使用ffmpeg转mp4 缺点:慢
命令:
ffmpeg -y -allowed_extensions ALL -protocol_whitelist "file,crypto,http,https,tcp" -i "https://xxx/xxx.m3u8" -c copy "./output.mp4"
- -y 如果遇到文件覆盖或者其他需要确认的地方会自动帮你确认
- -allowed_extensions ALL 允许所有文件扩展名
- -protocol_whitelist "file,crypto,http,https,tcp" 允许你指定哪些协议可以被用于输入或输出操作
file - 本地文件系统
crypto - 加密协议
http - 超文本传输协议
https - 安全超文本传输协议
tcp - 传输控制协议
udp - 用户数据报协议
rtsp - 实时流协议
rtmp - 实时消息传输协议
srt - 安全可靠传输协议 - -i "https://xxx/xxx.m3u8" m3u8地址,即输入来源地址
- -c copy 对编码不做任何修改,直接复刻过来
- "./output.mp4" 本地保存路径
二、自己下载m3u8的TS切片,然后本地转换
下载m3u8的切片就不详说了,主要原理就是打开.m3u8文件,解析ts和key的路径,保存在本地目录中。
注意:保存本地的时候,修改m3u8中的key和ts的路径!!!
使用本地转换命令:
ffmpeg -y -allowed_extensions ALL -protocol_whitelist "file,crypto" -i "/root/index.m3u8" -c copy "/root/index.mp4"
-protocol_whitelist 就只需要设置file和crypto,本地目录不需要http和tcp