我是靠谱客的博主 淡然大侠,最近开发中收集的这篇文章主要介绍解决python 中使用ffmpy3.FFmpeg下载m3u8转换为mp4过程中,CPU占用过高的问题,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
最近刚学习使用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温度正常,完毕。
最后
以上就是淡然大侠为你收集整理的解决python 中使用ffmpy3.FFmpeg下载m3u8转换为mp4过程中,CPU占用过高的问题的全部内容,希望文章能够帮你解决解决python 中使用ffmpy3.FFmpeg下载m3u8转换为mp4过程中,CPU占用过高的问题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复