我在尝试使用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
输出客户端接收流所需的“caps”:
/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
我什么都没有得到...
ffenc_mpeg4
的元素。只需将ffenc_mpeg4
和ffdec_mpeg4
替换为avenc_mpeg4
和avdec_mpeg4
即可。请注意不要改变原意,使翻译更加通俗易懂。 - SSBakh