本帖最后由 louis_lee 于 2023-3-15 16:31 编辑
感谢!我用了你提供的ffmpeg方法,好像还是只有第一个视频的片段,后边的被skip.
不过,@dscao大佬提供的链接,用ffmpeg搞成功了,哪天有时间再把代码做下完善,思路就是用ffmpeg将m3u8文件中每个视频单独转换,最后再合并。
step1: 将m3u8文件下wget保存到本地
EXTM3U
#EXT-X-VERSION:7
#EXT-X-ALLOW-CACHE:NO
#EXT-X-TARGETDURATION:35
#EXT-X-KEY:METHOD=AES-128,URI="XXX"",IV=0xXXXXX
#EXTINF:1.008
https://1
#EXT-X-DISCONTINUITY
#EXTINF:2.008
https://2
#EXT-X-DISCONTINUITY
#EXTINF:3.008
https://3
#EXT-X-DISCONTINUITY
#EXT-X-ENDLIST
然后再将这个文件头尾保留,按照3个片段切分成三个文件temp_{i}.mp4 i=1,2,3,如下所示:
EXTM3U
#EXT-X-VERSION:7
#EXT-X-ALLOW-CACHE:NO
#EXT-X-TARGETDURATION:35
#EXT-X-KEY:METHOD=AES-128,URI="XXX"",IV=0xXXXXX
#EXTINF:1.008
https://1
#EXT-X-DISCONTINUITY
#EXT-X-ENDLIST
然后对每个片段转换成mp4
ffmpeg -protocol_whilelist 'file,crypto,data,https,tls,tcl' -i temp_1.m3u8 temp_1.mp4
最后在合并起来
echo -e "file 'test_1.mp4'\nfile 'test_2.mp4'\nfile 'test_3.mp4'" > concat.list
ffmpeg -f concat -safe 0 -i concat.list -c copy output.mp4
经测试,结果可以包含原m3u8文件的所有视频片段!
|