webrtc 视频通话质量的评价方法(待完善)
评价内容:
视频通话画面质量基本KPI包括:PSNR,时延,丢帧,抖动等
评价方法:
step1. 发送端和接收端视频帧信息采集
a. YUV frame dump:webrtc中,encoder之前及decoder之后,有提供专门的callback函数,用来对YUV frame做处理,这里只需将YUV保存到本地文件即可
b. frame采样时间戳:该时间戳在encoder之前打, encoder之前可能做了降采样
c. 系统NTP时间:用于计算帧从发送端采集到接收端显示的真实时延
d. 发送者和接收者NTP差:每个视频接收/发送端的NTP时间与标准时间都可能有一点的误差,也就是说,计算视频帧从发送端到接收端的时间,不能直接用
两个系统时间相减,还要考虑设备的NTP时间差。这里我们用NTP校时的原理,并结合RTCP工作机制来估计两个设备的NTP差,具体而言:
设备间NTP差 = 设备2收到包的本地NTP时刻 - 设备1发送包的NTP时刻 - RTT/2 (RTT: round trip time)
由于RTT随着网络在不停变化,该NTP时间差也要做相应调整,我们将其记录在视频发送端
step2. src和dst视频帧的对齐。
由于使用UDP在网络中传输视频,可能会出现丢帧的情况,因此要想对比src和dst的帧信息,第一步要做的视频就是让dump到文件中的视频帧对齐,具体方法:
a. 在src YUV图像中嵌入12位序列号,可用来标识4096帧,具体操作不详细描述
b. 利用帧时间戳配合序列号来做双重检查
step3. 计算画面质量:
a). PSNR, 帧对齐的基础上计算PSNR
b). 时延:帧对齐基础上,接收NTP时刻T1-发送NTP时刻T2-设备NTP差
c). 丢帧:查看接收端帧的序列号是否连续
d). 抖动:查看接收端帧的显示时刻间距是否均匀
评价内容:
视频通话画面质量基本KPI包括:PSNR,时延,丢帧,抖动等
评价方法:
step1. 发送端和接收端视频帧信息采集
a. YUV frame dump:webrtc中,encoder之前及decoder之后,有提供专门的callback函数,用来对YUV frame做处理,这里只需将YUV保存到本地文件即可
b. frame采样时间戳:该时间戳在encoder之前打, encoder之前可能做了降采样
c. 系统NTP时间:用于计算帧从发送端采集到接收端显示的真实时延
d. 发送者和接收者NTP差:每个视频接收/发送端的NTP时间与标准时间都可能有一点的误差,也就是说,计算视频帧从发送端到接收端的时间,不能直接用
两个系统时间相减,还要考虑设备的NTP时间差。这里我们用NTP校时的原理,并结合RTCP工作机制来估计两个设备的NTP差,具体而言:
设备间NTP差 = 设备2收到包的本地NTP时刻 - 设备1发送包的NTP时刻 - RTT/2 (RTT: round trip time)
由于RTT随着网络在不停变化,该NTP时间差也要做相应调整,我们将其记录在视频发送端
step2. src和dst视频帧的对齐。
由于使用UDP在网络中传输视频,可能会出现丢帧的情况,因此要想对比src和dst的帧信息,第一步要做的视频就是让dump到文件中的视频帧对齐,具体方法:
a. 在src YUV图像中嵌入12位序列号,可用来标识4096帧,具体操作不详细描述
b. 利用帧时间戳配合序列号来做双重检查
step3. 计算画面质量:
a). PSNR, 帧对齐的基础上计算PSNR
b). 时延:帧对齐基础上,接收NTP时刻T1-发送NTP时刻T2-设备NTP差
c). 丢帧:查看接收端帧的序列号是否连续
d). 抖动:查看接收端帧的显示时刻间距是否均匀