这种事时时刻刻都会发生。函数返回一个我无法读取的对象。在此:
discoverer = GstPbutils.Discoverer()
discoverer.connect('discovered', on_discovered)
info = discoverer.discover_uri(self.loaded_file)
print(vinfo.get_tags())返回以下内容:
<Gst.TagList object at 0x7f00a360c0a8 (GstTagList at 0x7f00880024a0)>但当我尝试这样做时:
tags = vinfo.get_tags()
for tag in tags:
print (tag)我明白了:
TypeError: 'TagList' object is not iterable但当我读到这个数据结构的文档的时候,我似乎明白它是.名单?除了告诉我如何获取标签之外,还能有人告诉我如何阅读那些文档吗?另外,我是否缺少一些内省方法和工具,可以用来发现我遇到的对象是什么,以及它们是如何工作的?
发布于 2016-06-30 10:35:26
这都是假设的,因为我从未在GStreamer中使用过python:
根据文件-是的,据说它的清单..。但这可以表示为内部结构。记住蟒蛇绑定只是..。绑定-所有的工作方式(如果不是以更好的方式实现)类似于C。你在C使用标记来迭代它们。做什么..。但是不要问我是怎么发现的--你必须环顾一下文档,检查所有可用的函数。
你必须明智地考虑一下你所使用的对象是如何实现的--同时你也知道它代表了什么。我的意思是-当每个标签有不同的类型时,这是标签的列表-一个是字符串,另一个是int等等。你不可能轻易地重复这一点。
所以我想你有两种选择--根据你想对标签做什么..。
1,序列化为string并使用该字符串:
我不确定,但是在C中有字符串,它可以做与python中的字符串相同的事情--所以,如果您只对标签名感兴趣,那么就试试吧。或者它回来的任何东西。
2 .使用内置前程及其回调定义:
tags = vinfo.get_tags()
tags.foreach(my_callback, self)在你的回访中:
def my_callback(list, tag, user_data):
print(tag)
#do whatever you want with list
#not sure how to use casting in python:
YourClass ptr = user_data
ptr.your_method(whatever, tag);https://stackoverflow.com/questions/38090102
复制相似问题