M3U8合并软件,m3u8文件合并器
现在很多视频网站把整个视频文件拆分成视频流文件(ts),这些视频流文件的会放在一个文件里,通常叫做* .m3 U8。
如果要下载整个视频文件,可以先下载这些视频片段,然后拼接成一个大的视频文件。
想到的第一个想法就是用迅雷批量下载,如下图:
但是会有一个问题,因为下载完视频后会有视频合并,所以视频的文件名必须按照一定的顺序排序才能合并。事实是大部分文件名都是乱序的,限制了操作。不能一个一个去吧?
因为水平太差,想了两三天才想出一个好的解决办法,就是用python调用aria2下载(其实是花了两三天才找到用python调用aria2的方法,网上也没有教程。最后我去官方文档找到了教程,地址如下:https://aria 2 . github . io/manual/en/html/aria 2c . html)。教程提到:
这是python2的一个用例。我用python3。按照官方文档中的思路,我实际上是向‘http://localhost:6800/JSON RPC’发送请求。在python3中,它应该由requests.post()方法实现。但遗憾的是,官方文档并没有告诉你如何修改任务名称,只是教你如何新建一个任务。我们知道,aria2有一个webUI接口,http://aria2c.com/.在创建一个新任务时,我们通过捕获数据包发现了这样一个语句。此语句是post的数据:[{jsonrpc: 2.0 , method: aria2.adduri , id: 1, params :[ http://aria 2c . com/],{out:12.html , split:5 , max-connection-per-server:16 , seed-ratio : 0 }]]:
很熟悉,不是吗?还有一项 out: 12.html , split: 5 , max-connection-per-server: 16 , seed-ratio: 0 好看又懂事的荔枝!
我们就加上这句话就OK了!
这是我的代码。运行之前,请确保您的计算机安装了请求库和aria2:
#-*-编码:UTF-8-*- 创建于2018年3月14日15:09:14 @ author:y 导入请求导入JSON # M3U8文件路径=input(输入M3U8文件路径:)。replace ( ,/) print (path) file=open (path, r) operation=input(要加前缀吗?是/否 N’)。strip()pre _ link= if operation== y :pre _ link=input(请输入前缀:)。strip()links=[]for I in file:if # not in I:I=I . strip()links . append(pre _ link I)file . close()l=len(links)print(总共有%d段.% l)length=len(str(len(links)))N=0 txt= 对于链接中的链接:n=n1print (%d段剩余下载.%(l-n))iflen(str(n))length:name= 0 *(length-len(str(n))str(n)。ts else: name=str(n)。ts txt=txt file name n JSON req=JSON . dumps({ JSON RPC : 2.0 , id:1, method:aria2.addUri , params:[[link],{out:name, split:5 , max-connection-per-server:16 , seed-ratio : 0 }]})c=requests . post( http://localhost:6800/JSON RPC),JSON req)file=open( s
好懂事的荔枝!
代码https://github.com/xyy55/python/blob/master/python3/download _ video . py
生成的ts文件与ffmpeg合并,命令行输入为ffmpeg-fconcat-safe 0-ifilelist . txt-ccopy output . ts。
欲了解更多信息,请移至公主:YSTREAURE。