我有一个ofPtr(共享指针)项向量,指向包含视频的对象,形式为ofVideoPlayer个对象。当视频完成播放('dead'变量设置为true)时,我通过调用向量上的erase()
删除它们及其引用。
vector<ofPtr<videoElement> >::iterator iter = videos.begin();
while (iter != videos.end()) {
(**iter).update();
if ((**iter).dead) {
iter = videos.erase(iter);
} else {
++iter;
}
}
程序运行正常(或似乎),但每次调用擦除函数时,我都会得到此输出:
GStreamer-CRITICAL **:gst_mini_object_unref:断言 `GST_IS_MINI_OBJECT(mini_object)'失败
当我用videos.clear()
一次清除整个矢量时,我似乎没有获得这些输出行,如果这是gstreamer或指针问题,这会让我感到困惑。
另外,我尝试过使用不同的视频文件和不同的编解码器(H264,动画,photoJPEG),但都显示相同的输出行。
由于输出线尚未导致任何实际问题,我不太关心,但我想了解它的来源。
系统: Linux,Ubuntu 12.04,带有代码块的Openframeworks(of_v0.8.0_linux64_release)
答案 0 :(得分:0)
GStreamer中存在一个与此相关的已知错误,理论上应该通过安装gstreamer0.10-ffmpeg
来解决。
答案 1 :(得分:0)
与gstreamer0.10-ffmpeg
无关。通常,此错误是由您实际上不拥有的对象上调用xxx_unref(some_obj)
引起的,并且该调用最终将调用gst_mini_object_unref()
来解构对象的组件。万一有人仍然被这个错误困扰...