Raspbian命令行RTSP/RTP服务

1. 源由

鉴于实际测试发现RTP协议下,摄像头明显比RTSP协议下响应快。

因此,这里记录下命令行模式下启动RTP和RTSP摄像头,以及VLC图像界面的操作。

2. Raspbian摄像头

2.1 命令行启动RTP摄像头

在树莓派上进行RTP(Real-time Transport Protocol)视频流式传输需要使用一些工具。一个常见的工具是raspivid结合ffmpeg,ffmpeg可以将视频流编码并通过RTP进行传输。

以下是在树莓派上设置RTP视频流的命令行:

raspivid -t 0 -w 640 -h 480 -fps 25 -b 2000000 -o - | ffmpeg -i - -vcodec copy -an -f rtp rtp://<destination_ip>:<destination_port>
raspivid -t 0 -w 640 -h 480 -fps 25 -b 2000000 -o -: 使用raspivid捕获视频流,并将其发送到标准输出。
ffmpeg -i - -vcodec copy -an -f rtp rtp://<destination_ip>:<destination_port>: 使用ffmpeg接收来自raspivid的视频流,并将其编码为RTP格式,然后通过指定的目标IP地址和端口进行传输。

确保替换<destination_ip>和<destination_port>为接收视频流的设备的IP地址和端口号。这个命令将在树莓派上启动视频流,并将其发送到指定的目标。

接收视频流的设备可以使用VLC等RTP兼容的媒体播放器来接收和播放视频流。

2.2 命令行启动RTSP摄像头

要在树莓派上使用命令行设置RTSP视频流,您可以使用raspivid结合cvlc(VLC的命令行版本)来实现。以下是一个示例命令:

raspivid -t 0 -w 640 -h 480 -fps 25 -b 2000000 -o - | cvlc -vvv stream:///dev/stdin --sout '#rtp{sdp=rtsp://:8554/}' :demux=h264

这个命令将树莓派的摄像头视频流通过RTSP进行传输。解释一下命令的各个部分:

raspivid -t 0 -w 640 -h 480 -fps 25 -b 2000000 -o -: 使用raspivid捕获视频流,并将其发送到标准输出。
cvlc -vvv stream:///dev/stdin --sout '#rtp{sdp=rtsp://:8554/}' :demux=h264: 使用cvlc接收来自raspivid的视频流,将其编码为RTP格式,并通过RTSP进行传输。其中rtsp://:8554/指定了RTSP服务器的地址和端口号。

确保您已经在树莓派上安装了vlc和raspivid。这个命令将在树莓派上启动视频流,并将其通过RTSP传输,您可以在任何支持RTSP的播放器中播放该流。

3. 示例

Raspbian摄像头: 192.168.1.17
Windows笔记本: 192.168.1.14
QGroundControl:192.168.1.8

3.1 测试RTP摄像头

  • Step 1:制作VLC的SDP文件,并保存为rtp.sdp
m=video 5004 RTP/AVP 96
a=rtpmap:96 H264
a=framerate:25
c=IN IP4 127.0.0.1
  • Step 2:启动Windows端RTP服务

注:Windows桌面先要装好VLC图形界面软件,双击rtp.sdp文件,启动RTP服务。

  • Step 3:树莓派运行RTP摄像头程序
$ raspivid -t 0 -w 640 -h 480 -fps 25 -b 2000000 -o - | ffmpeg -i - -vcodec copy -an -f rtp rtp://192.168.1.14:5004
  • Step 4:等待大概1~2秒,摄像头图像即可显示

3.2 测试RTSP摄像头

  • Step 1:树莓派运行RTSP摄像头服务
$ raspivid -t 0 -w 640 -h 480 -fps 25 -b 2000000 -o - | cvlc -vvv stream:///dev/stdin --sout '#rtp{sdp=rtsp://:8554/test}' :demux=h264
  • Step 2:Windows启动VLC软件

  • Step 3:选择【Media】–>【Open Network Stream…】–>【Network】,填写RTSP地址

rtsp://192.168.1.17:8554/test
  • Step 4:点击【Play】开始播放RTSP摄像头画面

在这里插入图片描述

3.3 QGroundControl测试

3.3.1 RTSP配置

$ raspivid -t 0 -w 640 -h 480 -fps 25 -b 2000000 -o - | cvlc -vvv stream:///dev/stdin --sout '#rtp{sdp=rtsp://:8554/test}' :demux=h264

在这里插入图片描述

3.3.2 RTP配置

$ raspivid -t 0 -w 640 -h 480 -fps 25 -b 2000000 -o - | ffmpeg -i - -vcodec copy -an -f rtp rtp://192.168.1.8:5004

在这里插入图片描述

4. 总结

经测试:

  1. RTP协议较RTSP协议延迟明显改善
  2. VLC需要使用SDP文件启动RTP服务(待查)
  3. VLC无法使用SDP文件启动RTSP客户端(待查)
  4. 所有测试过程都需要先启动服务端程序,然后再启动客户端程序

RTP摄像头(客户端)
RTSP摄像头(服务端)

5. 参考资料

【1】Raspbian简易RTSP服务
【2】Raspbian安装摄像头
【3】Raspbian镜像无头烧录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值