现在,我以以下方式访问运动矢量:
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利用率。
发布于 2021-06-19 05:50:47
首先,我只找到了关于这个问题的评论:
大多数(如果不是所有的话)工作方法都是基于"ffmpeg“的,这需要在侧数据可用之前进行帧解码。
另一种方法可以是在编码hw加速时获得运动矢量,例如在Raspberry Pi上:
但是,谷歌搜索"h264运动矢量压缩域“提供了不少关于该主题的研究论文,其中提取运动矢量以提高某些分析目标的性能,例如:
2009年,Szczerba,“用于视频监控应用的H.264视频流中的快速压缩域运动检测”
2009年,Solana-Cipres,“基于近似推理的H.264压缩域实时运动目标分割”
2014年,Patel,“H.264视频监控应用压缩域中的运动检测和分割”
没有真正的解决方案,也没有解码的提示,只有概念和评估。
因此,如果您想通过使用Python解析压缩的H 264视频来获得运动矢量,您可以从以下几个方面开始:
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/
我认为现在还没有现成的解决方案!
https://stackoverflow.com/questions/67828088
复制相似问题