第六季:RTSP协议详解与实时流视频预览

Web浏览器播放rtsp视频流详细解决方案 (1)、浏览器插件方案这种方案依赖于浏览器插件或者控件,在浏览器中播放 RTSP/RTMP 流,但这种方法存在一些局限性,尤其在移动平台上不可用。a. VLC浏览器控件(已过期)简介:VLC是一个开源的媒体播放器,曾经可以通过浏览器插件来播放RTSP流。缺点:VLC控件已经过时,仅支持老版本的浏览器,而且在移动端完全不支持。推荐度:不推荐,已经过时,无法满足现代Web的需求。b. Flash控件(已淘汰)简介:Flash曾是Web视频流的标准,通过Flash插件可以播放RTMP流。 阅读详情

前言

本篇文章用于记录实验过程

1 环境准备

资料:

链接:https://pan.baidu.com/s/18J8JjYrWGIQMgYxwacIYjg?pwd=wgg9 
提取码:wgg9 
--来自百度网盘超级会员V4的分享

下载的sample_rtsp.rar加压到mpp目录下,并改名

unrar x sample_rtsp.rar
mv sample_bak/ sample_rtsp
ls

在这里插入图片描述

cd sample_rtsp/venc
make clean
make -j6
ls

在这里插入图片描述

cp sample_venc /mnt/hisilion_nfs/ -rf

在开发板中运行程序。

打开VLC播放器,使用网络串流连接开发板,URL改成你的开发板IP地址
在这里插入图片描述

2 H.264编码原理和基本概念

2.1 图像冗余信息

(1)空间冗余:一张图片中,颜色完全相同的一大片区域,可以用一个点表示颜色,另外需要记录着个区域的范围,这样可以节省很多内存空间。
(2)时间冗余:一个视频中,有些时间段,一直是一幅图片保持不变,这种情况可以只保留一张图片。

2.2 h.264编码相关的一些概念

(1)宏块 MB macroblock:多个像素点组成的一个区域,这些像素点的颜色应保持相似或相同,压缩算法以宏块为单位进行压缩。
(2)片 slice:一个帧可以由一个片或者多个片构成,片内包含一个或多个宏块。
(3)帧 frame:一帧就是一幅图片。
(4)I帧、B帧、P帧:
I帧(这一帧和前后帧不相关,例如:不需要考虑时间冗余,起始帧就是I帧,只能去除空间冗余)。
B帧(参考前一帧也参考后一帧,B帧很少见到)。
P帧(只参考前一帧,进行空间冗余和时间冗余的计算)。
(5)帧率 fps:每秒钟,显示多少张图片。
(6)像素->宏块->片->帧->序列->码流

2.3 h264视频流总体分析

(1)h264标准有多个版本,可能会有差异,具体差异不详
(2)网上看的资料有时讲法会有冲突,或者无法验证的差异
(3)以海思平台为主、为准、为案例,不能保证其他平台也完全一样
(4)海思平台编码出来的H.264码流都是一个序列包含:1sps+1pps+1sei+1I帧+若干p帧

2.4 H264的NAL单元详解2

NAL全称Network Abstract Layer, 即网络抽象层。
在H.264/AVC视频编码标准中,整个系统框架被分为了两个层面:视频编码层面(VCL)和网络抽象层面(NAL)。其中,前者负责有效表示视频数据的内容,而后者则负责格式化数据并提供头信息,以保证数据适合各种信道和存储介质上的传输。因此我们平时的每帧数据就是一个NAL单元(SPS、PPS、SEI除外)。在实际的H264数据帧中,往往帧前面带有00 00 00 01 或 00 00 01分隔符,一般来说编码器编出的首帧数据为PPS与SPS,有的标准中也包含SEI,接着为I帧……

NAL单元 = I帧 + P帧

2.4.1 相关概念

