使用gst-rtsp-server接收Stream

时间:2011-10-27 12:05:44

标签: c++ gstreamer ogg

我对gstreamer有疑问。 我使用gst-rtsp-server创建了一个流媒体服务器。我正在尝试将摄像头捕获发送到另一台计算机(在本地网络上)并将其解析为.ogv文件。

流式传输的工作正常,我能够将信息解析到文件中;但是在解析之后我无法读取它或在任何应用程序中使用它。似乎缺少一些信息(可能与编码技术有关,我真的不太了解它)

服务器端命令(在c ++代码内):

....
gst_rtsp_media_factory_set_launch (factory, "( v4l2src device=/dev/video0 ! videorate !         
video/x-raw-yuv,width=320,height=240,framerate=30/1 ! videoscale ! ffmpegcolorspace !
theoraenc ! rtptheorapay name=pay0 pt=96 )");

gst_rtsp_media_factory_set_shared (factory, TRUE);

/* attach the test factory to the /test url */
gst_rtsp_media_mapping_add_factory (mapping, "/stream", factory);
....

客户端命令(终端命令):

gst-launch -v rtspsrc location=rtsp://192.168.0.115:8554/stream ! 
rtptheoradepay name=pay0 ! oggmux ! filesink location=/home/jean/Desktop/stream.ogv

任何帮助都非常感谢!

1 个答案:

答案 0 :(得分:0)

我可以按如下方式对管道进行解码,以查看它gst-launch -v rtspsrc location="rtsp://localhost:8554/test" name=demux demux. ! queue ! rtptheoradepay ! theoradec ! ffmpegcolorspace ! autovideosink

解码

gst-launch -v rtspsrc location="rtsp://localhost:8554/test" ! application/x-rtp, payload=96 ! rtptheoradepay ! theoradec ! videorate ! ffmpegcolorspace ! theoraenc ! oggmux ! filesink location=GIBBERISH.ogg

我将其解码并使用视频编码将其编码回写入文件。可能有一种更优化的方式来执行相同的操作,但它只是一种解决方法。