Raspbian命令行RTSP/RTP服务

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.mzph.cn/news/700106.shtml

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

相关文章

利用DevOps和ITSM的集成能促进IT技术

在当今这个快节奏和技术驱动的世界里&#xff0c;DevOps 和 IT 服务管理&#xff08;ITSM&#xff09;理念在培养心理健康和减少技术压力的工作环境中正在发挥重要作用。混合最佳实践&#xff0c;实现更好、更快、更安全的服务。 什么是DevOps&#xff1f; DevOps 专注于采用协…

多人协作记账账本小程序开源版开发

多人协作记账账本小程序开源版开发 支持多人协作的记账本小程序&#xff0c;可用于家庭&#xff0c;团队&#xff0c;组织以及个人的日常收支情况记录&#xff0c;支持周月年度统计 便捷记账 便捷的记账方式&#xff0c;支持多种记账类型&#xff0c;快捷切换账本等 多账本 支…

猫头虎分享已解决Bug || ValueError: Setting an array element with a sequence.

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

python 基础知识点(蓝桥杯python科目个人复习计划49)

今日复习内容&#xff1a;做复习题 例题1&#xff1a;希尔排序 题目描述&#xff1a; 希尔排序是直接插入排序算法的一种更高效的改进版本&#xff0c;但它是非稳定排序算法。希尔排序是基于插入排序的以下两点性质而提出的改进方法之一&#xff1a; 1.插入排序在对几乎已经…

C++初阶:容器适配器priority_queue常用接口详解及模拟实现、仿函数介绍

介绍完了stack和queue的介绍以及模拟的相关内容后&#xff1a;C初阶&#xff1a;容器适配器介绍、stack和queue常用接口详解及模拟实现 接下来进行priority_queue的介绍以及模拟&#xff1a; 文章目录 1.priority_queue的介绍和使用1.1priority_queue的初步介绍1.2priority_que…

Spring 手动实现Spring底层机制

目录 一、前言 二、Spring底层整体架构 1.准备工作 : 2.架构分析 : &#xff08;重要&#xff09; 3.环境搭建 &#xff1a; 三、手动实现Spring容器结构 1.自定义注解 : 1.1 Component注解 1.2 Scope注解 2.自定义组件 : 3.自定义用于封装Bean信息的BeanDefinition类&a…

【MySQL系列 04】深入浅出索引

一、索引介绍 提到数据库索引&#xff0c;相信大家都不陌生&#xff0c;在日常工作中会经常接触到。比如某一个 SQL 查询比较慢&#xff0c;分析完原因之后&#xff0c;你可能就会说“给某个字段加个索引吧”之类的解决方案。 但到底什么是索引&#xff0c;索引又是如何工作的…

【多线程】volatile 关键字、wait 和 notify方法详解

volatile 、wait 和 notify &#x1f332;volatile关键字&#x1f6a9;保证内存可见性&#x1f6a9;volatile 不保证原⼦性 &#x1f333;wait 和 notify方法&#x1f6a9;wait()&#x1f6a9;notify()&#x1f6a9;notifyAll()方法 ⭕wait 和 sleep 的对比&#xff08; 面试题…

yolo导出的onnx怎么使用onnxruntime进行图片分割

1.上几篇文件写了&#xff0c;怎么自定义自己的yolo数据&#xff0c;怎么训练自己自定义的数据&#xff0c;怎么用onnxruntime调用yolo导出的onnx模型&#xff0c;这文章进一步写用onnxruntime调用yolo导出的onnx模型进行图片分割。 视频讲解地址:https://www.bilibili.com/vi…

Java学习——常用API Runtime

Java的Runtime类是用来与Java运行时环境进行交互的。它提供了执行系统命令、获取内存信息等功能。Runtime类是一个单例类&#xff0c;即在Java应用程序中只能获得一个Runtime实例&#xff0c;用于代表Java应用程序的运行时环境。 获取Runtime实例 由于Runtime类的构造函数是私…

