树莓派上使用 Gstreamer做视频推流

树莓派使用Gstreamer进行视频推流

最近在研究如何使用树莓派进行视频推流推送到云端。进行了各种比较尝试后,认为使用Gstreamer比较好,主要的一点就是想利用Gstreamer的硬件加速。
在使用ffmpeg的的时候软件推流CPU使用率可以达到60%多。同样摄像头使用Gstreamer硬件加速情况下CPU使用率只有不到10%。是非常理想的一种嵌入式设备上的推流方式。
不过这里有个前提是使用树莓派原生系统。
很多人拿树莓派后装了ubuntu,centos等系统,由于有些并不没有很好的与硬件适配的,所以用不了树莓派的显卡资源,导致也没有办法做硬件加速。所以如果考虑做硬件加速的话,还是推进使用树莓派原生系统。

首先,是安装Gstreamer。

1.安装Gstreamer

使用apt-get安装,执行下面命令:

sudo apt-get install gstreamer1.0-tools

sudo apt-get  install libgstreamer1.0-0 libgstreamer1.0-0-dbg libgstreamer1.0-dev liborc-0.4-0 liborc-0.4-0-dbg 
liborc-0.4-dev liborc-0.4-doc gir1.2-gst-plugins-base-1.0 gir1.2-gstreamer-1.0 gstreamer1.0-alsa gstreamer1.0-doc
 gstreamer1.0-omx gstreamer1.0-plugins-bad gstreamer1.0-plugins-bad-dbg gstreamer1.0-plugins-bad-doc 
 gstreamer1.0-plugins-base gstreamer1.0-plugins-base-apps gstreamer1.0-plugins-base-dbg gstreamer1.0-plugins-base-doc gstreamer1.0-plugins-good gstreamer1.0-plugins-good-dbg gstreamer1.0-plugins-good-doc 
 gstreamer1.0-plugins-ugly gstreamer1.0-plugins-ugly-dbg gstreamer1.0-plugins-ugly-doc
  gstreamer1.0-pulseaudio gstreamer1.0-tools gstreamer1.0-x libgstreamer-plugins-bad1.0-0
   libgstreamer-plugins-bad1.0-dev libgstreamer-plugins-base1.0-0 libgstreamer-plugins-base1.0-dev

2.Gstreamer推流

(1)rtp发送接收

在局域网测试OK:

树莓派端发送:

gst-launch-1.0 -v v4l2src device=/dev/video0 ! 'video/x-raw,width=1280,height=720,framerate=10/1' ! 
videoconvert ! omxh264enc ! 'video/x-h264, profile=(string)high' ! rtph264pay ! udpsink host=192.168.8.100 port=5600

PC端接收:

gst-launch-1.0 -v udpsrc port=5600 caps='application/x-rtp, media=(string)video, clock-rate=(int)90000, 
encoding-name=(string)H264' ! rtph264depay ! avdec_h264 ! autovideosink fps-update-interval=1000 sync=false
(2)rtp发送接收

局域网测试OK

树莓派发送端:

gst-launch-1.0 -v v4l2src device=/dev/video0 ! 'video/x-raw,width=1280,height=720,framerate=10/1' ! videoconvert ! omxh264enc ! 'video/x-h264, profile=(string)high' ! rtph264pay ! "application/x-rtp,payload=(int)103,clock-rate=(int)90000" ! udpsink host=192.168.8.100 port=9004

PC接收端,由于命令太长就写成了bash脚本,下面的指令可以拷贝到bash脚本中运行:

PEER_V=5004
PEER_IP=127.0.0.1
SELF_V=9004
CAPS_V="media=(string)video,clock-rate=(int)90000, encoding-name=(string)H264,payload=(int)103"
bash -c `gst-launch-1.0 -v \
        rtpsession name=r sdes="applications/x-rtp,cname=(string)\"user\@example.com\"" \
        udpsrc port=$SELF_V \
        ! "application/x-rtp,$CAPS_V" \
        ! r.recv_rtp_sink \
        r.recv_rtp_src \
        ! rtph264depay \
        ! decodebin \
        ! autovideosink \
        udpsrc port=$((SELF_V)) \
        ! r.recv_rtcp_sink \
        r.send_rtcp_src \
        ! udpsink host=$PEER_IP port=$((PEER_V+1)) sync=false async=false`

  • 5
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!对于在树莓派上进行视频推流,您可以使用 SRS(Simple-RTMP-Server)来实现。SRS 是一个开源的流媒体服务器,支持 RTMP、HLS、DASH 等常用的流媒体协议。 以下是在树莓派使用 SRS 进行视频推流的大致步骤: 1. 首先,您需要在树莓派上安装 SRS。您可以通过以下命令来完成安装: ``` sudo apt-get update sudo apt-get install build-essential git git clone https://github.com/ossrs/srs.git cd srs/trunk sudo ./configure && make sudo make install ``` 2. 安装完成后,您可以编辑配置文件 `srs.conf` 来配置 SRS 的推流参数。您可以使用文本编辑器打开该文件: ``` sudo nano /usr/local/srs/conf/srs.conf ``` 在配置文件中,您可以设置 RTMP 监听端口和推流路径等参数。例如,您可以将监听端口设置为 1935,并将推流路径设置为 `/live/stream`。 3. 配置完成后,您可以启动 SRS 服务: ``` sudo /usr/local/srs/srs -c /usr/local/srs/conf/srs.conf ``` 4. 现在,您可以使用支持 RTMP 协议的推流工具(如 OBS Studio)来进行视频推流。在推流工具中,您需要设置服务器地址为树莓派的 IP 地址,端口为 1935,推流路径为 `/live/stream`。 5. 开始推流后,您可以在客户端使用相应的播放器(如 VLC)来观看推流视频。在客户端中,您需要设置播放地址为 `rtmp://树莓派IP地址/live/stream`。 这是一个大致的步骤,具体配置和使用细节可能会有所不同。您可以参考 SRS 的文档和相关资料来获取更详细的信息。祝您成功实现视频推流!如有任何问题,请随时提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值