(1)序列 sequence
一个序列包含:1sps+1pps+1sei+1I帧+若干p帧
使用百度网盘内附带的软件打开 ar0130.h264 这个文件
在这里插入图片描述
如上图所示,图中只展示了有效数据,没有展示分隔符,序列号3 是I帧,4是P帧。0 1 2 在后面会进行详细介绍。

(2)分隔符
使用winhex打开 ar0130.h264 这个文件,这个文件在本文开头的百度网盘内
在这里插入图片描述
上面的00 00 00 01就是一个分隔符,这是h.264编码协议规定的,如果有效数据中包含了连续的三个00,则在第二个和第三个之间添加03,即00 00 03 00 01。
分隔符后面的第一个字节决定了这段内容属于什么帧,详细内容:

https://blog.youkuaiyun.com/jefry_xdz/article/details/8461343

在这里插入图片描述
对引用的博客进行说明补充,上面图片中的(2)部分,表示数据传输时的优先级,数字越大优先级越高。
在这里插入图片描述

由图可知,P帧的优先级为3,首位为0,帧类型为P帧。如果出现网速慢,而且需要保持网络视频的实时性,通信协议会丢弃优先级较低的内容。

(3)sps (sequence paramater set)
sps和pps详解:

https://www.cnblogs.com/wainiwann/p/7477794.html

先介绍SPS。

在这里插入图片描述
上图,NAL_Size表示字节,图中的SPS占14个字节。
在这里插入图片描述
如上图所示,结合SPS占14个字节,67 42 … 80 81,这段内容就是SPS。

(4)pps
pps对应的内容68 CE 3C 80,共占4个字节。
在这里插入图片描述

(5)sei
sei对应的内容06 E5 01 34 80,共占5个字节。
在这里插入图片描述

(6)NALU

2.5 NALU详解

H.264由一个一个的NALU组成,每个NALU之间使用00 00 00 01或00 00 01分隔开

参考阅读:
https://blog.youkuaiyun.com/jefry_xdz/article/details/8461343
https://blog.youkuaiyun.com/special00/article/details/82533768

2.6 sps和pps详解

 https://www.cnblogs.com/wainiwann/p/7477794.html

2.7 H264的profile和level

https://blog.youkuaiyun.com/xiaojun111111/article/details/52090185

2.8 序列sequence

(1)一段h.264的码流其实就是多个sequence组成的

(2)每个sequence均有固定结构:1sps+1pps+1sei+1I帧+若干p帧

(3)sps和pps和sei描述该sequence的图像信息,这些信息有利于网络传输或解码

(4)I帧是关键,丢了I帧整个sequence就废了,因为P帧参考I帧,I帧是起始帧,每个sequence有且只有1个I帧

(5)p帧的个数等于fps-1

(6)I帧越大则P帧可以越小,反之I帧越小则P帧会越大

(7)I帧的大小取决于图像本身内容,和压缩算法的空间压缩部分

(8)P帧的大小取决于图像变化的剧烈程度

(9)CBR(固定码率)和VBR(可变码率)下P帧的大小策略会不同,CBR时P帧大小基本恒定,VBR时变化会比较剧烈。码率就是P帧的大小,P帧大小固定时,如果当前帧相比于前一帧的变化不大,清晰度保持不变,如果变化大,而且变化的字节数超过了固定的码率,清晰度会下降;可变码率的清晰度一直不变,但当图像变化大时,字节数会增加,导致网络传输的字节数变大,如果网速慢,视频会出现卡顿的情况。

(10)如果当前帧和前一帧相比,变化非常小,则P帧所占的字节数就很小。

本文许多结论是基于我们的海思HI3518E平台得到的,对于其他平台并不一定适用!

