日常工作积累笔记

    技术2023-03-28  118

    wireshark  抓包查看H264分辨率过滤器 (h264.nal_unit_hdr == 7))vp8(vp8.hdr.frametype==0)。chrome   jpeg lib库设之图片质量 jpeg_set_quality() ,quality值越大图片质量越好,图片本身很也会变大,但不是线性关系。jpeg 压缩原理: 将图像先分成8X8的小块->将图像从RGB转换为YCbCr->进行离散傅里叶变换(DTC)->数据量化便采用下图将二维矩阵转为一维数组,为了更好的进行哈夫曼压缩->进行哈夫曼编码得到压缩后的数据。2.webRTC 视频接收端从Call 到PacketBuffer packet传递调用堆栈; WebRTC 之时间戳 音频:以采样点为单位,时间戳的精度为每采一个音频点的时间,每个RTP包一半包20ms的数据,假如采样率为48K,则相邻两个包的时间戳差为20/1000/(1/48000)=960; 视频的时间戳精度一般为:1/90000; rtp包和ntp时间戳的对应关系是由SR RTCP包来实现的:每隔一段时间视频音频都会发送SR包,SR中包含RTP时间戳和NTP时间戳;线性拟合即可求出rtp时间戳和NTP时间戳之间的线性关系。

    5.

    GCC { 为防止网络拥塞,控制发送端速率; GCC核心思想是预测发送端带宽和接收端带宽预测来控制发送速率,主要根据丢包率、网络延时、抖动来预测; 发送端带宽估计流程:调用SendSideBandwidthEstimation::UpdateEstimate 1. 收到RR包之后调用,受限于RR的发送频率,大概一秒一次; 2. 定时更新,默认25ms,防止RR包丢失或不及时; 丢包率计算:RR报文携带三个字段,两个RR间隔内的丢包率乘255;目前时刻的累计丢包数24位;目前时段收到的最大序列号,前16位,后16位为循环数; RTT计算,发送端SR携带发送时间戳(RTP时间戳)t_sr,RR回馈SR携带的时间戳,接收端处理延时t_dlrr,这样发送端就可以计算出RTT=recivedtime-t_sr-t_dlrr; 估出发送端总的码率怎么分配到每一个流中:(观察者模式) 几个主要的类:BitrateAllocatorInterface BitrateAllocator BitrateAllocatorInterface VideoSendStreamImpl BitrateAllocatorInterface中有OnBitrateUpdated函数 其中VideoSendStreamImpl继承BitrateAllocatorInterface并实现OnBitrateUpdated函数; VideoSendStreamImpl在VideoSendStreamImpl::StartupVideoSendStream()中调用bitrate_allocator_->AddObserver(this, GetAllocationConfig())将自己注册进BitrateAllocator,当发烧端带宽估计变化时调用VideoSendStreamImpl的OnBitrateUpdated函数,最终作用在编码器上改变码率控制发送端速率。 }

    6.

    RTP/RTCP 协议:

     

    TODO

    TCP/IP协议组归纳

    SIP协议

    SDP协议

    Socket编程

    webRTC平台开启日志说明

    map.emplace().first 原来返回的是迭代器  .second返回插入结果。

    Keyframequest调用堆栈

     

    Processed: 0.008, SQL: 9