GStreamer rtp流到vlc

Nic*_*gus 28 streaming vlc gstreamer

我在弄清楚如何使用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
Run Code Online (Sandbox Code Playgroud)

它输出客户端接收流所需的"上限":

/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
Run Code Online (Sandbox Code Playgroud)

我还可以使用以下管道显示流:

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
Run Code Online (Sandbox Code Playgroud)

但是当我尝试用vlc接收流时:

vlc -vvv rtp://127.0.0.1:5000
Run Code Online (Sandbox Code Playgroud)

我一无所获......

Nic*_*gus 38

我已经解决了这个问题,它只需要一个像这样的sdp文件:

v=0
m=video 5000 RTP/AVP 96
c=IN IP4 127.0.0.1
a=rtpmap:96 MP4V-ES/90000
Run Code Online (Sandbox Code Playgroud)

和rtpmp4vpay元素的选项"send-config = true":

gst-launch videotestsrc ! ffenc_mpeg4 ! rtpmp4vpay send-config=true ! udpsink host=127.0.0.1 port=5000
Run Code Online (Sandbox Code Playgroud)

然后,它可以播放

vlc <filename>.sdp
Run Code Online (Sandbox Code Playgroud)

  • 使用 gstreamer 1.0,该行应该是 `gst-launch videotestsrc !ffnc_mpeg4 !rtpmp4vpay 配置间隔=3!udpsink host=127.0.0.1 port=5000` 其中`config-interval=3` 是发送配置数据的时间间隔(以秒为单位)。`send-config` 现在已被弃用。 (2认同)

Ale*_*lyi 15

如何为H264和新gstreamer(窗口)

gst-launch-1.0 videotestsrc ! openh264enc ! rtph264pay config-interval=10 pt=96 ! udpsink host=127.0.0.1 port=5000
Run Code Online (Sandbox Code Playgroud)

sdp文件:

v=0
m=video 5000 RTP/AVP 96
c=IN IP4 127.0.0.1
a=rtpmap:96 H264/90000
Run Code Online (Sandbox Code Playgroud)

其他编解码器请参阅https://en.wikipedia.org/wiki/RTP_audio_video_profile以及RFC链接中相应的SDP示例

  • 您错误输入了端口号,否则它正在运行 - 测试但是使用x264enc(在Linux上).. RFC上的好建议 (3认同)
  • 和 OSX 等效:`gst-launch-1.0 videotestsrc !vtenc_h264 !rtph264pay 配置间隔=10 pt=96 !udpsink 主机=127.0.0.1 端口=5000`(而不是`openh264enc`) (2认同)