基于gstreamer的rtsp推流 (USB摄像头)

一. 配置gstreamer环境

参考上篇文章 :ubuntu16.04上安装gstreamer

二. 安装gstreamer-rtsp-server

git clone  -b 1.8 https://github.com/GStreamer/gst-rtsp-server.git  //下载源码
cd gst-rtsp-server      
./autogen.sh
sudo make
sudo make install

三、读取usb摄像头并推rtsp流 

1.  测试

(1) 切换到examples目录:cd examples

(2) 编译   

gcc test-launch.c -o test $(pkg-config --cflags --libs gstreamer-rtsp-server-1.0 gstreamer-1.0)

(3) 搭建Rtsp Server:./test-launch "( videotestsrc ! x264enc ! rtph264pay name=pay0 pt=96 )"
(4) 播放rtsp流:gst-launch-1.0 playbin uri=rtsp://127.0.0.1:8554/test

2. usb相机

(1) 切换到examples目录:cd examples

(2) 编译   

gcc test-launch.c -o test $(pkg-config --cflags --libs gstreamer-rtsp-server-1.0 gstreamer-1.0)

(3) 搭建Rtsp Server:

./test --gst-debug-level=3 "( v4l2src device=/dev/video0 ! videoconvert! videoscale ! video/x-raw, width=2592, height=600, framerate=30/1 ! queue ! x264enc bitrate=10240 !  rtph264pay name=pay0 pt=96 )"
(4) 播放rtsp流:gst-launch-1.0 playbin uri=rtsp://127.0.0.1:8554/test

或者  gst-launch-1.0 playbin uri= rtsp://127.0.0.1:8554/test uridecodebin0::source::latency=0

3. gstreamer的常用命令

// usb 相机


gst-launch-1.0 v4l2src ! autovideosink


gst-launch-1.0 v4l2src device=/dev/video0 ! autovideosink


gst-launch-1.0 v4l2src device=/dev/video0 ! videoconvert! videoscale ! video/x-raw, width=720, height=720 ! autovideosink -v

gst-launch-1.0 v4l2src device=/dev/video0 ! videoconvert! videoscale ! video/x-raw, width=720, height=720 !  xvimagesink -ev


// home/zhy/Downloads/soft/GStreamer/gst-rtsp-server-1.16.0/examples

编译
 gcc test-launch.c -o test $(pkg-config --cflags --libs gstreamer-rtsp-server-1.0 gstreamer-1.0)

推流
 ./test "( videotestsrc ! x264enc ! rtph264pay name=pay0 pt=96 )"

// rtsp推流

./test --gst-debug-level=3 "( v4l2src device=/dev/video0 ! videoconvert! videoscale ! video/x-raw, width=2592, height=600, framerate=30/1 ! queue ! x264enc bitrate=10240 !  rtph264pay name=pay0 pt=96 )"


// rtsp 拉流

gst-launch-1.0 playbin uri= rtsp://127.0.0.1:8554/test uridecodebin0::source::latency=0


// rtsp推流加入时间
./test "( v4l2src device=/dev/video0 !  videoconvert! videoscale ! video/x-raw, width=2592, height=600, framerate=30/1 ! timeoverlay ! tee name=vsrc vsrc. ! queue ! videoconvert ! ximagesink vsrc. ! queue ! x264enc tune=zerolatency ! rtph264pay name=pay0 pt=96 )" 

  • 2
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
GStreamer是一个功能强大的多媒体框架,可以用于音频和视频处理。它提供了一组库和工具,可以用于创建、处理和媒体音频和视频数据。 RTSP(Real-Time Streaming Protocol)是一种用于实时媒体传输的网络协议。它允许客户端通过网络接收实时的音频和视频数据。 在GStreamer中,可以使用插件来实现RTSP功能。以下是一个简单的示例代码,演示了如何使用GStreamer进行RTSP: ```python import gi gi.require_version('Gst', '1.0') from gi.repository import Gst def start_rtsp_stream(): Gst.init(None) pipeline = Gst.parse_launch("videotestsrc ! x264enc ! rtph264pay name=pay0") # 设置RTSP服务器地址和端口 rtsp_server = "127.0.0.1" rtsp_port = "8554" # 设置RTSP的路径和名称 rtsp_path = "/test" rtsp_name = "test" # 创建RTSP服务器 server = Gst.ElementFactory.make("rtspsrc", "server") server.set_property("location", f"rtsp://{rtsp_server}:{rtsp_port}/{rtsp_path}") server.set_property("name", rtsp_name) # 将RTSP服务器连接到管道 pipeline.add(server) server.link(pipeline.get_by_name("pay0")) # 启动 pipeline.set_state(Gst.State.PLAYING) print(f"RTSP stream is running at rtsp://{rtsp_server}:{rtsp_port}/{rtsp_path}") # 进入主循环 loop = GObject.MainLoop() loop.run() start_rtsp_stream() ``` 这段代码使用GStreamer创建了一个简单的RTSP服务器。它使用`videotestsrc`作为视频源,`x264enc`进行视频编码,`rtph264pay`进行RTP打包。你可以根据自己的需求修改和扩展这个示例。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值