zoukankan      html  css  js  c++  java
  • 那些千奇百怪的视频直播延时测试方法,论正确姿势是什么?

    说到视频直播延时测试,我们就不得不先探讨一下产生延时的几个环节:

    part1. 视频采集与编码
    part2. 视频设备到服务器的传输
    part3. 服务器分发到客户端的传输
    part4. 客户端的播放

    其中,这个过程延时消耗最大的是part1和part4,也就是编/解码部分,而且通常情况下part1延时>part4延时,那么part2和part3如果消耗比较大的延时,要么是网络实在太差,要买就是程序写的不好,网络差可以采用UDP或者TCP丢帧的方式减少长期的延时,那总结来说,如果在part2和part3部分一直保持着高延时,基本可以确定,是服务器程序问题;

    part1论述,目前市面上的视频编码多采用硬编码,虽然是硬编码,采用芯片进行的视频编码计算,但不得不说,这个还是计算量大,时间消耗长,在arm设备中硬编码,以海思芯片为例,大部分可以控制在200ms以下的时间消耗,在手机上,由于手机性能的不一样,消耗的时间也不一样,但经过长期的推流开发经验,手机硬编码的时间消耗大部分也在300ms左右,当然,这都不一定准确,只是个人的经验值,实际还是要根据设备来定;

    part4论述,由于解码大部分是在x86机器上,或者在移动手机上进行解码播放,解码和显示的效率就比编码高多了;

    part2 & part3,此部分为网络数据转发与传输,时间消耗是非常小的,具体网络传输的延时当然可以自行搜索获得,基本上在局域网延时可以忽略不计;

    延时测试中的那些错误方法

    1. 徒手读秒

    我们经常在遇到一些用户关于延时问题的咨询时候,遇到中间有很多的测试方法居然是靠掰手指读秒来测试的,而且有的给出的结论居然精确到了毫秒,这种做法是有很大误差的,我们在测试视频的时候发现,实际的1s比我们想象中的要长,而且有时间感觉要长很多;

    1. 北京时间对比

    还有一种测试的方法,就是测试双方各自百度上输入“北京时间”,然后设备源端对着本地的北京时间,客户端一边播放,一边对照着自己本地的“北京时间”算差值,好吧,这也不准哪,北京时间到本地了之后,都是各个电脑自己开始计时,而且北京时间只能精确到秒,也就是说,这个时间会有0~999ms的误差;

    1. 播放器缓冲

    这个也是经常会出现的问题,大部分的直播测试用vlc或者ffmpeg这样的通用播放器进行延时测试,但是vlc和ffmpeg为了保证视频的平滑流畅播放,经常会在内部缓冲很长一段时间,例如vlc默认是1000ms的缓冲:

    vlc

    ffmpeg一方面会有一个比较长时间的视频分析过程,还有内部的缓冲流程,具体参数为:-fflags nobuffer -analyzeduration 1000000,具体详细参数说明在博客《ffmpeg ffplay播放延时大问题:播放延时参数设置》中;

    正确姿势

    正确的延时测试我们有几个方面的要求:

    • 统一的计时器
    • 精确到毫秒
    • 同步的源时间和播放时间快照

    基于这种考虑,我们在做延时测试时的做法是,在PC上开启一个精确到毫秒的计时器,再通过摄像机/手机/桌面编码推流将直播流推送到服务器,再同时开启一个播放器(在本机或者另外的PC/手机播放器),再通过屏幕截屏或者手机拍照的方式,将源视频和播放视频都包括在一张照片内,再进行时间差值的计算,这也就做到了非常准确的延时统计了!

    EasyDSS

    EasyDarwin

    获取更多信息

    邮件:support@easydarwin.org

    WEB:www.EasyDarwin.org

    Copyright © EasyDarwin.org 2012-2017

    EasyDarwin

  • 相关阅读:
    线程池:
    C#:实现托盘
    Linux内核 TCP/IP、Socket参数调优
    redis配置文件redis.conf参数说明
    redis安装与参数说明
    巧用linux服务器的/dev/shm/,如果合理使用,可以避开磁盘IO不给力,提高网站访问速度。
    mkdir:批量创建文件夹
    linux下的shell运算(加、减、乘、除)
    Linux查看文件编码格式及文件编码转换
    解决vi/vim中粘贴会在行首多很多缩进和空格的问题
  • 原文地址:https://www.cnblogs.com/babosa/p/7435210.html
Copyright © 2011-2022 走看看