Raspbian命令行RTSP/RTP服务

news2024/9/23 3:15:21

Raspbian命令行RTSP/RTP服务

  • 1. 源由
  • 2. Raspbian摄像头
    • 2.1 命令行启动RTP摄像头
    • 2.2 命令行启动RTSP摄像头
  • 3. 示例
    • 3.1 测试RTP摄像头
    • 3.2 测试RTSP摄像头
    • 3.3 QGroundControl测试
      • 3.3.1 RTSP配置
      • 3.3.2 RTP配置
  • 4. 总结
  • 5. 参考资料

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镜像无头烧录

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1468084.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

K8S部署Java项目 pod报错 logs日志内容:no main manifest attribute, in app.jar

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

责任链模式与spring容器的搭配应用

背景 有个需求&#xff0c;原先只涉及到一种A情况设备的筛选&#xff0c;每次筛选会经过多个流程&#xff0c;比如先a功能&#xff0c;a功能通过再筛选b功能&#xff0c;然后再筛选c功能&#xff0c;以此类推。现在新增了另外一种B情况的筛选&#xff0c;B情况同样需要A情况的筛…

NestJS入门7:增加异常过滤器

前文参考&#xff1a; NestJS入门1 NestJS入门2&#xff1a;创建模块 NestJS入门3&#xff1a;不同请求方式前后端写法 NestJS入门4&#xff1a;MySQL typeorm 增删改查 NestJS入门5&#xff1a;加入Swagger NestJS入门6&#xff1a;日志中间件 本文代码基于上一篇文章《…

数字化转型导师坚鹏:政府数字化流程管理

政府数字化流程管理 课程背景&#xff1a; 很多政府存在以下问题&#xff1a; 不清楚数字化对流程有什么影响&#xff1f; 不知道政府业流程如何进行优化&#xff1f; 不知道政府业流程优化的具体案例&#xff1f; 课程特色&#xff1a; 有实战案例 有原创观点 …

【大厂AI课学习笔记NO.52】2.3深度学习开发任务实例(5)需求采集考虑维度

今天来学习&#xff0c;怎么做需求分析&#xff0c;如何明确数据采集需求。 我把自己考试通过的学习笔记&#xff0c;都分享到这里了&#xff0c;另外还有一个比较全的思维脑图&#xff0c;我导出为JPG文件了。下载地址在这里&#xff1a;https://download.csdn.net/download/g…

【C++私房菜】面向对象中的多态

文章目录 一、多态二、对象的静态类型和动态类型三、虚函数和纯虚函数1、虚函数2、虚析构函数3、抽象基类和纯虚函数4、多态的原理 四、重载、覆盖(重写)、隐藏(重定义)的对比 一、多态 OOP的核心思想是多态性(polymorphism)。多态性这个词源自希腊语&#xff0c;其含义是“多…

免费多域名证书,最多支持保护250个域名

随着企业规模扩大和多元化发展&#xff0c;拥有多个域名的需求变得普遍&#xff0c;此时&#xff0c;多域名SSL证书应运而生&#xff0c;并且这一类型的证书已经发展到能够安全地支持多达250个不同域名的加密需求。 多域名SSL证书&#xff0c;也称为SAN&#xff08;Subject Alt…

【《高性能 MySQL》摘录】第 2 章 MySQL基准测试

文章目录 2.1 为什么需要基准测试2.2 基准测试的策略2.2.1 测试何种指标 2.3 基准测试方法2.3.1 设计和规划基准测试2.3.2 基准测试应该运行多长时间2.3.3 获取系统性能和状态2.3.4 获得准确的测试结果2.3.5 运行基准测试并分析结果2.3.6 绘图的重要性 2.4 基准测试工具…

[面试] 什么是死锁? 如何解决死锁?

什么是死锁 死锁&#xff0c;简单来说就是两个或者多个的线程在执行的过程中&#xff0c;争夺同一个共享资源造成的相互等待的现象。如果没有外部干预线程会一直阻塞下去. 导致死锁的原因 互斥条件&#xff0c;共享资源 X 和 Y 只能被一个线程占用; 请求和保持条件&#xf…

【第七天】C++模板探秘:函数模板、类模板以及类型转换的深入解析

