私有RTP协议和标准流媒体协议

先介绍下RTP协议:
实时传输协议RTP(Real-time Transport Protocol)是一个网络传输协议 ,该协议详细说明了在互联网上传递音频和视频的标准数据包格式 。
RTP标准定义了两个子协议 ,RTP和RTCP
数据传输协议RTP,用于实时传输数据。该协议提供的信息包括:时间戳(用于同步)、序列号(用于丢包和重排序检测)、以及负载格式(用于说明数据的编码格式)。
控制协议RTCP,用于QoS反馈和同步媒体流。相对于RTP来说,RTCP所占的带宽非常小,通常只有5%。
TCP会通过超时和重传机制保证数据流的每一个bit的正确性,但这样会使得无论从协议的实现还是传输的过程都变得非常的复杂。而且,当传输过程中有数据丢失的时候,由于对数据丢失的检测(超时检测)和重传,会数据流的传输被迫暂停和延时。
RTP协议是一种基于UDP的传输协议,RTP本身并不能为按顺序传送数据包提供可靠的传送机制,也不提供流量控制或拥塞控制,它依靠RTCP提供这些服务。
对于那些丢弃的包,也可以由上层根据其重要性来选择性的重传。比如,对于I帧、P帧、B帧数据,由于其重要性依次降低。
在这里插入图片描述
RTP是建立在UDP之上的传输层协议。
RTP会话过程:
当应用程序建立一个RTP会话时,应用程序将确定一对目的传输地址。目的传输地址由一个网络地址和一对端口组成,有两个端口:
一个给RTP包,一个给RTCP包,使得RTP/RTCP数据能够正确发送。RTP数据发向偶数的UDP端口,而对应的控制信号RTCP数据发向相邻的奇数UDP端口(偶数的UDP端口+1),这样就构成一个UDP端口对。
RTP协议从上层接收流媒体信息码流(如H.264),封装成RTP数据包;RTCP从上层接收控制信息,封装成RTCP控制包。
RTP将RTP 数据包发往UDP端口对中偶数端口;RTCP将RTCP控制包发往UDP端口对中的接收端口,即奇数端口。
接下来再介绍下标准流媒体协议

流媒体(streaming media)是指将一连串数据压缩后,经过网络分段发送,即时传输以供观看音视频的一种技术。

通过使用 streaming media 技术,用户无需将文件下载到本地即可播放。由于媒体是以连续的数据流发送的,因此在媒体到达时即可播放。可以像下载的文件一样进行暂停、快进或后退操作。

对于流视频协议,大多数数字视频是为了两件事情:存储和播放。要满足这样的需求,视频需要满足小文件和通用播放这两点。
大多数视频文件都不适合流式传输。流式传输需要将音视频分割成小块(chunk),将这些小块按顺序发送,并在接收时播放。如果正在直播,则视频源来自于摄像机;否则,来自于文件。
流媒体协议是一种标准化的传递方法,用于将视频分解为多个块,将其发送给视频播放器,播放器重新组合播放。 大部分流协议是码率自适应(adaptive bitrate)的,这项技术可以在任一时间为用户提供最佳质量视频。
编、解码器(codec)指视频压缩技术。不同的编、解码器用于不同的目的。 即使不需要使用流式协议,视频也需要使用解编码器进行编码、解码。
通常,视频格式指视频文件格式(container format)。常见 container format 包括 .mp4、.m4v、.avi、.mov等,container format 只是一个框(box),框中通常包含视频文件、音频文件和元数据。视频文件格式并不是流式的核心概念。
形象比喻: 假设你是商人,需要批量运输衣服(衣服就是视频)。编解码器就是将衣服压缩成捆以节省空间的机器容器格式就是装压缩后衣服的集装箱流协议就是将其运输到目的地的铁轨、信号灯和驾驶员。
常见的流协议有:RTMP、MPEG-DASH、MSS、HDS、HLS
Reference:
https://www.cnblogs.com/yuweifeng/p/7563265.html
https://blog.csdn.net/zhangbijun1230/article/details/90407090
https://www.jianshu.com/p/d71ceef679de

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

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

相关文章

从WebRtc学习RTP协议

文章目录TCP为何不适用于实时音视频UDP->RTPRTP协议结构JittbufferRTP扩展头RTP填充数据参考TCP为何不适用于实时音视频 可靠性是以牺牲实时性为代价的。按照TCP原理,当出现极端网络情况时,理论上每个包的时延可达到秒级以上,而且这种时延…

解决ListView异步加载数据之后不能点击的问题

在ListView的onScroll事件中执行异步加载数据,然后使用notifyDataSetChange()函数更新适配器,之后发现listView不能点击了,这问题苦恼了我半天。最后在一篇博文中发现调用listView的requestFocusFromTouch()函数终于解决了这问题。 Java代码…

从WebRtc学习RTCP协议

文章目录RTCP支持的消息类型RTCP协议头WebRTC的反馈报文RTPFB支持的报文类型:PSFB支持的报文类型:参考RTCP是RTP的控制协议.那么RTCP能对RTP做哪些控制呢?其中最为大家熟知的就是 丢包控制。发送端发送数据后,接收端如果发现有RTP…

无锁队列设计思路以及简要代码

