原创 直播拉流sdk测试简介

2020/07/05 直播

前言

上一篇文章讲了——推流SDK 的相关测试,接下来我介绍一下拉流端的测试内容,本文不包含点播相关测试。

在讲直播拉流SDK测试之前,我们再来回顾一下整个的直播业务架构从而让我们的思绪回到音视频技术中来,以腾讯云直播方案为例。

测试内容

要实现一个现代直播播放器,需要实现拉流-解封装-解码-缓存处理-音视频同步,五个主要功能,所以测试也主要围绕这几个方面,所有的测试内容见如下图:

一、调参测试

1、API测试

这里与推流SDK的API测试方式是相同的,对于拉流端来说,实现的功能对应的API其实是类似的,其中有三个核心的文件,分别是LivePlayer、LivePlayConfig、LivePlayListener,其中LivePlayer作为API的入口,提供基础的功能,比如setPlayerView、startPlay、stopPlay(更多的接口可以参考tx接口文档),而LivePlayConfig可以作为LivePlayer的参数传入,指定一些播放器的参数,比如缓存时间、重连次数等等。LivePlayerListener定义了直播播放的回调通知,主要包含两个方法,onPlayEvent和onNetStatus,这两个方法是提供给上层从而让其感知到SDK的状态变化。

在这个阶段需要重点关注在外层比较难设置的API参数,这样容易暴露更多的问题,播放器的API参数测试相比于推流SDK简单很多,但是API却多很多,因为播放器的控制类和配置类API较多,这些API在集成SDK的业务APP中比较难测试到,所以,编写单独的Demo进行测试也是比较适合的。

2、协议拉流测试

常见的网络直播播放协议有flv、rtmp、hls,因为我们业务主要使用flv、rtmp,所以测试主要围绕这个两种应用协议展开。需要知道的是,flv和rmtp都是应用层协议,下层的传输协议是TCP,当然传输层的协议是可以切换的,比如rmtp协议它的传输层协议可以使用基于UDP的Quic协议。测试的时候,关注不同协议的播放情况。

3、软硬解及切换测试

不同的协议拉流解封装后分别得到了音视频流,播放器对音视频流的软硬解与软硬编是对应的,在测试的时候需要对音视频分别对待,以及留意软硬解码的组合。此外,由于播放器默认使用硬解,在出现问题的时候需要自动切换为软解,这个在测试时需要关注是否实现正确。

二、集成测试

1、Qos测试

Qos-Quality of service,服务质量,在拉流SDK中可以理解成一个网络流畅度测试,包含的功能有秒开、音画同步、画质。对于播放器而言,秒开,即直播首个画面能在1s内呈现,是一个非常重要的特性,因此首帧时间非常关键,在集成测试时必须关注。音画同步测试,最简单的方法是播放一些带字幕的演讲视频,能比较容易发现音画同步问题,测试成本也比较低,如果需要严格的测试音画同步,那么就要把直播流攫取出来,分离出视频流和音频流,对比各自的pts,这个方法在后续文章再详细介绍。画质测试目前没有一个非常标准的方法,我将在以后进行介绍。

2、播放器控制功能测试

播放控制,是一个播放器基本的能力,相比于点播播放器,直播播放器的控制相关功能少很多,比如startPlay、stopPlay、isPlaying、setMute、setRenderMode、setRenderRotation、setVolume,这个其实部分属于调参测试,但由于集成测试时才能看到SDK最终的呈现效果,所以把控制测试放到这里。

3、播放器动态参数测试

播放器本身很少会发生动态参数的设置,这里的动态参数设置指的是推流端的参数变化,比如说推流端的gop变化、分辨率变化、软硬编码变化、画面方向变化等在播放器这边的表现。

三、专项测试

1、性能测试

性能测试重点关注CPU使用率和内存使用率,建议使用专门的工具单独测试长时间播放的耗电量,是否容易出现内存占用不断增长,内存泄露导致crash。这里可以使用tx出品的perfDog,iOS平台可以使用instruments。

2、兼容性测试

不同的操作系统、手机CPU类型、分辨率需要尽量覆盖到,优先覆盖业务用户的TopN机型。

3、中断测试

尽管中断对于观众端(拉流端)影响不大(只影响到观众自己),但是也需要关注常见电话、网络电话、切后台返回会后是否能继续正常观看直播。

4、分辨率测试

一般情况下推流端会有几个固定的分辨率,然而播放端仅仅覆盖这些分辨率是不够的,在我们的业务中,是允许用户使用类似OBS这类的工具推流的,所以理论上主播们可能推任意分辨率的视频,其中使用这类工具的主播一般推的是横屏,此时观众可以使用全屏播放,这是一个测试点。在保证播放器固定分辨率下画面正常的情况下,需要确定画面的填充或者拉伸策略,是否以最短边拉伸,还是填充黑边,都是需要考虑的。

5、打点上报测试

事件触发是SDK必不可少的能力,它需要提供一些回调能力,让上层感知到这些事件,在重要的事件发生后上报到服务端能更好地发现和定位问题。可参考腾讯直播SDK的错误码表

以上便是拉流SDK的测试内容。

Search

    Table of Contents