视频流中ES,PES,PS,TS,RTP概念说明

2024-04-23 17:18
文章标签 rtp es 概念 说明 ts ps 视频流 pes

本文主要是介绍视频流中ES,PES,PS,TS,RTP概念说明,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

ES:又称为原始流,直接从编码器出来,可以是编码过的H264,MJPEG,音频AAC,音频G711等。ES只包含一种内容的视频,如只含视频或者只含音频。

PES: ES流经PES打包器形成,将ES流分组,打包,加入包头。PES包由包头和payload组成。PES包是PES流的基本单位。
PTS(Decoding Time Stamp)/DTS(Presentation Time Stamp):打在PES包的包头里面,用于表示时间,是音视频同步的关键。在ffmpeg中,PTS表示显示的时间,DTS表示的是解码的时间。同时,用ffmpeg处理的时候PTS必须大于或等于DTS,否则会返回-22的错误。

PS(节目流):由PS组成,而一个PS包又由若干个PES包组成,到这里,ES经过了两层的封装。PS包头包含了同步信息与时钟恢复信息。
关于PS流的具体格式以及具体分析可以参考博客:作者写的很好,我看的时候和我获取的海康的PS流有一些出入,但大体上都差不多https://blog.csdn.net/chen495810242/article/details/39207305

**TS(传输流)?*由定长的TS包包组成(188字节),而TS包是对PES包的一个重新封装(到这里,ES也经过了两层封装)。TS流较PS流的优势是信息丢失情况更好。TS包中的数据可以是视频数据,音频数据,填充数据,PSI/SI表格数据等。

**RTP(实时传输协议):**是一种针对互联网上多媒体码流的传输协议。RTP协议时长用于互联网点播,视频会议,视频监控等应用。RTP使用的包为RTP包,作用域传输层。

拓展:
RTSP+RTP主要用于IPTV,原因是传输数据使用的是UDP,网络环境比较稳定时传输效率较高,作用于应用层。
RTMP主要用于互联网音视频传输,TCP传输。RTMP作为流媒体协议,FLV作为封装格式,H.264作为视频编码格式,ACC作为音频编码格式。

点播服务普遍采用了HTTP作为流媒体协议,点播服务采用的封装格式有多种:MP4,FLV等。

**说明:**这些概念的解释都是我从网上摘取下来的,可能有不正确的地方,欢迎指正。但是可以大概的了解一下,有需要再每一个自己去百度详细了解。

这篇关于视频流中ES,PES,PS,TS,RTP概念说明的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/929414

相关文章

mybatis-plus QueryWrapper中or,and的使用及说明

《mybatis-plusQueryWrapper中or,and的使用及说明》使用MyBatisPlusQueryWrapper时,因同时添加角色权限固定条件和多字段模糊查询导致数据异常展示,排查发... 目录QueryWrapper中or,and使用列表中还要同时模糊查询多个字段经过排查这就导致只要whe

SpringBoot改造MCP服务器的详细说明(StreamableHTTP 类型)

《SpringBoot改造MCP服务器的详细说明(StreamableHTTP类型)》本文介绍了SpringBoot如何实现MCPStreamableHTTP服务器,并且使用CherryStudio... 目录SpringBoot改造MCP服务器(StreamableHTTP)1 项目说明2 使用说明2.1

SpringBoot整合(ES)ElasticSearch7.8实践

《SpringBoot整合(ES)ElasticSearch7.8实践》本文详细介绍了SpringBoot整合ElasticSearch7.8的教程,涵盖依赖添加、客户端初始化、索引创建与获取、批量插... 目录SpringBoot整合ElasticSearch7.8添加依赖初始化创建SpringBoot项

JAVA覆盖和重写的区别及说明

《JAVA覆盖和重写的区别及说明》非静态方法的覆盖即重写,具有多态性;静态方法无法被覆盖,但可被重写(仅通过类名调用),二者区别在于绑定时机与引用类型关联性... 目录Java覆盖和重写的区别经常听到两种话认真读完上面两份代码JAVA覆盖和重写的区别经常听到两种话1.覆盖=重写。2.静态方法可andro

zookeeper端口说明及介绍

《zookeeper端口说明及介绍》:本文主要介绍zookeeper端口说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、zookeeper有三个端口(可以修改)aVNMqvZ二、3个端口的作用三、部署时注意总China编程结一、zookeeper有三个端口(可以

Go语言中make和new的区别及说明

《Go语言中make和new的区别及说明》:本文主要介绍Go语言中make和new的区别及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1 概述2 new 函数2.1 功能2.2 语法2.3 初始化案例3 make 函数3.1 功能3.2 语法3.3 初始化

java中新生代和老生代的关系说明

《java中新生代和老生代的关系说明》:本文主要介绍java中新生代和老生代的关系说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、内存区域划分新生代老年代二、对象生命周期与晋升流程三、新生代与老年代的协作机制1. 跨代引用处理2. 动态年龄判定3. 空间分

MySQL之InnoDB存储引擎中的索引用法及说明

《MySQL之InnoDB存储引擎中的索引用法及说明》:本文主要介绍MySQL之InnoDB存储引擎中的索引用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录1、背景2、准备3、正篇【1】存储用户记录的数据页【2】存储目录项记录的数据页【3】聚簇索引【4】二

mysql中的数据目录用法及说明

《mysql中的数据目录用法及说明》:本文主要介绍mysql中的数据目录用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、版本3、数据目录4、总结1、背景安装mysql之后,在安装目录下会有一个data目录,我们创建的数据库、创建的表、插入的

Maven中的profiles使用及说明

《Maven中的profiles使用及说明》:本文主要介绍Maven中的profiles使用及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录主要用途定义 Profiles示例:多环境配置激活 Profiles示例:资源过滤示例:依赖管理总结Maven 中的