gstreamer正确的结束办法

简介: gstreamer正确的结束办法

原来的方案:


gboolean callback_bus_call (GstBus * bus, GstMessage * msg, gpointer data)
{
    ......
    gst_element_set_state(pipeline, GST_STATE_NULL);
    g_main_loop_quit(loop);
    return true;
}
int main_thread()
{
    ......
    GstBus* bus = gst_pipeline_get_bus(GST_PIPELINE(pipeline));
    guint bus_watch_id = gst_bus_add_watch(bus, callback_bus_call, pTask);
    gst_object_unref(bus);
    ......
    g_main_loop_run (loop);
}


 试图在callbak_bus_call()中得到出错和结束消息,然后再退出.结果发现要么无法退出,要么直接崩溃.



 以下是正确办法:


int main_thread()
{
......
    //阻塞,直到收到指定的消息
    GstBus* bus = gst_element_get_bus(pipeline);
    GstMessage* msg = gst_bus_timed_pop_filtered (bus, GST_CLOCK_TIME_NONE, (GstMessageType)(GST_MESSAGE_ERROR | GST_MESSAGE_EOS));
    if (msg != NULL)
    {
        gst_message_unref(msg);
    }
    gst_object_unref (bus);
    gst_element_set_state(pipeline, GST_STATE_NULL);
    gst_object_unref(pipeline);
......
}

 

目录
相关文章
|
6月前
USRP相关报错解决办法
USRP相关报错解决办法
104 1
|
30天前
|
Linux API 开发工具
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
ijkplayer是由B站研发的移动端播放器,基于FFmpeg 3.4,支持Android和iOS。其源码托管于GitHub,截至2024年9月15日,获得了3.24万星标和0.81万分支,尽管已停止更新6年。本文档介绍了如何在Linux环境下编译ijkplayer的so库,以便在较新的开发环境中使用。首先需安装编译工具并调整/tmp分区大小,接着下载并安装Android SDK和NDK,最后下载ijkplayer源码并编译。详细步骤包括环境准备、工具安装及库编译等。更多FFmpeg开发知识可参考相关书籍。
82 0
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
|
6月前
|
编解码 并行计算 JavaScript
Nodejs 第十六章(ffmpeg)
Nodejs 第十六章(ffmpeg)
155 0
|
6月前
|
Android开发 数据安全/隐私保护
安卓逆向 -- Jeb动态调试
安卓逆向 -- Jeb动态调试
86 1
|
6月前
|
安全 Android开发 数据安全/隐私保护
安卓逆向 -- SO文件逆向分析
安卓逆向 -- SO文件逆向分析
82 0
|
安全 JavaScript Shell
Frida-Dexdump 脱壳工具下载使用以及相关技术介绍
Spider、App逆向,本案例使用的App是:引力播.apk,涉及到查壳、脱壳、反编译;
3255 0
Frida-Dexdump 脱壳工具下载使用以及相关技术介绍
|
Linux Apache Windows
Linux安装及管理程序:rpm软件包、源代码安装( 时间最美的地方,就是让你我成为了我们)(二)
Linux安装及管理程序:rpm软件包、源代码安装( 时间最美的地方,就是让你我成为了我们)(二)
143 0
Linux安装及管理程序:rpm软件包、源代码安装( 时间最美的地方,就是让你我成为了我们)(二)
|
Ubuntu Linux Shell
Linux安装及管理程序:rpm软件包、源代码安装( 时间最美的地方,就是让你我成为了我们)(一)
Linux安装及管理程序:rpm软件包、源代码安装( 时间最美的地方,就是让你我成为了我们)(一)
414 0
Linux安装及管理程序:rpm软件包、源代码安装( 时间最美的地方,就是让你我成为了我们)(一)
|
Linux
LINUX编译时缺少头文件,查找依赖库的终极解决办法
LINUX编译时缺少头文件,查找依赖库的终极解决办法
420 0
gstreamer/deepstream崩溃记录及分析
gstreamer/deepstream崩溃记录及分析
185 0