我是靠谱客的博主 淡然大侠,最近开发中收集的这篇文章主要介绍解决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占用过高的问题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(79)

评论列表共有 0 条评论

立即
投稿
返回
顶部