【GTK+-编程指南*】

GTK-编程指南 ■ GTK 简介 (GIMP Toolkit)■ GTK和GTK■ GTK 常用的库■ GTK 环境搭建■ GTK 语法■ GTK ■ GTK 简介 (GIMP Toolkit) GIMP全称&#xff1a;GNU 图像处理程序(Gnu Image Manipulation Program) GTK 是一套源码以LGPL许可协议分发、跨平台的图形工具包。 GTK也是…

基础光学系列:(一)光学在机器视觉中的角色:原理、应用与学习途径

光学是一门研究光的产生、传播以及与物质相互作用的科学&#xff0c;对于机器视觉技术的发展至关重要。机器视觉利用计算机和相机系统模拟人类视觉&#xff0c;解释和理解图像&#xff0c;广泛应用于制造业、医疗、安全监控等领域。本文旨在探讨光的传播原理及其在机器视觉中的…

处理器后面的字母什么意思?

我们在挑选电脑时&#xff0c;会见到各种各样的CPU型号&#xff0c;很多人可能不太了解处理器后面的各字母究竟代表着什么&#xff0c;今天我和大家分享一下常见的几种处理器后缀。 一&#xff0c;U 处理器后面跟字母U代表着移动平台低电压处理器&#xff0c;移动平台也就是笔…

低于API等级30的应用将无法在上述应用商店

minSdkVersion minSdkVersion用于指定应用兼容的最低Android版本&#xff08;API等级&#xff09;。 如果APP某些功能无法支持低版本Android系统的设备&#xff0c;可以配置minSdkVersion确保APP只能安装到指定Android版本以上的设备。HBuilder|HBuilderX中可在manifest.json中…

Essential C++ 基于对象的编程风格

Essential C 前言 前言 通过Essential C笔记的形式对C相关重点知识进行汇总&#xff0c;读者通读此系列文章就可以轻松的把该语言基础捡起来。

Linux的目录操作

Linux目录操作 获取当前工作目录 getcwd() 声明&#xff1a;char *getcwd(char *buf, size_t size);使用方法&#xff1a; getcwd用于获取当前工作目录&#xff0c;并将其保存在buf指向的缓冲区中。返回值&#xff1a; 返回一个指向buf的指针&#xff0c;若失败则返回NULL。注…

Linux快速修改ip地址

Linux修改IP配置 一 、查找ip配置文件 ifcfg-ens33二、编辑 vi ifcfg-ens33文件三、重启网络或者重启系统 一 、查找ip配置文件 ifcfg-ens33 cd /etc/sysconfig/network-scripts/ls //查看network-scripts文件夹下面的文件二、编辑 vi ifcfg-ens33文件 vi ifcfg-ens33注意&…

机器学习 深度学习资料 资源machine learning

Kaggle入门&#xff0c;看这一篇就够了 - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/25686876 day1-1.什么是机器学习_哔哩哔哩_bilibiliday1-1.什么是机器学习是10天学会机器学习从入门到深度学习的第1集视频&#xff0c;该合集共计62集&#xff0c;视频收藏或关注UP主&a…

【MySQL】如何理解MySQL的存储引擎

一、常见存储引擎 我们可以知道表的类型是由存储引擎决定的&#xff0c;如图所示&#xff0c;我们可以看到MySQL中支持八种储存引擎&#xff0c;那么我们这里就介绍常用的三种存储引擎&#xff0c;分别是Innodb、MyISAM、Memory。 二、Innodb、MyISAM、Memory的特点 1、Inno…

day10-项目集成sharding-jdbc-今日指数

项目集成sharding-jdbc 目标 1.掌握shardingjdbc标准分片模式&#xff1b; 2.理解项目分库分表的设计思路&#xff1b; 3.理解分库分表代码实现流程&#xff1b; 第一章 项目分库分表实现 1、股票数据预期增长分析 ​ 由于今日指数是偏向海量数据分析的产品&#xff0c;而…