【入门篇】RTSP协议详解 一、RTSP协议简介 1、定义 RTSP(Real Time Streaming Protocol)是由Real Network和Netscape共同提出的如何有效地在IP网络上传输流媒体数据的应用层协议。RTSP对流媒体提供了诸如暂停,快进等控制,而它本身并不传输数据,RTSP的作用相当于流媒体服务器的远程控制。服务器端可以自行选择使用TCP或UDP来传送串流内容,它的语法和运作跟HTTP 1.1类似,但并不特别强调时间同步,所以比较能容忍网络延迟。而且允许同时多个串流需求控制(Multicast),除了 阅读详情

相关推荐

Win10环境:使用VLC搭建RTSP服务器

VLC 是一款自由、开源的跨平台多媒体播放器及框架,可播放大多数多媒体文件,以及 DVD、音频 CD、VCD 及各类流媒体协议。既可以作为客户端来播放远程视频,也可以作为RTSP服务器对外发布视频,今天要说的正式后者 安装VLC 从VideoLan选择合适的版本并下载 双击“vlc-3.0.1-win32.exe”按照导航安装 安装完成后如下图: VLC RTSP server 在进...

煎鸡蛋汤 2万+

RTSP视频流显示(海康威视)

RTSP视频流显示(海康威视)VLCSDK(C++)ffmpeg+Nginx 本文目的主要是想要在html上实时显示海康威视的摄像头数据,笔者尝试了如下三种方式: VLC SDK(C++) ffmpeg+Nginx 下面分别说说通过这几种方式如何实现在web页面上显示。 VLC 填的地址就是摄像头RTSP视频流地址,然后点串流: 左上角是这样的说明就已经在转换了: 网页显示注意...

会飞的蜗牛 10万+

RTSP学习(1)概念

参考: RFC中文文档:http://www.cnpaf.net/class/RFC/ 传输协议 RTP:实时传输协议 RTCP:实时传输控制协议 RTSP:实时流传输协议 RTMP:实时消息传输协议 RTMFP:Adobe实时消息流协议(P2P协议) HTTP:超文本传输协议 RTSP:实时流协议 RTSP的请求主要有DESCRIBE,SETUP,PLAY,PAUSE,TEARD...

QQ2558030393的博客 762

手把手教你rtsp流媒体分析(引导篇,欢迎订阅专栏)

在安防行业中,onvif协议与gb协议是两种标准,gb是国内安防行业的标准,onvif是国外的安防行业的标准,其中gb28181中视频流是ps流、由设备、下级平台推送到上级平台,具有上公有云的特点,而onvif视频流采用的是rtsp,通常用于内网访问,当需要rtsp流可以上公有云的话,可以使用r-rtsp,r-rtsp交互流程正好与rtsp流程相反,由服务端主动发起请求。本文主要讲解了RTSP的主要流程以及RTP,RTCP的包分析,本文主要介绍的H264的包结构,希望能够让你对rtsp有个深刻的认识。

weixin_44834554的博客 5326

海思3518E开发笔记6.1——RTSP实时图传源码分析

目录源码框架分析RtspServer_initSAMPLE_VENC_720P_CLASSIC详细分析RtspServer_init 源码框架分析 主函数中只有两部分,初始化rtsp服务和视频编码程序 RtspServer_init 我们在编写代码前的设想是让开发板作为服务器,windows作为客户端。于是服务器一定是先运行,然后像socket那样初始化完成后阻塞监听,等待客户端连接。 S(server)C(client)模式,基本都是这样的结构。 初始化部分代码如下 void RtspServer_in

路人coder 3226

基于live555的rtsp播放器之四:视频数据接收

一.h264中的I、P和B帧

草上爬的博客 4157

网络流媒体(七)———RTSP

1 简介 DSP产生的媒体流需要通过网络传送到客户端,如图1.1所示为媒体流网络传输示意图,RTSP用于完成服务器与客户端之间的消息交互,RTP用于传递媒体流。RTSP使用TCP协议传输,RTP使用UDP协议传输。 如图1.2所示为RTSP消息交互流程:1. 创建RTSP套接字。2. 等待客户端连接。3. 接收RTSP消息请求。4. 对不同的请求作出相应的处...

