2016-08-08 208 views
0

私はローカルホスト上でUDPストリーミングをテストしようとしているが、それは何も表示されないです:Gstreamer:ローカルホスト上でUDP経由でデータを送信できないのはなぜですか?

videotestsrc(またはaudiotestsrcを) - > udpsink(ポート:5078、ホスト:127.0.0.1)

がここにありますコード:もう関係ありません:

EDIT

console_out_inf("TESTING", "Starting work with test elements"); 
gint port = 5078; 
// TEST PIPELINE OUT 
gst_bin_add_many(GST_BIN(GSD->pipetest_out), GSD->testsrc, GSD->udpsink, NULL); 
gchar* host = "127.0.0.1"; 
g_object_set(GSD->udpsink, "port", port, NULL); 
g_object_set(GSD->udpsink, "host", host, NULL); 
if (!gst_element_link(GSD->testsrc, GSD->udpsink)) 
    console_out_bad("STREAMING", "Error linking test udp elements -- SEND"); 
else 
    console_out_yes("STREAMING", "Correctly linked test udp elements -- SEND"); 

// TEST PIPELINE IN 
gst_bin_add_many(GST_BIN(GSD->pipetest_in), GSD->udpsrc, GSD->autovideosink, NULL); 

gst_element_set_state(GSD->udpsrc, GST_STATE_NULL); 
g_object_set(GSD->udpsrc, "port", port, NULL); 

if (!gst_element_link(GSD->udpsrc, GSD->autovideosink)) 
    console_out_bad("STREAMING", "Error linking test udp elements -- RECEIVE"); 
else 
    console_out_yes("STREAMING", "Correctly linked test udp elements -- RECEIVE"); 
// PLAY TEST PIPELINE OUT 
GstStateChangeReturn ret1; 
ret1 = gst_element_set_state(GSD->pipetest_out, GST_STATE_PLAYING); 
if (ret1 == GST_STATE_CHANGE_FAILURE) 
    console_out_bad("TESTING", "Failed playing pipetest out"); 
else 
    console_out_yes("TESTING", "Correctly played pipetest out"); 

// PLAY TEST PIPELINE IN 
GstStateChangeReturn ret2; 
ret2 = gst_element_set_state(GSD->pipetest_in, GST_STATE_PLAYING); 
if (ret2 == GST_STATE_CHANGE_FAILURE) 
    console_out_bad("TESTING", "Failed playing pipetest in"); 
else 
    console_out_yes("TESTING", "Correctly played pipetest in"); 

// PRINT PIPELINES 
GST_DEBUG_BIN_TO_DOT_FILE(GST_BIN(GSD->pipetest_out), GST_DEBUG_GRAPH_SHOW_ALL, "pipetest_out"); 
GST_DEBUG_BIN_TO_DOT_FILE(GST_BIN(GSD->pipetest_in), GST_DEBUG_GRAPH_SHOW_ALL, "pipetest_in"); 

これは、 "私自身のコンソール出力" です! udpsrc(ポート: IN

PIPELINE> udpsink(5078ホスト:127.0.0.1、ポート) - videotestsrc:すべては、罰金インスタンス化されたパイプラインが正しく構築された、まだ

とPIPELINE OUT :5078) - > autovideosink

autovideosinkに何も表示されません! netstat -aを調べると、そのようなポートでの接続は表示されません。

追加INFO:

  1. "GStreamerのデバッグ" で生成されたグラフはもちろんudpsinkに接続されている唯一のビデオ/オーディオtestsrc要素が含まれています。
  2. 初めてこのコードを実行すると、「Windowsファイアウォールウィンドウ」が表示されたので、何かが送受信されているようです。
  3. これは、Visual Studio 2013/Qt5内にあるプロジェクトでは、追加、それは問題ではありません

誰もが私が間違っているのか知っていますか?

答えて

0

このコードは問題はありませんが、投稿したコンソール出力には関係ありません。

は、コマンドラインGST-打ち上げで作品によってあなたのパイプライン部分をテストしてみてください。あなたはそれがコマンドラインミラーで働いていたら、UDPシンクにスワップ最初にしてfakesinkに接続

gst-launch-1.0 -e -v videotestsrc ! udpsink host="127.0.01" 

コード内のコマンド。

ホスト=「localhost」を、ホスト=「192.168.0.1」私は覚えていないことが、私はudpsinkはトラブルあなたはそれが関連していない何を意味するループバック

+0

への送信を持っているかもしれないと思うと、それを試してみてください私が投稿した出力?最初の行は、要素が正しく初期化されていることを示すためのものです(gst_element_factory_make(...) –

+0

)すべての関連するコードを見ることなく、正確性を確認するのは難しいです。 。 –

+0

あなたは正しいです!別のパイプラインでudpsinkを使用していたので、ピペット・スタウトをその内部で構築できませんでしたが、私の質問の後半は残っています:localhostでudpパケットを送信しています。 Thy @ thesombrerokid –

関連する問題