Gstreamer警告Gstreamer严重**:_gst_util_uint64_scale_int:assertion';num>;=0';失败

Gstreamer警告Gstreamer严重**:_gst_util_uint64_scale_int:assertion';num>;=0';失败,gstreamer,Gstreamer,我开发了一个音频播放器,它使用以下Gstreamer管道: appsrc!马佩戈迪奥帕斯!队列疯狂的音量!音频转换!音频重采样!自动音频接收器 该应用程序运行良好。但是,有时它会通知一些恼人的警告消息,如下所示: GStreamer CRITICAL**:\u gst\u util\u uint64\u scale\u int:断言'num>=0'失败 xcb\u连接\u已\u错误()返回true 在我的应用程序中,我不调用gst\u util\u uint64\u scale\u int()。

我开发了一个音频播放器,它使用以下Gstreamer管道:

appsrc!马佩戈迪奥帕斯!队列疯狂的音量!音频转换!音频重采样!自动音频接收器

该应用程序运行良好。但是,有时它会通知一些恼人的警告消息,如下所示:

GStreamer CRITICAL**:\u gst\u util\u uint64\u scale\u int:断言'num>=0'失败 xcb\u连接\u已\u错误()返回true

在我的应用程序中,我不调用gst\u util\u uint64\u scale\u int()。 以下是我使用的Gstreamer和插件的版本: gstreamer1.0(1.8.3) gstreamer1.0-plugins-base(1.8.3) gstreamer1.0-plugins-good(1.8.3) gstreamer1.0-plugins-sugger(1.8.3) gstreamer1.0-alsa(1.8.3) gstreamer1.0-pulseaudio(1.8.3)

我已经花了很多时间来解决这个问题,但还没有找到原因。 如果有人知道这些警告信息的原因,请帮助

更新#2:当我设置GST_DEBUG=fatal_临界值并在GDB内运行我的播放器时,我得到以下堆栈跟踪:

[New Thread 0xaa01cb40 (LWP 22656)]
Thread 149 "source:src" received signal SIGTRAP, Trace/breakpoint trap.
[Switching to Thread 0xab82fb40 (LWP 22655)]
0xb7878749 in g_logv () from /lib/i386-linux-gnu/libglib-2.0.so.0
(gdb) backtrace
#0  0xb7878749 in g_logv () from /lib/i386-linux-gnu/libglib-2.0.so.0
#1  0xb7878805 in g_log () from /lib/i386-linux-gnu/libglib-2.0.so.0
#2  0xb7878839 in g_return_if_fail_warning () from /lib/i386-linux-gnu/libglib-2.0.so.0
#3  0xb7a53ed6 in ?? () from /usr/lib/i386-linux-gnu/libgstreamer-1.0.so.0
#4  0xb7545910 in gst_base_parse_push_frame () from /usr/lib/i386-linux-gnu/libgstbase-1.0.so.0
#5  0xb7549fbd in gst_base_parse_finish_frame () from /usr/lib/i386-linux-gnu/libgstbase-1.0.so.0
#6  0xb518158e in ?? () from /usr/lib/i386-linux-gnu/gstreamer-1.0/libgstaudioparsers.so
#7  0xb75419f5 in ?? () from /usr/lib/i386-linux-gnu/libgstbase-1.0.so.0
#8  0xb7546a67 in ?? () from /usr/lib/i386-linux-gnu/libgstbase-1.0.so.0
#9  0xb7a169df in ?? () from /usr/lib/i386-linux-gnu/libgstreamer-1.0.so.0
#10 0xb7a1e98c in gst_pad_push () from /usr/lib/i386-linux-gnu/libgstreamer-1.0.so.0
#11 0xb755f393 in ?? () from /usr/lib/i386-linux-gnu/libgstbase-1.0.so.0
#12 0xb7a497ca in ?? () from /usr/lib/i386-linux-gnu/libgstreamer-1.0.so.0
#13 0xb7a4a767 in ?? () from /usr/lib/i386-linux-gnu/libgstreamer-1.0.so.0
#14 0xb7899a64 in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0
#15 0xb789900a in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0
#16 0xb7814295 in start_thread (arg=0xab82fb40) at pthread_create.c:333
#17 0xb7d50eee in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:114
(gdb)

我可以解决“xcb_connection_has_error()返回true”的问题。这样的警告之所以会发生,是因为我在shell脚本中做了一个调用播放器的设置。下面是导致警告的设置:export DISPLAY=0:0您可以通过设置
G\u DEBUG=fatal\u criticals
来获得堆栈跟踪,因此在发生这种情况时,它将导致程序中断。在
gdb
中运行它,设置环境变量,并为gstreamer安装调试符号。通过这种方式,您可以确定是谁导致了断言以及断言发生的位置。@thiagoss:谢谢您的帮助。我可以像你说的那样得到堆栈跟踪。似乎此警告与mpegaudioparse有关。仅供参考,在播放了几首歌曲后,没有取消播放管道。这个警告发生了。问题解决了吗?@Sam:还没有。在播放2个音频文件后,我通过取消播放管道来解决问题。那么,就没有任何警告了。仅供参考,如果从管道中删除“mpegaudioparse”,则没有问题。但是,如果没有解析器,它就无法播放一些mp3流。我可以解决“xcb_connection_has_error()返回true”的问题。这样的警告之所以会发生,是因为我在shell脚本中做了一个调用播放器的设置。下面是导致警告的设置:export DISPLAY=0:0您可以通过设置
G\u DEBUG=fatal\u criticals
来获得堆栈跟踪,因此在发生这种情况时,它将导致程序中断。在
gdb
中运行它,设置环境变量,并为gstreamer安装调试符号。通过这种方式,您可以确定是谁导致了断言以及断言发生的位置。@thiagoss:谢谢您的帮助。我可以像你说的那样得到堆栈跟踪。似乎此警告与mpegaudioparse有关。仅供参考,在播放了几首歌曲后,没有取消播放管道。这个警告发生了。问题解决了吗?@Sam:还没有。在播放2个音频文件后,我通过取消播放管道来解决问题。那么,就没有任何警告了。仅供参考,如果从管道中删除“mpegaudioparse”,则没有问题。但是,如果没有解析器,它就无法播放一些mp3流。