使用安卓UC浏览器可以缓存网路上的视频文件,在UCDownloads/VideoData/文件夹下,一般有一个m3u8文件和类似1674154522694这种数字文件夹,里面储存的是被分割的ts格式视频文件
打开m3u8文件,里面的内容是储存在安卓系统视频片段的绝对路径
#EXTM3U
#EXT-X-OLAYLIST-TYPE:VOD
#EXT-X-TARGENTDURATION:8
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:4
file://storage/emulated/0/UCDownloads/VideoData/1674154522694/0
#EXTINF:6
file://storage/emulated/0/UCDownloads/VideoData/1674154522694/1
#EXTINF:4
file://storage/emulated/0/UCDownloads/VideoData/1674154522694/2
#EXTINF:4
file://storage/emulated/0/UCDownloads/VideoData/1674154522694/3
#EXTINF:3
file://storage/emulated/0/UCDownloads/VideoData/1674154522694/4
#EXTINF:4
file://storage/emulated/0/UCDownloads/VideoData/1674154522694/5
#EXTINF:4
file://storage/emulated/0/UCDownloads/VideoData/1674154522694/6
#EXTINF:3
file://storage/emulated/0/UCDownloads/VideoData/1674154522694/7
我们需要将它们替换为电脑上储存文件的路径
替换后的m3u8文件
#EXTM3U
#EXT-X-OLAYLIST-TYPE:VOD
#EXT-X-TARGENTDURATION:8
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:4
D:\test\1674154522694/0
#EXTINF:6
D:\test\1674154522694/1
#EXTINF:4
D:\test\1674154522694/2
#EXTINF:4
D:\test\1674154522694/3
#EXTINF:3
D:\test\1674154522694/4
#EXTINF:4
D:\test\1674154522694/5
#EXTINF:4
D:\test\1674154522694/6
#EXTINF:3
D:\test\1674154522694/7
之后使用ffmpeg将m3u8文件生成视频
ffmpeg -allowed_extensions ALL -i D:\test\video.m3u8 -c copy video.mp4
-allowed_extensions ALL
由于FFmpeg任意文件读取漏洞,官方屏蔽掉了没有后缀名的ts文件,加上这个参数才可以正常读取本地的ts文件
[hls @ 000001b5aca53b40] Opening 'D:\test\1674154522694/464' for reading
[hls @ 000001b5aca53b40] Opening 'D:\test\1674154522694/465' for reading
[hls @ 000001b5aca53b40] Opening 'D:\test\1674154522694/466' for reading
[hls @ 000001b5aca53b40] Opening 'D:\test\1674154522694/467' for reading7.6kbits/s speed=45.1x
[hls @ 000001b5aca53b40] Opening 'D:\test\1674154522694/468' for reading
[hls @ 000001b5aca53b40] Opening 'D:\test\1674154522694/469' for reading
[hls @ 000001b5aca53b40] Opening 'D:\test\1674154522694/470' for reading
[hls @ 000001b5aca53b40] Opening 'D:\test\1674154522694/471' for reading
[hls @ 000001b5aca53b40] Opening 'D:\test\1674154522694/472' for reading
[hls @ 000001b5aca53b40] Opening 'D:\test\1674154522694/473' for reading
[hls @ 000001b5aca53b40] Opening 'D:\test\1674154522694/474' for reading
[hls @ 000001b5aca53b40] Opening 'D:\test\1674154522694/475' for reading
[hls @ 000001b5aca53b40] Opening 'D:\test\1674154522694/476' for reading5.4kbits/s speed=45.4x
[hls @ 000001b5aca53b40] Opening 'D:\test\1674154522694/477' for reading
[hls @ 000001b5aca53b40] Opening 'D:\test\1674154522694/478' for reading
frame=47915 fps=1143 q=-1.0 Lsize= 195290kB time=00:31:56.57 bitrate= 834.7kbits/s speed=45.7x
video:163681kB audio:30587kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.526372%