如何使用gstreamer保存当前文件?

时间:2014-03-07 03:59:06

标签: c media gstreamer

    _loop = g_main_loop_new(NULL, FALSE);
    _pipeline = gst_element_factory_make("playbin", "player");

    g_object_set(G_OBJECT(_pipeline), "uri", "localhost/exampleFile.mp3", NULL);

    _bus = gst_pipeline_get_bus(GST_PIPELINE(_pipeline));
    gst_bus_add_watch(_bus, busCall, NULL);
    gst_object_unref(_bus);

    gst_element_set_state(GST_ELEMENT(_pipeline), GST_STATE_PLAYING);

    g_main_loop_run(_loop);

    gst_element_set_state(GST_ELEMENT(_pipeline), GST_STATE_NULL);
    gst_object_unref(GST_OBJECT(_pipeline));

我可以通过此代码播放任何文件,但我需要将当前正在播放的文件保存到我的硬盘中。 我找不到一个允许我这样做的例子。有一个带音频接收器和视频接收器的变体,但我不知道如何将它们联合起来。很高兴看到一个允许它实现的工作示例。

1 个答案:

答案 0 :(得分:0)

您可能正在寻找filesink元素。

g_object_set(G_OBJECT(_your_filesink_element), "location", "/home/yourlocation/file3.mp3", NULL);

这意味着直接将其与来源4相关联,通过单独的pipeline或使用queue正确保存。