Gstreamer 如何检查元素的接收器板是否正在接收数据?

Gstreamer 如何检查元素的接收器板是否正在接收数据?,gstreamer,pad,Gstreamer,Pad,我想知道如何检查gstreamer中元素的接收器垫是否正在获取数据 如果它没有得到数据,我想重置或重新启动管道 有人能告诉我如何重置或重新启动管道吗?当重新启动管道时会发生什么?以及如何知道pad的传入数据?您可能想将您的帖子分成两个独立的问题。至于重新启动管道,您可以将状态设置为NULL,然后返回到播放状态,但我建议重新启动整个过程,因为有太多元素无法正确清理 要检测缓冲区是否进入,您可以在管道的所需位置添加identity元素,并像这样在其上注册回调。然后在主线程中验证更新时间是否在所需范围

我想知道如何检查gstreamer中元素的接收器垫是否正在获取数据

如果它没有得到数据,我想重置或重新启动管道


有人能告诉我如何重置或重新启动管道吗?当重新启动管道时会发生什么?以及如何知道pad的传入数据?

您可能想将您的帖子分成两个独立的问题。至于重新启动管道,您可以将状态设置为NULL,然后返回到播放状态,但我建议重新启动整个过程,因为有太多元素无法正确清理

要检测缓冲区是否进入,您可以在管道的所需位置添加
identity
元素,并像这样在其上注册回调。然后在主线程中验证更新时间是否在所需范围内。可能使用
g\u timeout\u add()

每秒超时检查一次:

gboolean check_status(gpointer user_data) {
    //check if data is coming in and exit system if it's not
}

g_timeout_add(1000, check_status, some_useful_pointer);

你可能想把你的帖子分成两个独立的问题。至于重新启动管道,您可以将状态设置为NULL,然后返回到播放状态,但我建议重新启动整个过程,因为有太多元素无法正确清理

要检测缓冲区是否进入,您可以在管道的所需位置添加
identity
元素,并像这样在其上注册回调。然后在主线程中验证更新时间是否在所需范围内。可能使用
g\u timeout\u add()

每秒超时检查一次:

gboolean check_status(gpointer user_data) {
    //check if data is coming in and exit system if it's not
}

g_timeout_add(1000, check_status, some_useful_pointer);