python多线程下载m3u8,解密并使用ffmpeg合并ts(解决命令调用ffmpeg报错乱码)

阅读: 评论:0

python多线程下载m3u8,解密并使用ffmpeg合并ts(解决命令调用ffmpeg报错乱码)

python多线程下载m3u8,解密并使用ffmpeg合并ts(解决命令调用ffmpeg报错乱码)

python调用ffmpeg报错
原本我已经安装ffmpeg并且配置环境变量,可以在命令行使用命令但是在pycharm中通过python调用

command = 'ffmpeg -y -f concat -i %s -crf 18 -ar 48000 -vcodec libx264 -c:a aac -r 25 -g 25 -keyint_min 25 -strict -2 %s' % (concatfile, path)
os.system(command)

却还是报错“‘ffmpeg’ �����ڲ����ⲿ���Ҳ���ǿ����еij���
���������ļ���” 应该是报的“‘ffmpeg’ 不是内部或外部命令,也不是可运行的程序或批处理文件。”错误
修改为:

command = 'E:/utils/ffmpeg/bin/ffmpeg -y -f concat -i %s -crf 18 -ar 48000 -vcodec libx264 -c:a aac -r 25 -g 25 -keyint_min 25 -strict -2 %s' % (concatfile, path)
os.system(command)

解决报错问题,由此看来需要添加完整路径

1.获取m3u8文件,读出ts链接,并写入文档

def down():# m3u8链接url = '.m3u8'# 当ts文件链接不完整时,需拼凑# 大部分网站可使用该方法拼接,部分特殊网站需单独拼接base_url = re.split(r"[a-zA-Z0-9-_.]+.m3u8", url)[0]# print(base_url)resp = (url)m3u8_text = # print(m3u8_text)# 按行拆分m3u8文档ts_queue = Queue(10000)lines = m3u8_text.split('n')# 找到文档中含有ts字段的行concatfile = 'cache/' + "s" + '.txt'for line in lines:# 匹配keyif '.key' in line:k = repile(r""(.*?)"") # key的正则匹配if 'http' in line:key_url = k.findall(line)[0]# key的urlprint("key1>>", key_url)else:key_url = base_url + k.findall(line)[0]# key的urlprint('key2>>',key_url)global key_datakey_data&#(key_url).contentprint('key_data>>',key_data)# 匹配ts。。。。。。。。。。。。。。。。return ts_queue,concatfile

2.线程模式,执行线程下载

# 线程模式,执行线程下载
def run(ts_queue):tt_name = threading.current_thread().getName()while not pty():url = ()ts = (url).content。。。。。。。。filename = re.search('([a-zA-Z0-9-]+.ts)', url).group(1).strip()if len(key_data): # AES 解密cryptor = w(key_data, AES.MODE_CBC, key_data)with open('cache/' + filename, 'wb') as f:f.write(cryptor.decrypt(ts))print(tt_name + " " + filename + ' 解密下载成功')else:with open('cache/' + filename, 'wb') as f:f.write(ts)print(tt_name + " " + filename + ' 下载成功')

3.添加线程

 for i in range(15):t = threading.Thread(target=run, name='th-'+str(i), kwargs={'ts_queue': s})threads.append(t)

这是运行效果,ts合并的MP4文件已框出

本文发布于:2024-02-02 08:10:50,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170683264942496.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:乱码   报错   多线程   命令   python
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23