m3u8格式的视频文件解析和拼接

某年月日回顾了一下亮剑的电视剧,想下载下来保存一份,发现做不到了已经。浏览器接收的都是一段一段的.ts文件和一个.m3u8格式文件。这个m3u8文件相当于ts分片文件的索引,好比一本书的目录部分。
好多年前,大约2015年前吧,记得视频文件都是一个超大文件,打开浏览器,缓冲条慢慢走,视频缓冲完成,基本就相当于下载完了,现在视频网站都改革了,都变成这种大的视频文件分成许多片,一般是ts扩展名的分片文件,然后观看的时候播放器也只需要加载一部分分片文件即可进行播放,免得下载完整的大文件给视频服务器造成太大压力;分片尤其在观看中途暂停续播的时候,直接从上次播放到的ts文件开始继续加载后面的ts文件即可,无需再从头加载完整大文件播放了。

通过查找资料发现,这些ts文件其实是可以拼接到一起组成一个大文件的,而且可以通过FFMPEG进行转码处理的。

总结起来分三步

1.得到视频的m3u8文件,下载到本地,进行解析

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:8
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:5.600000,
c9c3159408d000000.ts
#EXTINF:3.360000,
c9c3159408d000001.ts
#EXTINF:3.720000,
c9c3159408d000002.ts
#EXTINF:4.000000,
c9c3159408d000003.ts
.
.
.
#EXTINF:4.000000,
c9c3159408d000650.ts
#EXTINF:3.120000,
c9c3159408d000651.ts
#EXTINF:4.000000,
c9c3159408d000652.ts
#EXTINF:1.440000,
c9c3159408d000653.ts
#EXT-X-ENDLIST

2.解析m3u8文件将其中的ts文件组合完整的url全部下载到本地

拼接url路径,下载到本地文件夹。

3.将下载完毕的ts文件进行拼接,形成一个完整的大文件

将ts文件按顺序拼接成一个大的视频文件。
可以使用windows提供的命令行工具copy实现,也可以自己代码实现。

z:\DATA\liangjian>copy /B *.ts z:\tmp\liangjian.mp4

第三步完成后,使用支持的视频播放器即可播放了。
…如果需要转码处理,可以考虑用FFMPEG处理。暂时不讨论。
参考文章:https://www.jianshu.com/p/2a5403234b14

你可能感兴趣的:(Java,java,音视频)