首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未解码视频的pyav / ffmpeg / libav访问侧数据

未解码视频的pyav / ffmpeg / libav访问侧数据
EN

Stack Overflow用户
提问于 2021-06-03 20:09:52
回答 1查看 633关注 0票数 2

现在,我以以下方式访问运动矢量:

代码语言:javascript
复制
container = av.open(
    rtsp_url, 'r',
    options={
        'rtsp_transport': 'tcp',
        'stimeout': '5000000',  
        'max_delay': '5000000', 
    }
)
stream = container.streams.video[0]
codec_context = stream.codec_context
codec_context.export_mvs = True


for packet in container.demux(video=0):
    for video_frame in packet.decode():
        motion_vectors_raw = video_frame.side_data.get('MOTION_VECTORS')

在我看来,这确实是对video_frame的解码。有没有一种不需要解码整个帧就能获得运动矢量的方法?我的目标是降低CPU利用率。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-19 05:50:47

首先,我只找到了关于这个问题的评论:

没有解决方案- Reddit

复杂,但并非不可能-堆栈溢出

2016年在ffmpeg中实现这一目标的想法-邮件列表

大多数(如果不是所有的话)工作方法都是基于"ffmpeg“的,这需要在侧数据可用之前进行帧解码。

另一种方法可以是在编码hw加速时获得运动矢量,例如在Raspberry Pi上:

MMAL编码器的运动矢量

但是,谷歌搜索"h264运动矢量压缩域“提供了不少关于该主题的研究论文,其中提取运动矢量以提高某些分析目标的性能,例如:

2009年,Szczerba,“用于视频监控应用的H.264视频流中的快速压缩域运动检测”

2009年,Solana-Cipres,“基于近似推理的H.264压缩域实时运动目标分割”

2014年,Patel,“H.264视频监控应用压缩域中的运动检测和分割”

2004,Babu,“视频对象分割-压缩域方法”

2014年,Babu,“压缩域视频分析技术综述”

没有真正的解决方案,也没有解码的提示,只有概念和评估。

因此,如果您想通过使用Python解析压缩的H 264视频来获得运动矢量,您可以从以下几个方面开始:

H264 - Spec

H.264和MPEG4视频压缩-图书

https://github.com/beardypig/pymp4

https://github.com/alastairmccormack/pymp4parse

https://github.com/halochou/py-h264-decoder

https://github.com/slhck/h26x-extractor

https://code.google.com/archive/p/py264/

我认为现在还没有现成的解决方案!

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67828088

复制
相关文章

相似问题

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