gstreamer推流拉流及4G图传数传相关笔记(不定时更新)

┌─────────────────────┐
│ 2024年4月2日23:23:20最后编辑. │
│ 2024年3月29日首次编辑发布. . . .│
└─────────────────────┘

1.树莓派及板载摄像头启用rtp udp推流:

gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-h264,width=1080,height=720,framerate=24/1 ! h264parse ! rtph264pay ! udpsink host=192.168.231.1  port=5600

参数解释:
v4l2src: 视频源类型v4l2, Video for Linux 2的简称;
device=/dev/video0:视频源;
video/x-h264: 视频类型;
width、height: 宽、高;
framerate: 帧率;
h264parse:h264解析;
rtph264pay:RTP打包H264数据;
udpsink:数据以upd方式推送
host:目标主机
port:目标端口
备注:树莓派 使用raspivid延迟更小

raspivid -n -fl -w 540 -h 360 -b 10000000 -fps 30 -t 0 -rot 0 -o - | gst-launch-1.0 -v fdsrc ! h264parse ! rtph264pay config-interval=10 pt=96 ! udpsink host=172.16.0.94  port=5600

2. rtsp 2 rtp 推流(IPcam)

gst-launch-1.0 rtspsrc location='rtsp://admin:123456@192.168.1.86/H264?ch=1&subtype=0' latency=0 ! udpsink port=5600 host=192.168.124.3

参数解释:
rtspsrc:视频来源rtsp;
location:rtsp地址,跟卖家/厂家要;
latency:手动增加延迟?
udpsink:数据以upd方式推送
host:目标主机
port:目标端口
备注:这里没有对数据流进行打包,故推送的rtp包其实就是 rtsp 中的 rtp 包。没有视频流的编码与解码,只是 rtsp 中提取 rtp 包来转发,故在一些算力低的平台也可以使用。

3.树莓派用USB摄像头进行推流

gst-launch-1.0 -v v4l2src device=/dev/video1 ! videoconvert ! omxh264enc target-bitrate=10000000 control-rate=3  ! "video/x-h264,profile=high"  ! h264parse ! queue max-size-bytes=10000000 ! rtph264pay pt=96 config-interval=1 !  udpsink port=5600 host=192.168.124.3 ts-offset=0

参数解释:无
备注:无

4.删除碍事的网卡的配置(通过IP)

sudo ip route del default via 192.168.1.1

参数解释:无
备注: rtsp 2 rtp 推流使用192.168.1.X网段,避免对外流量使用跑向192.168.1.X,所以删除192.168.1.X网段路由配置。

5.固定网口ip

sudo ifconfig eth0 192.168.1.10 netmask 255.255.255.0

参数解释:
eth0: 网卡接口,可以使用 ifconfig 命令查看所有 网卡接口
在这里插入图片描述
netmask:子掩码
备注:无

6.飞控mavlink消息转发

mavlink-routerd -e 192.168.7.1:14550 -e 127.0.0.1:14550 /dev/ttyS1:57600

参数解释:
-e: end point,数据传输目标;
/dev/ttyS1:57600: 数据源,串口/dev/ttyS1,波特率57600;这里前边没有参数-e,因此默认就是数据源;
备注:mavlink-routerd 依赖几个库,需要自己手动安装,具体忘记了是哪几个 ʅ( ‾⊖◝)ʃ
。 另外,mavlink-routerd支持 ipv6。这里有编译好的二进制执行文件https://gitee.com/ablen/mavlink-router/releases/tag/0.1.0

7.将RTSP视频流保存为MP4文件

gst-launch-1.0 -e rtspsrc location='rtsp://admin:123456@192.168.1.86/H264?ch=1&subtype=0'  latency=0 !  rtph265depay ! h265parse ! mp4mux ! filesink location=~/camera-06.mp4

参数解释:
-e:添加流结束标志,没有这个参数文件会无法播放;
rtspsrc:视频来源rtsp;
location:rtsp地址,跟卖家/厂家要;
rtph265depay:从RTP数据包中提取H265视频流;
h265parse:分析H.265视频流;
filesink:数据推送至文件;
location:文件路径+名字。
备注:
(1) 参考文献
(2) 如果视频流是H.265就用H.265 的提取和分析参数;如果是H.264就用H.264 的提取和分析参数( rtph264depay 和 h264parse)。

8.地面站QGC可把接收的视频流保存为文件

设置保存格式
录制按键在这里
参数解释:无
备注:
(1) 录制的视频带状态数据,项目对应QGC显示的项目
在这里插入图片描述
(2) 画面花屏帧(不完整帧)部分不会录制保存;

9.使用SHELL脚本获得域名IPv6地址

#!/bin/sh
domain="example.com"
ipv6_addr=$(host ${domain} |  grep -o "IPv6.*"| grep -o "24.*")
echo $ipv6_addr

运行结果示例:
在这里插入图片描述

10.使用shell更新DDNS(dynv6的ipv6)

#! bash
hostname="example.dynv6.net"
token="xxxxxxxxxxxxxxxxxxxxxx"

ipv6_addr=$(curl  'http://api-ipv6.ip.sb/ip')
echo "========================================="
echo "Your ipv6 addr is [$ipv6_addr];"
echo "========================================="
MSG=$(curl  "http://dynv6.com/api/update?hostname=$hostname&token=$token&ipv6=$ipv6_addr&ipv6prefix=$ipv6_addr")
echo "================="
echo $MSG

说明:本脚本适用于www.dynv6.com家的DDNS
运行结果示例:出现 addresses updated 表示更新成功
在这里插入图片描述

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值