rtsp/h264/mjpegサーバを作成しました。それはうまくいく。しかし、今私はそれぞれの新しい接続クライアントのクエリを取得する必要があります。 RTSP://192.116.10.20:たとえば、私は、クライアントのクエリから要求された解像度を取得する必要がありますか?8554 /ストリームを幅= 1920 &高さ= 1280新しいクライアントごとにGStreamerとURIクエリパラメータを抽出する
私は、次のコードを使用してそれを行うにしようと試みています
....
gulong clientConnectedConfigureId = g_signal_connect(m_server, "client-connected", (GCallback)ClientConnected, this);
....
static void ClientConnected(GstRTSPServer *gstrtspserver, GstRTSPClient *arg1, gpointer user_data)
{
GstRTSPConnection *connection = gst_rtsp_client_get_connection(arg1);
if(!connection)
{
return;
}
GstRTSPUrl *uri = gst_rtsp_connection_get_url(connection);
if(!uri)
{
return;
}
gchar *urlString = gst_rtsp_url_get_request_uri (uri);
std::stringstream ssTemp;
ssTemp << "ClientConnected - urlString = " << urlString;
InternalLog::Debug(ssTemp.str());
g_free(urlString);
}
GstRTSPUrlは、以下のメンバーが含まれます。 // RTSPを[U]:// [ユーザー:はpasswd @]ホスト[:ポート]/ABSPATH
クエリRTSPとVLCから接続した後、[クエリを?]:// 192.116.10.20:8554/stream?width=1920 &高さ= 1280結果は次のとおりです。
ClientConnected - urlString = RTSP://192.116.10.20:61099(ヌル)
GstRTSPUrlは= 192.116.10.20およびポート= 61099ホストだけが含まれています。 "abspath"や "query"のような他のフィールドはNULLに等しいです。
netstatユーティリティでは、ポート61099がVLCアプリケーションのクライアントポートであることがわかります。それはポート8554に接続されています。 "width = 1920 & height = 1280"と入力されたクライアントのrtspクエリはどのようにして受信できますか?