gpt4 book ai didi

python - 如何在 Python 中访问 GStreamer 缓冲区的数据?

转载 作者:行者123 更新时间:2023-11-28 21:53:40 25 4
gpt4 key购买 nike

在旧的(pre-GObject-introspection)GStreamer 绑定(bind)中,可以通过 .data 属性或通过转换为 访问 gst.Buffer 数据>海峡。这不再可能了:

>>> p buf.data
*** AttributeError: 'Buffer' object has no attribute 'data'
>>> str(buf)
'<GstBuffer at 0x7fca2c7c2950>'

最佳答案

在最新版本中要访问Gst.Buffer 的内容,您必须首先map() 缓冲区以获取Gst.MapInfo,它具有 bytes 类型的 data 属性(Python 2 中的 str)。

(result, mapinfo) = buf.map(Gst.MapFlags.READ)
assert result

try:
# use mapinfo.data here
pass
finally:
buf.unmap(mapinfo)

您还可以使用 get_memory() 访问缓冲区的组成 Gst.Memory 元素,并单独映射它们。 (AFAICT,调用 Buffer.map() 等同于调用 .get_all_memory() 并映射生成的 Memory。)

不幸的是,写入这些缓冲区是不可能的,因为即使设置了 Gst.MapFlags.WRITE 标志,Python 也用不可变类型表示它们。相反,您必须执行一些操作,例如使用修改后的数据创建一个新的 Gst.Memory,并使用 Gst.Buffer.replace_all_memory()

关于python - 如何在 Python 中访问 GStreamer 缓冲区的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25773551/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com