yangguoyu8023的博客 9628

VLC搭建RTSP直播流,图文介绍

将一个视频转成rtsp流,通过vlc播放器,搭建一个rtsp服务器,让rtsp客户端去访问这个视频的rtsp流 1 需要有vlc播放器,我的版本如下 2 媒体 --> 流 3 添加视频文件 ,点击添加一个mp4 文件 4 选择串流,然后 点击 "下一个" 5 选择新目标,RTSP ,然后点击添加 6 端口默认,路径添加个自定义名......

遇见--专栏 5万+

RTSP视频推流方法汇总

RTSP推流,opencv,rtsp-simple-server,ffmpeg,gstreamer,live555

1万+

VisionMaster图像源模块的5个隐藏功能:从自动切换到二次开发接口

本文深入解析了VisionMaster图像源模块的5个隐藏功能,从基础的自动切换与字符触发过滤,到高级的脚本扩展与基于COM组件的二次开发接口。这些功能能显著提升工业视觉项目的自动化水平、灵活性与系统集成能力,帮助开发者实现更高效的离线测试流水线和外部精确控制。

rgv23456789的博客 651

LNA设计学习心得记录----MOS管的选取

LNA设计学习心得---MOS管的选取仿真

weixin_40359668的博客 6125

第六季:RTSP协议详解与实时流视频预览(2)

经过上篇文章的学习,我们已经了解了H.264标准的基本组成与原理,知道了发送的数据的格式与组成,即NALU。但是数据的发送要通过RTSP协议进行发送,所以我们这篇文章再来学习一下RTSP协议。OSI参考模型注重“ 通信协议的必要功能是什么”,而TCP/IP更强调“在计算机上实现协议应该开发那种程序”

forecasts的博客 915

PLC编程进阶:结构体(UDT)与功能块(FB)的模块化实践指南

本文深入探讨了PLC编程中实现模块化的核心方法,重点解析了结构体(UDT)与功能块(FB)的协同应用。通过将零散数据封装为UDT,并将控制逻辑打包为可复用的FB,能够构建出结构清晰、易于维护和调试的PLC程序。文章结合拧紧枪、电机控制等实战案例,提供了从设计原则到分层架构的完整实践指南,旨在帮助工程师将混乱的‘面条式’代码改造为高效的‘正规军’。

s3t4u的博客 219

RTSP和SDP协议学习

RTSP和SDP协议学习 版本说明 版本 作者 日期 备注 0.1 loon 2019.2.14 初稿 目录 文章目录RTSP和SDP协议学习版本说明目录第一部分:RTSP协议一、RTSP协议概述二、RTSP协议与HTTP协议区别三、RTSP重要术语四、RTSP请求消息五、RTSP回应消息六、RTSP 重要方法1. OPTIONS2. DESCRIBE3. SETUP4. P...

逍遥游的博客 3397

Android CCodec (十七) 硬件解码调用分析-1(基于V4l2)

简单的分析V4L2DecodeComponent和其相关内容,后续针对解码调用单独分析。

给大佬递杯卡布奇诺的博客 6593

【PCL 特征】积分图法线估计

本文介绍了基于积分图的有序点云法线估计方法。通过利用点云数据的行列式结构特性,该方法避免了传统KD树搜索,采用积分图将邻域统计运算复杂度从O(k²)降至O(1)。详细阐述了四种法线估计算法:协方差矩阵法(精度最高)、平均3D梯度法(实时性好)、平均深度变化法(适合SLAM)和简单3D梯度法(速度最快)。重点分析了积分图构建、动态窗口平滑处理、法线方向调整等关键技术,并提供了PCL实现代码示例。实验表明,不同方法在精度和速度上存在显著差异,可根据具体应用场景选择合适算法。

yijiujiusan的博客 275

使用OBS-Studio软件推流直播教程,支持RTMP及RTSP两种协议

OBS,RTMP推流直播,RTSP推流直播

