快捷搜索: 王者荣耀 脱发

ffmpeg的使用 | m3u8视频下载、合并


 

ffmpeg是一个十分强大的音视频处理工具,提供转码、播放等基础功能,功能十分全面、强大,但命令繁多复杂,通常不直接使用,而是集成在带GUI的视频处理软件中。

我用过一些m3u8的下载、合并工具,比如

    TS Master:界面复杂,不好用 TS助手:下载速度快,但有些情况下载合并不了,比如带有key的

推荐使用TS助手,TS助手下载、合并失败的再使用ffmpeg进行处理。

ffmpeg的下载、配置

下载

官方github只提供了源码,需要自行编译,BtbN提供了编译好的版本,可以在BtbN的github地址下载,也可以从ffmpeg官网链接进入BtbN

    github下载地址: 官网下载地址:

选择操作系统对应的任意一个版本下载即可

版本说明

1、GPL

GNU General Public License的缩写,GNU公共许可证,通常具有“传染性”,如果项目中集成了GPL协议的开源项目时,项目本身也会被感染成为GPL的开源项目,即需要将其开源、免费。 比如,我开发一个桌面exe程序时,需要引用某个GPL的开源的dll,那我开发的这个exe桌面程序也会变成GPL开源项目,我在项目发布时需要将其开源、免费,有义务且必须提供整个项目的源代码。

2、LGPL

GNU Lesser General Public License的缩写,GNU 宽松公共许可证,允许项目通过类库引用(link)的方式使用LGPL类库,项目可以作为商业软件进行发布、销售,发布时不需要开源、免费,但前提是不能修改引用的LGPL许可的软件部分。 开源免费的项目选GPL,不开源的项目选LGPL,相比于GPL而言,LGPL更灵活,开不开源均可。

3、-shared

ffmpeg的gpl、lgpl版本默认将共享的链接库集成到了exe中,bin中只有三个exe文件,这三个exe文件体积都很大; -shared没有将共享的链接库集成到exe中,bin中有一堆链接库,这些链接库可以被3个exe共用,3个exe的体积都很小,压缩包体积也比gpl、lgpl的小得多。

环境变量配置

bin下的三个exe

    ffmpeg 用于视频转码 ffplay 用于视频播放 ffprobe 用于获取音视频文件的信息

在PATH环境变量中添加bin目录,方便后续使用这些命令,主要是使用ffmpeg.exe。

ffmpeg处理m3u8 | ts的常用命令

    最后一种的参数是最全的,也是最常用的,支持本地、网络中的m3u8文件,支持需要key的、不需要key的 文件名不一定非要是index,文件后缀不一定非要是.m3u8,只要是文本文件,文件中包含了ts文件路径、所需key的路径的即可,路径支持相对路径、绝对路径、网络url,相对路径是相对于当前使用的m3u8文件 如果使用本地m3u8(文本)文件,可以复制index.m3u8来改其中的ts、key的路径 报错 Protocol ‘xxx’ not on whitelist ‘file,http,https,tls,tcp’! ,说明缺少该种协议设置,加到 whitelist 列表中即可

ffmpeg合并ts文件快,但使用网络中的m3u8 url地址时,会先下载所需的ts文件,ffmpeg不是专业的下载软件,下载速度慢,下载包含了大量ts的视频尤其慢。

嫌慢的可以下载m3u8到本地,获取其中的ts路径列表、key路径,转换为网络url,使用迅雷任务组进行下载到本地,修改m3u8中的路径,使用本地m3u8文件进行ts合并。

有的网站编码ts时使用了key,解码ts进行合并时自然也需要使用key,key文件的路径在m3u8文件中。有的网站编码时没有使用key,解码合并ts时自然也就不需要key。

经验分享 程序员 微信小程序 职场和发展