3

最初に QMediaPlayer を使用していくつかの例を作成しましたが、RTSP ストリームを処理できませんでした (ubuntu 14.04 の GStreamer 0.10 の問題)。

他のいくつかのアイデアはうまくいかなかったので、他のソリューションに切り替えました。

LibVLC と vlc-qt DemoPlayer の例 (QT 5.4.1) に基づいて qt プレーヤーを作成しました。

ストリームはうまく機能し、ビデオは魔法のように機能しています。

IP カメラの RTSP ストリームから ONVIF メタデータ ストリームを解析し (オブジェクトの動きなどに関する情報を含むいくつかの単純な xml データを送信します)、ストリームから収集されたメタデータに基づいていくつかの線を描画します。

そのデータを取得する適切な場所を見つけるのに少し苦労しています。

私が見る限り、LibVLC は解析できないストリームの部分を無視します。

誰かがそのようなことをしようとして、私を正しい方向に向けようとしましたか、それとも間違った方向に進んでいて、より良い解決策がありますか?:)

4

2 に答える 2

3

ではgst-launch、次のパイプラインを簡単に使用できます。

gst-launch-1.0 rtspsrc location=camera_uri ! application/x-rtp, media=application ! fakesink dump=true

ターミナルでカメラのメタデータを取得します。ただし、このデータには rtp パケット ヘッダーが含まれます。それを削除するには、depayloader 要素を記述する必要があります。(何も見つかりませんでした)、rtpヘッダーのみを削除します。

デペイローダー処理方法の例:

static GstBuffer *
gst_rtp_xml_depay_process (GstRTPBaseDepayload * depayload, GstBuffer   *   buf)
{
  guint8 *payload;
  GstRTPBuffer rtp = { NULL };
  GstRtpXMLDepay *rtpxmldepay;
  rtpxmldepay = GST_RTP_XML_DEPAY (depayload);
  gst_rtp_buffer_map (buf, GST_MAP_READ, &rtp);
  payload = (guint8*)gst_rtp_buffer_get_payload_buffer (&rtp);
  return (GstBuffer*)payload;
}

アプリでメタデータを取得する場合は、appsink を使用できます。

于 2015-06-29T09:03:21.743 に答える
0

ここに記載されているように、何らかの方法で GStreamer シグナル「ハンドル要求」にアタッチする必要があります。

http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-good-plugins/html/gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc-handle-request

必要なデータは、user_data ポインターに含まれている必要があります。

于 2015-03-30T10:20:33.517 に答える