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


 

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

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

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

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

 

ffmpeg的下载、配置

下载

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

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

 

版本说明

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的常用命令

#合并ts文件,ts文件数量少、不需要key的时候可以用这种,
ffmpeg -i "1.ts|2.ts|3.ts|" -c copy xxx.mp4


#也可以根据文件中指定的ts文件位置进行合并,不需要key
ffmpeg -i index.m3u8 -c copy xxx.mp4


#需要key的要加上参数-allowed_extensions ALL
ffmpeg -allowed_extensions ALL -i index.m3u8 -c copy xxx.mp4


# -protocol_whitelist指定白名单协议,添加相应的协议即支持对应的文件来源
ffmpeg -allowed_extensions ALL -protocol_whitelist "file,http,https,tls,tcp,crypto" -i https://xxx/xxx/index.m3u8 -c copy xxx.mp4
  • 最后一种的参数是最全的,也是最常用的,支持本地、网络中的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。

  • 9
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: ffmpeg是一款功能强大的多媒体处理工具,它支持各种音视频格式的转换和处理。要实现自动下载m3u8视频合并ts格式,可以使用ffmpeg的命令行工具和一些脚本编程。 首先,需要编写一个脚本或程序来自动从指定的m3u8链接下载视频文件。可以使用编程语言(如Python)来实现这个脚本,使用HTTP请求库来获取m3u8文件的内容,并解析出各个ts分片的链接。 接下来,可以使用ffmpeg的命令行工具,利用解析到的ts分片链接来下载每个分片,并同时将它们合并为一个完整的ts视频文件。以下是示例的ffmpeg命令: ffmpeg -i "url_to_ts1" -c copy -bsf:a aac_adtstoasc output.ts 上述命令中,"url_to_ts1"表示第一个ts分片的链接,可以根据实际情况替换为对应的分片链接。"-c copy"表示复制原始编码格式,"-bsf:a aac_adtstoasc"用于修复aac音频流中的格式问题。"output.ts"表示最终生成的合并后的ts文件。 要实现自动下载合并多个ts分片,可以在脚本中使用循环来依次下载每个分片,并调用ffmpeg命令行工具来合并这些分片。 需要注意的是,m3u8文件通常是分段加载的,因此可能需要等待所有分片下载完成才能合并为完整的视频文件。可以在脚本中增加相应的等待时间或轮询机制,确保所有分片都已下载完成后再调用ffmpeg进行合并操作。 总之,通过编写脚本或程序,结合ffmpeg命令行工具,可以实现自动下载m3u8视频合并ts格式的功能。 ### 回答2: ffmpeg是一个开源的音视频处理工具,它可以用来处理各种格式的音视频文件。m3u8是一种常见的音视频流媒体播放列表格式,通常用于将一个音视频文件分割成多个小的ts文件,并通过HTTP协议进行传输和播放。 要使用ffmpeg自动下载m3u8合并ts文件,可以按照以下步骤进行操作: 1. 下载ffmpeg并安装到本地计算机上。 2. 在命令行中输入以下命令来下载m3u8文件: ```shell ffmpeg -i URL_OF_M3U8_FILE -c copy OUTPUT_FILENAME.ts ``` 其中,`URL_OF_M3U8_FILE`是m3u8文件的URL地址,`OUTPUT_FILENAME`是输出的ts文件名。 命令中的`-c copy`选项表示直接复制视频和音频流而不进行重新编码,以提高处理速度。 3. 执行命令后,ffmpeg将会自动下载m3u8文件,并将其合并为一个ts文件。合并过程可能需要一些时间,取决于m3u8文件的大小和网络状况。 4. 执行完成后,即可在当前目录下找到合并后的ts文件。 需要注意的是,以上命令仅适用于能够公开访问的m3u8文件。若m3u8文件需要身份验证或具有访问控制,请先确保具备合法的使用权限。 总之,使用ffmpeg自动下载m3u8合并ts文件,是一种便捷的处理方式,适用于需要分析或修改m3u8文件的情况。 ### 回答3: FFmpeg是一种强大的开源多媒体处理工具,它可以用于从网络上自动下载M3U8视频流,并将其合并TS格式。M3U8是一种常用的流媒体播放列表文件格式,常用于存储视频的分段URL链接。 要使用FFmpeg自动下载合并M3U8TS,我们可以使用以下命令行操作: 1. 首先,我们需要安装FFmpeg工具,并将其添加到系统路径中。 2. 然后,在命令行中输入以下命令: ``` ffmpeg -i [M3U8链接] -c copy -bsf:a aac_adtstoasc output.ts ``` 在此命令中,我们需要将[M3U8链接]替换为实际的M3U8文件的URL链接。该命令使用`-i`参数指定输入M3U8文件,`-c copy`参数用于复制视频和音频流,以保持原始质量,`-bsf:a aac_adtstoasc`参数用于处理AAC音频流的编码问题,`output.ts`为输出的合并后的TS文件名称。 3. 输入命令后,FFmpeg将自动开始下载M3U8文件并合并TS格式。下载进度将在命令行中显示。 4. 下载完成后,我们将在当前目录中找到生成的TS文件,这是M3U8下载合并的结果。 总结起来,FFmpeg利用其强大的功能,可以方便地自动下载合并M3U8视频流为TS格式。这在处理流媒体和视频下载方面非常有用,为用户提供了一种方便快捷的方法来获取他们所需的视频内容。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值