音频视频您现在的位置是:首页 > 工具箱 > 音频视频

如何使用FFmpeg将 .ts 文件格式合并转换成 MP4 文件格式?

<a href='mailto:'>微wx笑</a>的头像微wx笑 2021-04-05音频视频 5 0关键字: ts  TS流  文件格式  转换  MP4  m3u8  FFmpeg  

现在越来越多的视频网站采用 m3u8、TS流(.ts扩展名的文件)的技术实现方式,这样本地缓存或下载到本地的就是N多个扩展名为 .ts 的文件,这样就给本地播放带来了困难。如何将 .ts 文件格式转换成 MP4 文件格式呢?

现在越来越多的视频网站采用 m3u8、TS流(.ts扩展名的文件)的技术实现方式,这样本地缓存或下载到本地的就是N多个扩展名为 .ts 的文件,这样就给本地播放带来了困难。如何将 .ts 文件格式转换成 MP4 文件格式呢?KDA无知

TS是什么?

TS的全称则是Transport Stream,即传输流,DVD节目中的MPEG2格式,是MPEG2-PS,MPEG2-TS格式的特点就是要求从视频流的任一片段开始都是可以独立解码的,m3u8是一个TS切片列表文件,它记录视频的每个切片的时长与顺序 。现主流视频网站都采用这种模式。KDA无知

缘起

看到一个比较好的视频,希望下载到本地收藏,结果发现是采用 m3u8、TS流的方式,自己知道怎么编写一下下载工具,于是开始探寻将 .ts 文件格式转换成 MP4 文件格式的方法。经过一番搜索,发现其实实现方式都是基于 FFmpeg 实现的。KDA无知

高级方式

其实是对于大多数人来说这是最低级的方式,就是自己下载 FFmpeg(FFmpeg 是开源的)的源码,自己编译出 FFmpeg 的工具,然后进行文件格式转换。KDA无知

一般方式

去下载别人已经编译好的 FFmpeg 工具,然后通过命令进行文件格式转换。去这里下载针对不同操作系统的版本:http://ffmpeg.org/download.htmlKDA无知

image.pngKDA无知

命令

ffmpeg -i input.ts -c:v copy -c:a libfaac out.mp4
ffmpeg -i input.ts -c:v libx264 -crf 24 -c:a libfaac out.mp4
ffmpeg -allowed_extensions ALL -i "input.m3u8" -f mp4 -codec copy "output.mp4"

注意:如果.ts文件是经过加密的,那在视频网站上播放的时候,你会看到加载 index.m3u8 文件之后会加载一个 key.key 的文件,里面保存是的加密解密的密码,.ts文件通常是采用AES128加密,这是一种对称加密方式,对称加密也就是加密解密使用相同的密码,加密内容可还原。KDA无知

ffmpeg -allowed_extensions ALL -protocol_whitelist "file,http,crypto,tcp" -i index.m3u8 -c copy out.mp4

似乎如果.ts文件是加密的,那么就需要有m3u8文件才行,因为查看ffmpeg的帮助,发现参数-key需要二进制的值KDA无知

crypto AVOptions:
  -key               <binary>     ED....... AES encryption/decryption key
  -iv                <binary>     ED....... AES encryption/decryption initialization vector
  -decryption_key    <binary>     .D....... AES decryption key
  -decryption_iv     <binary>     .D....... AES decryption initialization vector
  -encryption_key    <binary>     E........ AES encryption key
  -encryption_iv     <binary>     E........ AES encryption initialization vector

解释:KDA无知

-i代表输入参数KDA无知

-c:v 是指video编码KDA无知

-c:a 是指audio编码KDA无知

-bsf bitstream filterKDA无知

-f format 文件格式KDA无知

-crf 画面质量KDA无知

在优先保证画面质量(也不太在乎转码时间)的情况下,使用-crf参数来控制转码是比较适宜的。这个参数的取值范围为0~51,其中0为无损模式,数值越大,画质越差,生成的文件却越小。从主观上讲,18~28是一个合理的范围。18被认为是视觉无损的(从技术角度上看当然还是有损的),它的输出视频质量和输入视频相当。通常的策略是,在保证可接受视频画质的前提下,选择一个最大的crf值——如果输出视频质量很好,那就尝试一个更大的值;如果看起来很糟,那就尝试一个小一点的值。KDA无知

2021-10-28新测可用的方法:

新建file.txt文档KDA无知

file 'E:\TS视频下载\沙丘\6.ts' 
file 'E:\TS视频下载\沙丘\8.ts' 
file 'E:\TS视频下载\沙丘\10.ts' 
file 'E:\TS视频下载\沙丘\12.ts' 
file 'E:\TS视频下载\沙丘\14.ts' 
file 'E:\TS视频下载\沙丘\16.ts' 
file 'E:\TS视频下载\沙丘\18.ts' 
file 'E:\TS视频下载\沙丘\20.ts'

注意ts文件列表前面的 file ,不加是不行的,后面可以只是文件名,不包含目录。KDA无知


KDA无知

执行ffmpeg命令KDA无知


KDA无知

# -safe 0: 防止Operation not permittedKDA无知

ffmpeg.exe -f concat -safe 0 -i file.txt -c copy out.mp4KDA无知

简单方式

最简单的方式是使用TS助手,使用它下载加轮换格式一步就搞定了。KDA无知

image.pngKDA无知


KDA无知

后面会补充TS助手的下载地址,以及详细的使用方法KDA无知


KDA无知

续:TS助手 v3.52 网站网页 .m3u8 .ts 视频下载工具神器 .ts文件合并转换MP4KDA无知


KDA无知

2022-12-11更新

ffmpeg.exe -f concat -safe 0 -i index.m3u8 -f mp4 -codec copy output.mp4

index.m3u8 文件格式KDA无知

file p00014.ts
file p00016.ts
file p00017.ts
file p00018.ts
file p00019.ts
file p00020.ts

如果ts文件内容为空或数据有错误,执行命令时会报错,删除对应的ts 行就可以了。KDA无知

2022-12-18更新

TS助手是使用 aria2 下载 ts 文件,但是由于有些服务器的原因,aria2 会下载失败,但是使用 wget 下载却正常。KDA无知


KDA无知

相关文章:KDA无知

如何通过注册表为文件(夹)添加右键菜单?KDA无知

本文由 微wx笑 创作,采用 署名-非商业性使用-相同方式共享 4.0 许可协议,转载请附上原文出处链接及本声明。
原文链接:https://www.ivu4e.cn/toolbox/media/2021-04-05/632.html

很赞哦! () 有话说 ()