流媒体技术

1:I帧, P帧, B帧区别? 及作用, 帧率概念是什么?

//https://blog.csdn.net/dxpqxb/article/details/7625652?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.nonecase

在H264协议里定义了三种帧,完整编码的帧叫I帧,参考之前的I帧生成的只包含差异部分编码的帧叫P帧,还有一种参考前后的帧编码的帧叫B帧,
在H264中图像以序列为单位进行组织,一个序列是一段图像编码后的数据流,以I帧开始,到下一个I帧结束
一个序列的第一个图像叫做 IDR 图像(立即刷新图像),IDR 图像都是 I 帧图像。H.264 引入 IDR 图像是为了解码的重同步,当解码器解码到 IDR 图像时,立即将参考帧队列清空,将已解码的数据全部输出或抛弃,重新查找参数集,开始一个新的序列。这样,如果前一个序列出现重大错误,在这里可以获得重新同步的机会。IDR图像之后的图像永远不会使用IDR之前的图像的数据来解码。
一个序列就是一段内容差异不太大的图像编码后生成的一串数据流。当运动变化比较少时,一个序列可以很长,因为运动变化少就代表图像画面的内容变动很小,所以就可以编一个I帧,然后一直P帧、B帧了。当运动变化多时,可能一个序列就比较短了,比如就包含一个I帧和3、4个P帧.
I帧:帧内编码帧 ,I帧表示关键帧,你可以理解为这一帧画面的完整保留;解码时只需要本帧数据就可以完成
P帧:前向预测编码帧。P帧表示的是这一帧跟之前的一个关键帧(或P帧)的差别,解码时需要用之前缓存的画面叠加上本帧定义的差别, P帧采用运动补偿的方法传送它与前面的I或P帧的差值及运动矢量(预测误差);
B帧:
B帧记录的是本帧与前后帧的差别,B帧是由前面的I或P帧和后面的P帧来进行预测的,B帧压缩比最高,因为它只反映丙参考帧间运动主体的变化情况,预测比较准确.

2:图像传输延时主要在哪几方面? 怎么降低延迟?

延迟端到端, 主要包括:
1.编码时间
2.IP链路上传输延迟
3.传输过程中的缓冲区调度
4.流媒体服务器转发时间
5.终端解码时间
如何降低延迟?
1.去掉B帧(计算前后帧的差别)
2.减少流媒体转发层级
3.减少编码器和客户端缓存区
从上面的解释看, 我们知道I帧和P帧的解码算法比较简单, 资源占用也比较少, I帧只要自己完成就行了, P帧, 需要解码器吧前一个画面缓存一下, 遇到P帧是就使用之前缓存的画面来计算就好饿了, 如果视频流只有I帧和P帧, 解码器可以不管后面的数据, 边读边解码, 线性前进, 大家舒服.
但网络上电影很多都采用B帧, 因为B帧记录的前后帧差别, 比P帧能能就节约存储空间(I帧的压缩率为7, P帧的压缩率为20, B帧压缩率为50), 但因B帧需要根据前后帧来计算, 所以算法更麻烦, 延迟更高点, 而且, B帧不能简单地丢掉, 因为B帧其实也包含画面信息, 如果丢掉, 并用之前的画面简单重复, 就会造成画面卡.

3:流媒体各个协议(IP, TCP, UDP RTP/RTCP , RTSP, SDP)

 H264/MPEG4是一个种码流的编解码技术,非传输协议.
RTSP在体系结构上位于RTP和RTCP之上,它使用TCP或UDP完成数据传输。HTTP与RTSP相比,HTTP传送HTML,而RTSP传送的是多媒体数据![在这里插入图片描述](https://img-blog.csdnimg.cn/20200714204434105.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3l1eWl4aW9uZw==,size_16,color_FFFFFF,t_70)

4:SIP协议, SDP协议, HTTP协议, xml文本协议, json文本格式协议

Sip负责建立和释放会话,一般来说,会话会包含相关的媒体,如视频和音频。媒体数据是有sdp描述的。Sdp一般不单独使用,他与sip配合使用时会放到sip协议的征文(boby)中。 

会话建立时,需要媒体协商,双方才能确定对方的媒体能力以及交换媒体数据。(这就是sdp的工作)
同样HTTP的body中可以是json, 也可以xml格式的报文, 类似于SIP与SDP的关系.
Sip承载:http使用tcp承载的,而sip则支持tcp和udp承载。我们常见的sip都是用udp承载的,由于udp是面向无连接的,在大并发量的情况下与tcp相比较可也减少开销。但超出了ip层窗口的大小,在经过路由器的时候可能会被拆包,造成消息可能丢失,乱序,这时候就是用tcp.

5:Onvif协议

https://blog.csdn.net/lansexuehu365/article/details/91043974
在这里插入图片描述
Web Service是基于XML和HTTPS的一种服务,其通信协议主要基于SOAP。服务端、客户端以传递符合XML的SOAP消息实现服务的请求与回应, WebService的 Server端口一般都是80, WebService 服务端也即设备端, 平台或者接入组件, 亦或流媒体服务作为Client端.

报文示例:
POST /onvif/ptz HTTP/1.1 — HTTP
Host: 10.67.179.150
User-Agent: gSOAP/2.8
Content-Type: application/soap+xml; charset=utf-8; action=“http://www.onvif.org/ver20/ptz/wsdl/ContinuousMove”
Content-Length: 3847
Connection: close
SOAPAction: “http://www.onvif.org/ver20/ptz/wsdl/ContinuousMove”

<?xml version=“1.0” encoding=“UTF-8”?> ----XML
<SOAP-ENV:Envelope xmlns:SOAP-ENV=“http://www.w3.org/2003/05/soap-envelope” xmlns:SOAP-ENC=“http://www.w3.org/2003/05/soap-encoding” xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance” xmlns:xsd=“http://www.w3.org/2001/XMLSchema”…

猜你喜欢

转载自blog.csdn.net/yuyixiong/article/details/107339960