当前位置:   article > 正文

解决python 中使用ffmpy3.FFmpeg下载m3u8转换为mp4过程中,CPU占用过高的问题_ffmpeg解决cpu占用过高

ffmpeg解决cpu占用过高

最近刚学习使用python爬取网页中m3u8视频,下载转换为mp4格式,发现使用ffmpy3模块调用FFmpeg挺方便的,具体代码如下:

  1. from ffmpy3 import FFmpeg
  2. url = 'https://******/1/index.m3u8'
  3. title = 'python学习'
  4. ff = FFmpeg(inputs={url:None},
  5.             outputs={f'{title}.mp4': None})
  6.         print(ff.cmd)
  7.         ff.run()

但在实际使用中发现CPU占用过高,将近100%,温度达到90摄氏度,搜索后给的答案,应该是ffmpeg默认使用了和CPU核数一样的线程数,寻找限制线程数的代码:

FFmpeg限制CPU的使用率,使用“-threads 2” - yuanloo - 博客园 (cnblogs.com)

在cmd中使用的代码:

FFmpeg -i IN  –threads 2   OUT

体现在python中:

  1. from ffmpy3 import FFmpeg
  2. url = 'https://******/1/index.m3u8'
  3. title = 'python学习'
  4. ff = FFmpeg(inputs={url:'-threads 2'},
  5.             outputs={f'{title}.mp4': None})
  6.         print(ff.cmd)
  7.         ff.run()

CPU占用率确实有所下降,但加上电脑上其他正在使用的进程,CPU总占用率仍在80%以上,温度过高,线程限制为1:  –threads 1     ,依旧无法满足。

寻求其他解决办法,发现可以使用GPU硬解加速转码,具体内容参考以下文章:

(17条消息) FFMPEG 使用显卡加速转码_它山之石,可以攻玉的博客-CSDN博客_ffmpeg 显卡加速

安装CUDA驱动后,python代码如下:

  1. from ffmpy3 import FFmpeg
  2. url = 'https://******/1/index.m3u8'
  3. title = 'python学习'
  4. ff = FFmpeg(inputs={url:'-hwaccel cuvid -c:v h264_cuvid'},
  5.             outputs={f'{title}.mp4': '-c:v h264_nvenc'})
  6.         print(ff.cmd)
  7.         ff.run()

运行后发现GPU确实被调用,速度相较单纯使用CPU软解慢了一些,但此时CPU基本未占用,CPU温度正常,完毕。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/637456
推荐阅读
相关标签
  

闽ICP备14008679号