当前位置: 首页 > article >正文

视频协议与封装格式

视频协议

RTSP

RTSP协议是一个实时流传输协议,输出rtp封装码流,具有很好的可扩展性,新方法和参数很容易加入RTSP

ONVIF

ONVIF规范描述了网络视频的模型、接口、数据类型以及数据交互的模式。并复用了一些现有的标准,如WS系列标准等。ONVIF规范的目标是实现一个网络视频框架协议,使不同厂家所产生的网络视频产品完全互通。

  • 特点

                信令由WebService实现

                取流使用RTSP协议

                码流封装格式为rtp

                兼容性强,配套完善,市场占有率高

  • 使用场景

                第三方设备接入

                海外市场

RTMP

实时消息传输协议,输出flv封装码流。RTMP协议传输数据格式是RTMP Message,但在传输时发生端会把Message划分为带有Message ID的chunk,在接收端会根据chunk中包含data的长度,message id和message的长度把chunk还原完整的message,从而实现信息的收发。

HLS

HTTP Live Streaming,输出TS封装码流。

  • HLS协议由三部分组成,HTTP+M3U8+TS
  • HTTP是传输协议,M3U8是索引文件,TS是视音频的媒体信息
  • 利用切片技术按设定的时间间隔对TS码流进行切割并保存为一个TS文件

缺点:因为要有缓存,所以延迟严重

视频封装格式

RTP

RTP是实时传输协议,是rtsp协议码流传输的封装格式

RTP码流每帧中所有的时间戳相等,且最后一个RTP包,包头的mark bit置1,RTP包含RTP头和RTP数据

  • 优点:RTP封装包头有序列号,udp传输时可进行排序和丢包检测,适用于码流网络传输
  • 缺点:RTP封装头内没有包长的字段,写入文件后,无法读出一个完整的包,所以RTP封装的码流保存成文件是不能直接播放的,不适合存储

TS

TS是基于MPEG-2的封装格式,特点就是视频流的任一片段开始都是可以独立解码的,广泛应用于数字电视领域

TS分为三层ts层、pes层、es层

  1. es层就是音视频数据
  2. pes层是在音视频数据上加了时间戳等对数据帧说明信息
  3. ts层是在pes层上加入数据刘识别和传输的必要信息码流

TS码流采用固定长度188字节的数据包

  • 优点:

       当传输误码破坏了某一个TS包的同步信息时,接收端可在固定的位置检测到下一个TS包到同步信息,从而恢复同步,避免数据丢失,适用于在传输误码丢失,适用于传输误码丢失比较严重的网络场景

  • 缺点:

       负载有限,封装存在浪费,如果数据信息只有10字节大小也进行188字节TS封装,不建议用于存储

FLV

FLV主要是为了Adobe公司flash播放器和服务器之间音频视频和数据传输开发的开放协议RTMP协议的网络传输

FLV包括文件头和文件体两部分,文件体由一系列的Tag及Tag size对组成,Tag又可以分为audio、video和script,分别代表音频流,视频流和脚本流

  • 优点

                文件体积小,便于传输、共享

                众多网站支持所有

  • 缺点

                不被所有播放器支持

PS

ps是程序流或节目流的简称,程序流将一个或多个分组但有共同的时间基准的基本数据流(PES)合并成一个整体流

PS流可以视为多个PS GOP,每个GOP是以I帧起始的多帧集合,包括音频帧、P/B帧等多个PS包组成

  • 优点:定义较多可扩展字段,拓展性好,结构简单,易于分割,和TS封装相比,相同视频时长的数据量较少,适用于存储
  • 缺点:PS流的包结构是可变长的,一旦某一PS包同步信息丢失,接收端无法确定下一个包的同步位置,就会造成失步,导致严重的信息丢失,在信道环境较好,传输误码较低时,采用PS码流网络传输

http://www.kler.cn/a/372419.html

相关文章:

  • 设计模式的主要分类是什么?请简要介绍每个分类的特点。
  • YOLOv9-0.1部分代码阅读笔记-benchmarks.py
  • apisix的hmac-auth认证
  • 基于谱聚类的多模态多目标浣熊优化算法(MMOCOA-SC)求解ZDT1-ZDT4,ZDT6和工程应用--盘式制动器优化,MATLAB代码
  • .NET常用的ORM框架及性能优劣分析总结
  • Node.js 工具:在 Windows 11 中配置 Node.js 的详细步骤
  • 题目:输入某年某月某日,判断这一天是这一年的第几天?
  • 【Qt】QProcess用法小结
  • C# Solidworks二次开发:宏录制实战讲解(第一讲)
  • echarts属性之axisPointer
  • SELS-SSL/TLS
  • 【python】os.fork进程创建
  • SCSI驱动与 UFS 驱动交互概况
  • Maven 下载与安装详细教程,新手也很适用!
  • unity3d——Time
  • QModbus使用时出现内存增加的问题
  • 5G RAN
  • 跨平台实现实时通讯
  • SpringCloudAlibaba实战入门之Nacos注册中心(四)
  • 为什么STM32的HAL库那么难用,ST还是要硬推HAL库?
  • 方法+数组
  • 每天五分钟深度学习:逻辑回归和神经网络
  • 电子电气架构 --- 车载以太网的未来已经来临
  • 解决Eclipse中’Run As’菜单缺少’Run on Server’选项的问题
  • appium+mumu模拟器+python 嚼碎菜鸟教程
  • Flutter登录界面使用主题