UDP 経由で gstreamer (Windows 内) を使用して、ネットワーク経由で h264 ビデオをストリーミングしようとしています。まず、このようなパイプラインを使用すると、すべて問題ないように見え、テスト パターンが表示されます。
videotestsrc、ffmpegcolorspace、x264enc、rtph264pay、rtph264depay、ffdec_h264、ffmpegcolorspace、autovideosink
ここで、このパイプラインをクライアント部分とサーバー部分に分割し、udpsink と udpsrc を使用して udp 経由でストリームを送信することにしました。
Server: videotestsrc, ffmpegcolorspace, x264enc, rtph264pay, udpsink
Client: udpsrc, rtph264depay, ffdec_h264, ffmpegcolorspace, autovideosink
サーバーでは、次のようなものを使用します。
source = gst_element_factory_make ("videotestsrc", "source");
ffmpegcolortoYUV = gst_element_factory_make ("ffmpegcolorspace", "ffmpegcolortoYUV");
encoder = gst_element_factory_make ("x264enc", "encoder");
rtppay = gst_element_factory_make ("rtph264pay", "rtppay");
udpsink = gst_element_factory_make ("udpsink", "sink");
g_object_set (source, "pattern", 0, NULL);
g_object_set( udpsink, "host", "127.0.0.1", NULL );
g_object_set( udpsink, "port", 5555, NULL );
次に、要素をパイプラインに追加して実行しますが、どこにもエラーはありません。UDP ポート 5555 を探すと、リッスンしていません!!!!
クライアント部分も実行されますが、サーバー側でリッスンしている UDP ポートがない場合は機能しません。
編集:実際、私は解決策に非常に近かった...クライアントを起動すると動作しますが、視覚化に問題があります...問題はx264enc構成だと思います。speed-preset や tune などの x264enc パラメータを変更する方法を知っている人はいますか??? GstX264EncPreset または GstX264EncTune をインスタンス化しようとしましたが、これらの構造体の宣言がありません。文字列の解析など、他の方法で x264enc をセットアップする方法を知っている人はいますか?