40

gstreamer を使用して単純な rtp ストリームを作成し、それを vlc に表示する方法がわかりません。

GStreamer 0.10.30 と VLC 1.1.3 をインストールしました。私の唯一の要件は、MPEG4 または H.264 コーデックを使用することです。

現在、次の単純なパイプラインを介して GStreamer videotestsrcをストリーミングできます。

gst-launch videotestsrc ! ffenc_mpeg4 ! rtpmp4vpay ! udpsink host=127.0.0.1 port=5000

クライアントがストリームを受信するために必要な「キャップ」を出力します。

/GstPipeline:pipeline0/GstUDPSink:udpsink0.GstPad:sink: caps = application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)MP4V-ES, profile-level-id=(string)1, config=(string)000001b001000001b58913000001000000012000c48d8800f50a041e1463000001b24c61766335322e3132332e30, payload=(int)96, ssrc=(uint)365697461, clock-base=(uint)390754204, seqnum-base=(uint)10399

次のパイプラインを使用してストリームを表示することもできます。

gst-launch udpsrc uri=udp://127.0.0.1:5000 caps="application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)MP4V-ES, profile-level-id=(string)1, config=(string)000001b001000001b58913000001000000012000c48d88007d0a041e1463000001b24c61766335322e3132332e30, payload=(int)96, ssrc=(uint)298758266, clock-base=(uint)3097828288, seqnum-base=(uint)63478" ! rtpmp4vdepay ! ffdec_mpeg4 ! autovideosink

しかし、vlc でストリームを受信しようとすると:

vlc -vvv rtp://127.0.0.1:5000

何も得られない...

4

3 に答える 3

46

私は問題を解決しました。次のような sdp ファイルが必要です。

v=0
m=video 5000 RTP/AVP 96
c=IN IP4 127.0.0.1
a=rtpmap:96 MP4V-ES/90000

rtpmp4vpay 要素のオプション「send-config=true」:

gst-launch videotestsrc ! ffenc_mpeg4 ! rtpmp4vpay send-config=true ! udpsink host=127.0.0.1 port=5000

そして、それで遊ぶことができます

vlc <filename>.sdp
于 2012-11-05T15:16:54.787 に答える
23

H264 と新しい gstreamer の使用方法 (Windows)

gst-launch-1.0 videotestsrc ! openh264enc ! rtph264pay config-interval=10 pt=96 ! udpsink host=127.0.0.1 port=5000

sdp ファイル:

v=0
m=video 5000 RTP/AVP 96
c=IN IP4 127.0.0.1
a=rtpmap:96 H264/90000

他のコーデックについては、 https://en.wikipedia.org/wiki/RTP_audio_video_profileおよび RFC リンクの対応する SDP の例を参照してください。

于 2015-08-18T07:08:45.477 に答える