2016-06-24 20 views
1

最新のGstreamer Libs 1.8.0を使ってスタティックバイナリをコンパイルしようとしました。私はRTSPストリームを取り込み、ファイルに入れたいと思っています。パイプラインは次のとおりです。ソースはSDPデータとRTSPであるためhttp://pastebin.com/Ln06d0iPGstreamerいいえRTP

- 私は必要はありません。

rtpbasedepayload gstrtpbasedepayload.c:484:gst_rtp_base_depayload_handle_buffer:[00m error: No RTP format was negotiated.

int main(int argc, char *argv[]) { 
    GstElement *pipeline; 
    GstBus *bus; 
    GstStateChangeReturn ret; 
    GMainLoop *main_loop; 
    CustomData data; 

    /* Initialize GStreamer */ 
    gst_init (&argc, &argv); 
    registerGstStaticPlugins(); 

    /* Initialize our data structure */ 
    memset (&data, 0, sizeof (data)); 

    /* Build the pipeline */ 

    pipeline = gst_parse_launch ("rtspsrc location=rtsp://X.X.X.X/ protocols=GST_RTSP_LOWER_TRANS_TCP ! queue ! rtph264depay ! h264parse ! flvmux name=\"mux\" streamable=\"true\" ! fakesink", NULL); 

    bus = gst_element_get_bus (pipeline); 

    /* Start playing */ 
    ret = gst_element_set_state (pipeline, GST_STATE_PLAYING); 
    if (ret == GST_STATE_CHANGE_FAILURE) { 
    g_printerr ("Unable to set the pipeline to the playing state.\n"); 
    gst_object_unref (pipeline); 
    return -1; 
    } else if (ret == GST_STATE_CHANGE_NO_PREROLL) { 
    data.is_live = TRUE; 
    } 

    main_loop = g_main_loop_new (NULL, FALSE); 
    data.loop = main_loop; 
    data.pipeline = pipeline; 

    gst_bus_add_signal_watch (bus); 
    g_signal_connect (bus, "message", G_CALLBACK (cb_message), &data); 

    g_main_loop_run (main_loop); 

    /* Free resources */ 
    g_main_loop_unref (main_loop); 
    gst_object_unref (bus); 
    gst_element_set_state (pipeline, GST_STATE_NULL); 
    gst_object_unref (pipeline); 
    return 0; 
} 

コンプリート出力:

rtspsrc location=rtsp://X.X.X.X/ protocols=GST_RTSP_LOWER_TRANS_TCP ! queue ! rtph264depay ! h264parse ! flvmux name=\"mux\" streamable=\"true\" ! fakesink 

は、コンパイルエラーにバイナリ結果を実行します手動でキャップを設定します。 Gstreamer 0.10を使用してこのパイプラインを実行すると面白いことです。

+0

興味深い - 共有モジュールを使用しています。エラーは、静的にリンクされている場合にのみ表示されます。 –

答えて

0

自分で修正しました。 Gstreamerはプラグインをパイプラインで直接使用しないと、プラグインの不足について不平を言っていません。プラグインudpとrtpmanagerの静的登録が問題を解決しました。

関連する問題