我正在尝试将此工作发送方管道包装在gst-rtsp-serve
中gst-launch-1.0 --gst-plugin-path=/usr/lib/x86_64-linux-gnu/gstreamer-1.0/ filesrc location=sample.mp4 ! decodebin name=mux mux. ! queue ! videoconvert ! edgedetect ! videoconvert ! x264enc ! rtph264pay ! udpsink host=127.0.0.1 port=5000 mux. ! queue ! audioconvert ! audioresample ! alawenc ! rtppcmapay ! udpsink host=127.0.0.1 port=5001
在接收方使用补充管道所有工作都可以工作,我可以发送一个opencv处理流,在客户端获取它。 当我尝试在gst-rtsp-server提供的工作示例中包装此管道的一部分时,出了点问题。 事实上,编辑test-mp4.c并更改filesrc输入pipelin
"filesrc location=%s ! qtdemux name=d "
"d. ! queue ! videoconvert ! edgedetect ! videoconvert ! x264enc ! rtph264pay pt=96 name=pay0 "
"d. ! queue ! rtpmp4apay pt=97 name=pay1 " ")"
发件人不再工作了。在接收器端,我得到503错误,因为接收器无法获得sdp。 可能这是一个与缺少坏插件目录有关的问题吗? 我在主Makefile中设置它但问题仍然存在。 我想如果我不编辑那条线并且我的管道工作正常,那么rtsp-server工作得很好。
谢谢,
弗朗西斯
答案 0 :(得分:0)
这看起来是您创建的管道的问题。尝试在命令行上运行管道的确切方式,但在末尾添加fakesink元素以查看是否有效:
gst-launch-1.0 filesrc location=%s ! qtdemux name=d d. ! queue ! videoconvert ! edgedetect ! videoconvert ! x264enc ! rtph264pay pt=96 name=pay0 ! fakesink d. ! queue ! rtpmp4apay pt=97 name=pay1 ! fakesink
乍一看,您似乎正在对媒体进行多路分解,但不会将视频解码为edgedetect
元素的原始格式。