赞
踩
最近刚学习使用python爬取网页中m3u8视频,下载转换为mp4格式,发现使用ffmpy3模块调用FFmpeg挺方便的,具体代码如下:
- from ffmpy3 import FFmpeg
-
- url = 'https://******/1/index.m3u8'
- title = 'python学习'
-
- ff = FFmpeg(inputs={url:None},
-
- outputs={f'{title}.mp4': None})
-
- print(ff.cmd)
-
- ff.run()
-
-
但在实际使用中发现CPU占用过高,将近100%,温度达到90摄氏度,搜索后给的答案,应该是ffmpeg默认使用了和CPU核数一样的线程数,寻找限制线程数的代码:
FFmpeg限制CPU的使用率,使用“-threads 2” - yuanloo - 博客园 (cnblogs.com)
在cmd中使用的代码:
FFmpeg -i IN –threads 2 OUT
体现在python中:
- from ffmpy3 import FFmpeg
-
- url = 'https://******/1/index.m3u8'
- title = 'python学习'
-
- ff = FFmpeg(inputs={url:'-threads 2'},
-
- outputs={f'{title}.mp4': None})
-
- print(ff.cmd)
-
- ff.run()
CPU占用率确实有所下降,但加上电脑上其他正在使用的进程,CPU总占用率仍在80%以上,温度过高,线程限制为1: –threads 1 ,依旧无法满足。
寻求其他解决办法,发现可以使用GPU硬解加速转码,具体内容参考以下文章:
(17条消息) FFMPEG 使用显卡加速转码_它山之石,可以攻玉的博客-CSDN博客_ffmpeg 显卡加速
安装CUDA驱动后,python代码如下:
- from ffmpy3 import FFmpeg
-
- url = 'https://******/1/index.m3u8'
- title = 'python学习'
-
- ff = FFmpeg(inputs={url:'-hwaccel cuvid -c:v h264_cuvid'},
-
- outputs={f'{title}.mp4': '-c:v h264_nvenc'})
-
- print(ff.cmd)
-
- ff.run()
运行后发现GPU确实被调用,速度相较单纯使用CPU软解慢了一些,但此时CPU基本未占用,CPU温度正常,完毕。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。