首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在pyav python中读取视频流字节时是否存在硬件解码或编码?

在pyav python中读取视频流字节时是否存在硬件解码或编码?
EN

Stack Overflow用户
提问于 2022-03-19 06:23:27
回答 1查看 500关注 0票数 1

我有一个python脚本,用于使用pyav包读取视频字节,如下所示。当我使用这段代码时,我发现使用大量的CPU RAM来读取一个长流的视频字节,并使所有内核都很忙(高CPU使用率)。但在我的项目中,我希望以较低的CPU使用率实时处理它们,因此我想知道在pyav(即基于GPU而不是基于CPU的)中,是否有任何用于读取流的硬件编码或硬件解码?

代码语言:javascript
运行
复制
    def _get_video_stream_info(self, video_bytes):
        stream_options = [{'codec': 'h264'}]

        self.container = av.open(video_bytes, stream_options=stream_options)

        video_stream = [s for s in self.container.streams if s.type == "video"][0]

        fps = int(video_stream.average_rate)
        total_frames = video_stream.frames
        logger.info(f'[INFO] FPS video straem = {fps}')
        logger.info(f'[INFO] Total frames video straem = {total_frames}')

        num_split_frames = self.duration_split * fps

        packet_list = []
        for packet in self.container.demux(video_stream):
            packet_list.append(packet)

        return packet_list
EN

Stack Overflow用户

发布于 2022-03-20 20:28:36

根据您的需要调整这个示例,您需要创建一个Codec上下文,下面是Nvidia cuda

代码语言:javascript
运行
复制
import av

video = av.open(VIDEO_FILE_PATH)
target_stream = video.streams.video[0]
ctx = av.Codec('h264_cuvid', 'r').create()
for packet in 
    video.demux(target_stream):
    for frame in ctx.decode(packet):
        print(frame)
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71535857

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档