文章目录非并发的一写一读环形队列多读多写环形队列非并发的一写一读环形队列 读指针: 1、先判断是否有数据 2、读取数据 3、操作指针 写指针: 1、先判断空间是否足够 2、写入数据 3、操作指针 所以代码也十分简单: bool putqueue(void* pDa…

CPU Cache对于并发编程的影响

文章目录引子CPU Cache对于并发的影响读写顺序对性能的影响字节对齐对Cache的影响小结引子 下面给出两个极其相似的代码&#xff0c;运行出的时间却是有很大差别&#xff1a; 代码一 #include <stdio.h> #include <pthread.h> #include <stdint.h> #includ…

软工之初识

我们之前已经在完全不懂软件工程的情况下&#xff0c;已经做完了两个小系统&#xff0c;虽然能够运行&#xff0c;但其中有很多的问题&#xff0c;学习软工就是让我们在工程学原理的指导之下去开发和设计软件。 软件工程同大多数书讲的都是一样的&#xff0c;首先对软件工程有一…

perf +火焰图使用

以mysqld进程为例&#xff1a; [rootVM-90-225-centos ~]# ps -ef | grep mysqld root 9808 9621 0 19:30 pts/7 00:00:00 grep --colorauto mysqld root 16104 1 0 17:30 pts/0 00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir/usr/loc…

在一个字符串中找到第一个只出现一次的字符

题目&#xff1a;在一个字符串中找到第一个只出现一次的字符&#xff0c;如输入abaccdeff&#xff0c;则输出b&#xff1b;具体实现如下&#xff1a;#include <iostream> #include <string> using namespace std; void FindChar(const string &strBuf) {int nA…

零拷贝机制在文件传输中的使用手法

文章目录文件传输&#xff08;读取与发送&#xff09;中的拷贝与上下文切换零拷贝技术sendfilesendfile SG-DMAmmap writespliceDirect I/O经典应用文件传输&#xff08;读取与发送&#xff09;中的拷贝与上下文切换 如果服务端要提供文件传输的功能&#xff0c;最简单的方式…

POJ 3233 Matrix Power Series 矩阵快速幂 + 二分

题意&#xff1a;求矩阵的次方和 解题思路&#xff1a;最容易想到方法就是两次二分因为 我们可以把一段 A^1 A^2 .......A^K 变成 A^1 ..A^(K/2) ( A^1 ..A^(K/2))*(A^(k/2)) 当k 为奇数的时候 或者 A^1 ..A^(K/2) ( A^1 ..A^(K/2))*(A^(k/2)) A^K 当K 为偶数的时候…

时间序列进行分析的一些手法以及代码实现(移动平均、指数平滑、SARIMA模型、时间序列的(非)线性模型)

文章目录1、移动平均moving average方法weighted average方法2、指数平滑单指数平滑 exponential_smoothing双指数平滑三指数平滑 Triple exponential smoothing3、平稳性以及时间序列建模SARIMA模型4、时间序列的&#xff08;非&#xff09;线性模型时间序列的滞后值使用线性回…

三大平衡树(Treap + Splay + SBT)总结+模板

Treap树 核心是 利用随机数的二叉排序树的各种操作复杂度平均为O(lgn) Treap模板&#xff1a; #include <cstdio> #include <cstring> #include <ctime> #include <iostream> #include <algorithm> #include <cstdlib> #include <cmath…

mysqld进程 ut_delay 占用率过高

采用性能分析工具perf top -p mysqld进程 在测试mysql数据库时&#xff0c;用perf top如果看到热点函数是ut_delay或者_raw_spin_lock的话&#xff0c;说明锁争用比较严重。 ut_delay这是innodb的一个自旋琐。也就是说&#xff0c;在这里由于锁等待&#xff0c;innodb不停地在…

滑动窗口在重构数据集的作用

step1&#xff1a;使用滑动窗口重构数据集 给定时间序列数据集的数字序列&#xff0c;我们可以将数据重构为看起来像监督学习问题。 我们可以通过使用以前的时间步作为输入变量并使用下一个时间步作为输出变量来做到这一点。 通过观察重构后的数据集与原本的时间序列&…

sliverlight - Unhandled Error in Silverlight Application错误

使用firebug控制台输出错误&#xff1a; Unhandled Error in Silverlight Application 查询“GetFlow_Process”的 Load 操作失败。远程服务器返回了错误: NotFound。 位于 System.ServiceModel.DomainServices.Client.OperationBase.Complete(Exception error) 位于 System.S…

前向验证对于模型的更新作用

首先&#xff0c;让我们看一个小的单变量时间序列数据&#xff0c;我们将用作上下文来理解这三种回测方法&#xff1a;太阳黑子数据集。该数据集描述了刚刚超过 230 年&#xff08;1749-1983 年&#xff09;观察到的太阳黑子数量的每月计数。 数据集显示了季节之间差异很大的…

PHP-面向对象(八)

1、多态的介绍与优势 多态性是继抽象和继承后&#xff0c;面向对象语言的第三个特征。从字面上理解&#xff0c;多态的意思是“多种形态”&#xff0c;简单来说&#xff0c;多态是具有表现多种形态的能力的特征&#xff0c;在OO中是指“语言具有根据对象的类型以不同方式处理。…

双指数平滑中参数对于预测模型的影响

先看看α 在β一致的情况下&#xff0c;α越小&#xff0c;模型越滞后。 再看看β 在α一致的情况下&#xff0c;β越大&#xff0c;模型对于趋势的预测更敏锐。

分页查询

分页查询算是比较常用的一个查询了在DAO层主要是查两个数据第一个总条数第二个要查询起始记录数到查询的条数当第一次点击查询时候(非下一页时Page类里面预设的就是 index就是0 pageSize是预设值当点击下一页的时候 index 和 pageSize带的就是页面上面给的值了分页的页面一般的…

me23n去价格

SELECT knumv kposn AS ebelp kschl kbetr kpein kwert INTO CORRESPONDING FIELDS OF TABLE gt_konv FROM konv FOR ALL ENTRIES IN gt_ekpo WHERE knumv gt_ekpo-knumv AND kinak EQ AND kschl IN (PB00,PBXX,P101).转载于:…