2016-07-28 2 views
3

RTSPストリームを再生するために使用するカスタムGStreamerパイプラインを構築しました。同時に、このパイプラインを使用するために新しいGstPlayerを作成したいと思います。問題は、GstPlayerのパイプラインを設定する方法がないことです。関連する唯一の方法はgst_player_get_pipeline()です。GstPlayerのパイプラインをカスタマイズする方法がわかりません。 ?カスタムパイプラインをしたいですか、なぜ プレイヤーがplaybinを使用します。..GstPlayerパイプラインを設定するには?

GstElement *pipeline, *source, *filter, *sink; 

    // Create pipeline elements 
    pipeline = gst_pipeline_new ("vdi-pipeline"); 
    source = gst_element_factory_make ("rtspsrc", "vdi-source"); 
    filter = gst_element_factory_make ("decodebin", "vdi-filter"); 
    sink = gst_element_factory_make ("appsink", "vdi-sink"); 
    if (!source || !filter || !sink) 
    { 
    __android_log_print (ANDROID_LOG_ERROR, "Error", "A GstElement could not be created. Exiting."); 
    return; 
    } 

    // Add elements to pipeline 
    gst_bin_add_many (GST_BIN (pipeline), source, filter, sink, NULL); 

    // Link elements together 
    if (!gst_element_link_many (source, filter, sink, NULL)) { 
    __android_log_print (ANDROID_LOG_ERROR, "Warning", "Failed to link elements!"); 
    } 

答えて

0

しかし、あなたは、箱から出してGstPlayerを経由してRTSP再生することができます:。基本的な機能は、私は

私のパイプライン何かが欠けている必要がありどのような種類のURLを受け入れます...そして、それは再生されているものに応じてパイプラインを動的に作成します..

本当にプレインビンを使用できない場合、プレーヤー自身にパッチを当てるのはどうですか?私はそれがカスタムパイプラインのために意図されていないと思う..しかしあなたはそれをハックすることができますhere

これで、playbin ..の代わりにrtspsrcに新しいパッドと他のコールバックがフックされてしまいます。

他の方法がある - playbinがパイプラインを構築するとき、それは内部rtspsrcを使用しています - あなたは、パイプラインオブジェクトからこの要素を取得し、いくつかのパラメータを変更..しかし、再生中にパラメータを変更することは非常にトリッキーであるよう気をつけすることができ..

更新:

私は何とかappsinkを見落としていると思う..よく私はあなたがappsinkを使用するようにそれをオーバーライドするために、再生ビンのプロパティaudio-sinkまたはビデオシンクを設定することができると思います。

しかし、まだGstPlayerからplaybin要素を取り出したり、初期化時にplaybinパラメータを設定しなければなりません(この方法ではわかりません)。この場合、IRC(freenode、#gstreamer)正しい方向。

decodebinやplaybinを使用して独自のアプリケーションを作成し、appsink要素を渡す方がいいかもしれません。バッファを再生していないのにGstPlayerを使用したいのですがなぜですか?

HTH

+0

質問にカスタムパイプラインが必要な理由を指定する必要があります。ライブストリームから別の場所で処理するためにフレームを取得しようとしています。私は 'appink'要素をパイプラインのシンクとして使う必要があると信じています。ビデオが' gst_app_sink_pull_sample(appsink) 'を呼び出して現在のフレームを取得している間に、私が望む方法を処理できます。(私の場合、ビットマップを作成します)。 – MarkyDD

+0

@MarkyDDチェックの更新 – nayana

関連する問題