我正在尝试建立一个基于gstreamer的rtsp视频服务器。在我的例子中,我需要客户端连接到服务器,并开始将视频流式传输到服务器。
我读过一些关于这个主题的教程,特别是这个:http://www.ip-sense.com/linuxsense/how-to-develop-a-rtsp-server-in-linux-using-gstreamer/
在本教程中,视频从服务器流式传输到客户端,我需要更改这一点,以便视频将从客户机流式传输到服务器。
编辑:在演示中启动此管道:
gst_rtsp_media_factory_set_launch (factory, "( "
"videotestsrc ! video/x-raw-yuv,width=320,height=240,framerate=10/1 ! "
"x264enc ! queue ! rtph264pay name=pay0 pt=96 ! audiotestsrc ! audio/x-raw-int,rate=8000 ! alawenc ! rtppcmapay name=pay1 pt=97 "")");管道从视频和音频测试源开始,并将它们编码为有效负载0和1。我需要做相反的事情-获取rtsp有效负载并解码它。
发布于 2017-11-03 12:47:50
虽然这个问题很久以前就被问过了,但我将为其他可能正在寻找它的人回答。使用GStreamer来实现这一点。
发布于 2013-04-18 01:07:00
要对客户端从服务器接收的RTSP流进行解码,请使用rtspsrc
gst-launch rtspsrc location=${LOCATION} \
! rtph264depay ! ffdec_h264 ! ffmpegcolorspace ! xvimagesink但你的问题似乎是针对将有效负载推送到服务器,而不是从服务器中拉出它(至少在你编辑it...now之前是这样的,对我来说有点不清楚)。
gstrtspserver框架似乎是针对RTSP的常见用例:客户端从服务器拉取数据。如果您想恢复这一点,最好的开始可能是将gstrtspserver库转换成一个gstrtsppushclient框架(只需交换连接逻辑就可以了)。您还必须重新实现接收(服务器)端。
但是,它不再是真正的RTSP (从某种意义上说,您将找不到任何其他应用程序来处理您的应用程序)。
您可能应该重新考虑您的体系结构。阅读RFC2326可能是一个很好的开始
发布于 2013-05-21 02:00:23
如果您真正想要的只是一个从“客户端”接收流输入的“服务器”,那么只需颠倒服务器和客户端应用程序的角色即可。编写一个总是在那里的客户端,您可能需要有某种类型的重新启动循环,以便如果传入流的末尾结束您的管道,您只需重新启动它。此外,您的客户端需要对数据执行您想要做的任何操作;存储数据、显示数据、重新广播数据(?)。
现在可以修改客户端(以前是服务器)代码,将数据发送到服务器(以前是客户端),然后终止或等待另一个流传输。
有点不稳定,但应该能行得通。
https://stackoverflow.com/questions/16015326
复制相似问题