bacawa的博客 1万+

Authentication Assertion Tickets,SAP 系统到系统单点登录里的短命凭证

SAP 系统间的身份传递机制存在 Authentication Assertion Ticket 和 SAP Logon Ticket 两种易混淆的凭证。前者用于系统间短时身份委托(有效期2分钟,通过HTTP头传输),后者用于浏览器SSO(可配置有效期,通过Cookie传输)。Assertion Ticket依赖签发系统的数字签名和严格的时间同步,适用于ABAP/Java系统间的后台作业调用。现代SAP架构已转向OAuth 2.0等标准协议,但老系统中仍需注意两种票据的关键差异:传输方式、有效期、接收方限制

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 602

(第六讲)RTMP,RTSP,RTP概念

这么说吧RTMP,RTSP是一伙的,包含了通信协议的定义,比如握手之类的。而rtp是流的内容,更应该归类到上一讲中的NALU,avcc这类中。行业场景:GB28181设备、安防平台接收终端RTSP推流。,媒体数据走RTP;

weixin_39766667的博客 256

EuROC 数据集格式及相关代码

Euroc提供ROS和zip两种数据格式。

~勿据散客~的博客 2093

手把手教你学PCIE--所有 PF(Physical Function)共同管理和分配 VF

但具体如何分配和使用 VF 取决于硬件设计、驱动程序配置以及实际应用场景。

MHD0815的博客 1462

RTSP协议--图文解释

RTSP协议--图文解释

m0_60259116的博客 783

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

流媒体协议——RTSP协议详解

RTSP简介 RTSP(Real Time Streaming Protocol)是由Real Network和Netscape共同提出的如何有效地在IP网络上传输流媒体数据的应用层协议。RTSP对流媒体提供了诸如暂停,快进等控制,而它本身并不传输数据,RTSP的作用相当于流媒体服务器的远程控制。服务器端可以自行选择使用TCP或UDP来传送串流内容,它的语法和运作跟HTTP 1.1类似,但并不特...

怀素的专栏 647

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

RTSP与HTTP协议简介

 一。RTSP协议简介  流媒体技术是一系列的网络协议的集合,包括:  1. 实时传输协议RTP(Real-time Transport protocol)  2. 实时传输控制协议RTCP(Real-time Transport Control protocol)  3. 实时流协议RTSP(Real Time Streaming protocol)  4. 资源预留协议RS

thebeginner的专栏 1009

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

海康将摄像头传输过来的rtsp协议转换成rtmp

如何将rtsp协议转换成rtmp协议在线直播,其实没有方案。至少目前我还不知道有哪种方案可以实现,但是EasyDrawin这个开源的流媒体服务器已经开始将rtsp协议直接在线转换成rtmp协议提到了迭代中。那么既然没有方案,能不能间接实现呢,有,还是通过流媒体服务器,实现原理就是流媒体服务器将rtsp协议直播流以m3u8的格式储存到本地,然后,浏览器通过各种视频播放组件去播放m3u8格式的文件。目前全网的方案也都是这种,只是用的技术手段不一样,流媒体服务器不一样而已。那么我来分享一下如何实现将rtsp协议间

oTingFeng1234的博客 2405

使用VLC搭建RTSP服务器

VLC是一款自由、开源的跨平台多媒体播放器及框架,可播放大多数多媒体文件,以及 DVD、音频 CD、VCD 及各类流媒体协议。既可以作为客户端来播放远程视频,也可以作为RTSP服务器对外发布视频,今天要说的正式后者 ​​ 安装VLC 从VideoLan选择合适的版本并下载,双击“vlc-3.0.1-win32.exe”按照导航安装 VLC RTSP server 在进行这一步之前...

whatday的专栏 2658
上一篇: 第5季:海思平台USB WIFI无线网卡移植(2)
下一篇: 第六季:RTSP协议详解与实时流视频预览(2)
金银588
博客等级 码龄7年 1210粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值