我是一个gstreamer的新手,正在尝试使用它。我的第一个目标是在两个设备之间创建一个简单的h264视频rtp流。我正在使用这两个管道:
发送端:gst-launch-1.0 -v filesrc location=c:\\tmp\\sample_h264.mov ! x264enc ! rtph264pay ! udpsink host=127.0.0.1 port=5000
接收端:gst-launch-1.0 -v udpsrc port=5000 ! rtpmp2tdepay ! decodebin ! autovideosink
但是在第一个(发送)中,我遇到了以下错误:
Setting pipeline to PAUSED ...
Pipeline is PE*R*O L(LgIsNtG- l.a.u.n
h-1.0:5788): CRITICAL **: gst_adapter_map: assertion `size > 0' failed
ERROR: from element /GstPipeline:pipeline0/GstFileSrc:filesrc0: Internal data flow error.
Additional debug info:
gstbasesrc.c(2812): gst_base_src_loop (): /GstPipeline:pipeline0/GstFileSrc:filesrc0:
streaming task paused, reason not-negotiated (-4)
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
Freeing pipeline ...
我尝试了很多其他配置,但我找不到合适的管道。
其他信息: Gstreamer 版本:1.0.7 操作系统:Windows 7
有什么想法/建议吗? 谢谢。
gst-launch-1.0 -v videotestsrc ! udpsink host=192.128.52.128 port=9001
我有一种感觉,udpsink没有发送任何内容! PS:这不是防火墙的问题,我已将其全部停用。 - abirgst-launch-1.0 filesrc location=C:\tmp\sample_h264.mov ! qtdemux ! h264parse ! rtph264pay ! udpsink host=192.168.52.128 port=9001
然后,在另一侧接收该流。 - abirvideotestsrc ! udpsink
不是 RTP 流。你需要添加一个 payloader。 - umläutegst-launch-1.0 -v filesrc location=/home/ … /sample_h264.mov ! decodebin ! x264enc ! rtph264pay ! udpsink host=192.168.52.129 port=9001
接收方:gst-launch-1.0 -v udpsrc port=9001 caps = "application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, payload=(int)96" ! rtph264depay ! decodebin ! videoconvert ! autovideosink
- abir