一、模板的概述 c面向对象编程思想&#xff1a;封装、继承、多态 c泛型编程思想&#xff1a;模板 模板的分类&#xff1a;函数模板、类模板 函数模板&#xff08;类模板&#xff09;&#xff1a;将功能相同&#xff0c;类型不同的函数&#xff08;类&#xff09;的类型抽象成虚…

Java+Vue:宠物猫认养系统的未来之路

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

网购商城系统源码 积分兑换商城系统源码 独立后台附教程

应用介绍 本文来自&#xff1a;网购商城系统源码 积分兑换商城系统源码 独立后台附教程 - 源码1688 简介&#xff1a; 网购商城系统源码 积分兑换商城系统源码 独立后台附教程 测试环境&#xff1a;NginxPHP7.0MySQL5.6thinkphp伪静态 图片&#xff1a;

进程与线程之进程的理解

首先对堆栈等进程运行过程中的内存有了更深层次的理解&#xff1a; 我们之前了解到&#xff0c;程序在运行中存在堆栈&#xff0c;字符串常量区代码区。 现在我们提出虚拟内存的概念&#xff1a;程序在运行的过程中开辟0~4G的虚拟空间使用MUU映射单元映射到物理地址上 简而言…

板块二 JSP和JSTL:第四节 EL表达式 来自【汤米尼克的JAVAEE全套教程专栏】

板块二 JSP和JSTL&#xff1a;第四节 EL表达式 一、什么是表达式语言二、表达式取值&#xff08;1&#xff09;访问JSP四大作用域&#xff08;2&#xff09;访问List和Map&#xff08;3&#xff09;访问JavaBean 三、 EL的各种运算符&#xff08;1&#xff09;.和[ ]运算符&…

Jmeter基础(3) 发起一次请求

目录 Jmeter 一次请求添加线程组添加HTTP请求添加监听器 Jmeter 一次请求 用Jmeter进行一次请求的过程&#xff0c;需要几个步骤呢&#xff1f; 1、添加线程组2、添加HTTP请求3、添加监听器&#xff0c;查看结果树 现在就打开jmeter看下如何创建一个请求吧 添加线程组 用来…

Spring Boot 笔记 029 用户模块

1.1 用户信息需要在多个链接使用&#xff0c;所以需要用pinia持久化 1.1.1 定义store import {defineStore} from pinia import {ref} from vue const useUserInfoStore defineStore(userInfo,()>{//定义状态相关的内容const info ref({})const setInfo (newInfo)>{i…

关于uniapp H5应用无法在触摸屏正常显示的处理办法

关于uniapp H5应用无法在触摸屏正常显示的处理办法 1、问题2、处理3、建议 1、问题 前几天&#xff0c; 客户反馈在安卓触摸大屏上无法正确打开web系统&#xff08;uni-app vue3开发的h5 应用&#xff09;&#xff0c;有些页面显示不出内容。该应用在 pc 端和手机端都可以正常…

easyrecovery数据恢复软件14中文绿色版下载

EasyRecovery易恢复14全面介绍 一、功能概览 EasyRecovery易恢复14是一款功能强大的数据恢复软件&#xff0c;旨在帮助用户从各种存储介质中恢复丢失或删除的文件。无论是由于误删、格式化、系统崩溃还是其他未知原因导致的数据丢失&#xff0c;EasyRecovery易恢复14都能提供…

基于qt的图书管理系统----03核心界面设计

参考b站&#xff1a;视频连接 源码github&#xff1a;github 目录 1 添加软件图标2 打包程序3 三个管理界面设计4 代码编写4.1 加载界面4.2 点击按钮切换界面4.3 组团添加样式4.4 搭建表头4.5 表格相关操作 从别人那里下载的项目会有这个文件&#xff0c;里边是别人配置的路径…

力扣 187. 重复的DNA序列

1.题目 DNA序列 由一系列核苷酸组成&#xff0c;缩写为 A, C, G 和 T.。 例如&#xff0c;"ACGAATTCCG" 是一个 DNA序列 。 在研究 DNA 时&#xff0c;识别 DNA 中的重复序列非常有用。 给定一个表示 DNA序列 的字符串 s &#xff0c;返回所有在 DNA 分子中出现不止一…