【Android】主流播放器SDK对比评测

850 阅读14分钟

本文将着重对市面主流播放器SDK进行评测,目的是为了日后在项目开发中更好地进行技术方案选型,这里暂不考虑包体积大小等其他因素,只专注于测试各个播放器的启动速度,是否能够秒开

商用播放器SDK

评测方式/分析方法

  • 分析方法,统计开启时间:记录从onCreate到视频第一帧被渲染的时间间隔,通过log日志统计
  • 分别冷启动打开播放器10次,非冷启动10次,取5次合理数据,进行平均值统计
  • 评测机型分别使用模拟器「pixel3」(模拟性能较差手机)和真机「小米9」(模拟性能较好的手机)
  • 模拟器不测评硬解码性能(因为实际测试时,硬解码并没有速度上的提升,这应该是因为电脑并不能虚拟出一个物理GPU供模拟器使用)
  • 均使用各家SDK的官方Demo进行评测,并尽量保持了编译环境的一致性,且精简了代码,去掉了繁琐的配置代码,仅保留缓存、硬件加速等核心配置代码
  • 所有播放器SDK均关闭缓存

点播流测评

1. mp4手机录制1080p视频

  • 视频源:某手机录制1080p视频,上传到阿里云之后,使用其网络地址
  • 视频信息:
    • 大小:889m
    • 分辨率:1920*1080
    • 编解码:AAC,H.264
    • 时长:5:49

网易云播放器

模拟器:

  • 冷启动:2174、2428、2535、2144、1828 -> 2222ms
  • 非冷启动:1425、1182、1082、1317、1173 -> 1236ms

真机:

  • 软解码
    • 冷启动:984、888、988、882、1171 -> 982ms
    • 非冷:716,591、617、581、640 -> 629ms
  • 硬解码
    • 冷启动:792、858、758、782、793 -> 796ms
    • 非冷启动:653、523、542、579、525 -> 564ms

阿里云播放器

模拟器:

  • 冷启动: 1601、1911、1774、1612、1432 -> 1666ms
  • 非冷启动:1031、908、916、956、1026 -> 967ms

真机:

  • 软解码
    • 冷启动: -> 876、968、961、955、1014 -> 955ms
    • 非冷: -> 986、820、844、1042、783 -> 895ms
  • 硬解码
    • 冷启动: -> 734、618、582、647、607 -> 638ms
    • 非冷启动: -> 456、689、654、557、648 -> 483ms

腾讯播放器

模拟器:

  • 冷启动: 971,453,889,840,859 -> 802ms
  • 非冷启动: 494、646、437、392、542 -> 502ms

真机:

  • 软解码
    • 冷启动:602、406、368、410、343 -> 426ms
    • 非冷启动:198、175、208、184、181 -> 190ms
  • 硬解码
    • 冷启动:408、328、355、341、383 -> 363ms
    • 非冷启动:185、207、199、170、184 -> 190ms

结论

在针对1080p手机录制mp4的资源播放测试中,我们可以得出以下结论

1. 播放器开启速度:腾讯>阿里>网易 2. 开启硬解码之后,播放器打开视频速度普遍得到提升,综合提升在15%-35%之间 - 1.腾讯播放器提升15%左右 - 2.阿里播放器提升35%左右 - 3.网易播放器提升19%左右 3. 非冷启动下,播放器打开速度都是有所提升的,去掉误差,合理区间在10%-60% 4. 如果以表现最差的网易播放器作为基点,那么可以得到如下结果 - 冷启动 - 模拟器上:阿里云播放器提升33%,腾讯播放器提升177% - 真机上: - 软解码:阿里云播放器提升3%,腾讯播放器提升130% - 硬解码:阿里云播放器提升25%,腾讯播放器提升119% - 非冷启动 - 模拟器上:阿里播放器提升28%,腾讯播放器提升146% - 真机上: - 软解码:阿里播放器下降42%,腾讯播放器提升231% - 硬解码:阿里播放器提升17%,腾讯播放器提升197%

播放器\开启速度模拟器真机冷启真机非冷启冷启提升非冷启提升
网易云播放器冷启:2222,非冷:1236软解:982,硬解:796软解:629;硬解:564--
阿里云播放器冷启:1666,非冷:967软解:955,硬解638软解:895;硬解:483软解↑3%,硬解↑25%软解↓42%,硬解↑17%
腾讯云播放器冷启:802,非冷:502软解:426,硬解363软解:190,硬解190软解↑130%,硬解↑119%软解↑231%,硬解↑197%
继续得出结论

从上面的数据及分析中,我们可以继续得出自己的结论: 5. 腾讯播放器无论在开启速度还是开启速度的ms数波动上,都明显优于网易播放器和阿里播放器 6. 如果我们算上模拟器的数据,那么打开一个视频的时间如下 - 网易播放器:562-2222ms - 阿里播放器:483-1666ms - 腾讯播放器:190-802ms

2. mp4我司某App线上播放流

上面的分析中,我们可以看出播放器在开启硬件加速时性能上会有一个比较明显的提升15%-35%,考虑到现在市面上大部分手机都有独立的GPU,我们在开发中开启硬件加速是非常必要的 那么接下来就不分析软解的情况了,因为这也并不影响最终的测试结果.

  • 短视频源:我司某App上压缩转码的Mp4视频,用的是网络地址
  • 视频信息:
    • 大小:32.6m
    • 分辨率:
    • 编解码:
    • 时长:2:28

网易云播放器

模拟器

  • 首次安装:6106
  • 冷启动:2808+2523+3066+2417+2186 -> /5 = 2602ms
  • 非冷启动:1853+1464+1547+1741+1321 -> /5 = 1585ms

真机

  • 首次安装:995
  • 冷启动:708+715+624+675+740 -> /5 = 692ms
  • 非冷启动:502+486+490+429+470 -> /5 = 475ms

阿里云播放器

模拟器

  • 首次安装:2077
  • 冷启动:1205+1507+1279+1271+1289 -> /5 = 1110ms
  • 非冷启动:995+1012+840+828+1032 -> /5 = 604ms

真机

  • 首次安装:409
  • 冷启动:316+342+353+315+358 -> /5 = 337ms
  • 非冷启动:285+320+291+281+272 -> /5 = 290ms

腾讯播放器

模拟器

  • 首次安装:1732
  • 冷启动:726+680+841+656+775 -> /5 = 736ms
  • 非冷启动:229+275+259+246+250 -> /5 = 252ms

真机

  • 首次安装:389
  • 冷启动:225+238+237+229+243 -> /5 = 234ms
  • 非冷启动:139+128+121+109+110 -> /5 = 121ms

结论

播放器\开启速度模拟器真机冷启真机非冷启冷启提升非冷启提升
网易云播放器冷启:2602,非冷:1585692475--
阿里云播放器冷启:1110,非冷:604337290↑105%↑64%
腾讯云播放器冷启:736,非冷:252234121↑196%↑293%

对于经过处理后的线上mp4媒资播放测评,可以得出以下结论
播放器开启速度上,依然是:腾讯>阿里>网易
如果我们算上模拟器的数据,那么打开一个视频的时间如下

  • 网易播放器:475-2602ms
  • 阿里播放器:252-1110ms
  • 腾讯播放器:121-736ms

直播流回看流测评

3. m3u8回看流

  • 播放源:我司某App直播回看流
  • 视频信息
    • 大小:
    • 分辨率:
    • 编解码:
    • 时长:01:44:35

网易云播放器

模拟器

  • 首次安装:4218
  • 冷启动:2960+2314+2577+2928+2949 -> /5 = 2746ms
  • 非冷启动:1004+1110+1191+1197+1302 -> /5 = 1161ms

真机

  • 首次安装:1482
  • 冷启动:1024+1049+1187+1205+1039 -> /5 = 1101ms
  • 非冷启动:937+845+966+941+910 -> /5 = 920ms

阿里云播放器

模拟器

  • 首次安装:1605
  • 冷启动:1458+1494+1570+1628+1437 -> /5 = 1517ms
  • 非冷启动:962+890+908+863+800 -> /5 = 885ms

真机

  • 首次安装:700ms
  • 冷启动:558+536+542+522+556 -> /5 = 543ms
  • 非冷启动:382+378+390+384+365 -> /5 = 380ms

腾讯播放器

模拟器

  • 首次安装:1662
  • 冷启动:962+834+904+854+894 -> /5 = 890ms
  • 非冷启动:228+241+227+233+231 -> /5 = 232ms

真机

  • 首次安装:698
  • 冷启动:249+234+230+240+253 -> /5 = 241ms
  • 非冷启动:135+156+168+136+125 -> /5 = 124ms

结论

播放器\开启速度模拟器真机冷启真机非冷启冷启提升非冷启提升
网易云播放器冷启:2746,非冷:11611101920--
阿里云播放器冷启:1517,非冷:885543380↑103%↑142%
腾讯云播放器冷启:890,非冷:232241124↑357%↑642%

通过对一个接近两个小时的m3u8回看流的测评,我们可以得出以下结论: 播放器开启速度上,依然是:腾讯>阿里>网易
如果我们算上模拟器的数据,那么打开一个视频的时间如下

  • 网易播放器:920-2746ms
  • 阿里播放器:380-1517ms
  • 腾讯播放器:124-890ms

4. m3u8电视直播流

网易云播放器

模拟器

  • 首次安装:3217
  • 冷启动:2116+1931+1880+2335+2356 -> /5 = 2124
  • 非冷启动:843+882+895+920+1081 -> /5 = 924

真机

  • 首次安装:1169
  • 冷启动: 704+705+662+620+728-> /5 = 684
  • 非冷启动: 529+454+463+485+498-> /5 = 486

阿里云播放器

模拟器

  • 首次安装:1854
  • 冷启动:1221+1237+1414+1150+1117 -> /5 = 1228
  • 非冷启动:518+696+466+604+601 -> /5 = 577

真机

  • 首次安装:1173
  • 冷启动: 577+646+515+420+477 -> /5 = 527
  • 非冷启动:228+285+299+254+238 -> /5 = 261

腾讯播放器

模拟器

  • 首次安装:1542
  • 冷启动:1486+1590+1240+1351+1358 -> /5 = 1405
  • 非冷启动:648+683+557+538+664 -> /5 = 618

真机

  • 首次安装:879
  • 冷启动: 514+653+515+487+666-> /5 = 567
  • 非冷启动:328+349+312+344+326 -> /5 = 332

结论

播放器\开启速度模拟器真机冷启真机非冷启冷启提升非冷启提升
网易云播放器冷启2124:,非冷:924684486--
阿里云播放器冷启:1228,非冷:577527261↑30%↑120%
腾讯云播放器冷启:1405,非冷:618567332↑21%↑46%

通过对一个接近两个小时的m3u8回看流的测评,我们可以得出以下结论: 播放器开启速度上,依然是:腾讯>阿里>网易
如果我们算上模拟器的数据,那么打开一个视频的时间如下

  • 网易播放器:
  • 阿里播放器:
  • 腾讯播放器:

结论

  1. 在开启速度上
    • 无论在mp4点播视频还是m3u8的回看流下,腾讯播放器的表现都是最好的:腾讯>阿里>网易
    • 在直播流m3u8下,阿里播放器和腾讯播放器十分接近:阿里>腾讯>网易
    • 腾讯播放器无论相比阿里播放器还是网易播放器,开启速度基本上都是成倍的提升,感觉非常明显
  2. 对于秒开性能上,在手机性能主流,网络通畅的情况下,不关心代码中的耗时业务,那么
    • 阿里云播放器和腾讯播放器都可以在100-600ms之间开启播放
    • 基本都能够达到秒开的效果
  3. 综合比较真机冷启动硬解码性能,更能反映播放器启动速度数据
播放流\播放器网易云阿里云腾讯云阿里播放器提升腾讯播放器提升结论
mp4手机拍摄1080p视频796638363↑25%↑119%腾讯>阿里>网易
mp4压缩短视频692337234↑105%↑196%腾讯>阿里>网易
m3u8回看流1101543241↑103%↑357%腾讯>阿里>网易
m3u8直播流684527567↑30%↑21%阿里>腾讯>网易
  1. 综上,相对于网易播放器
    • 阿里播放器提升在25%-105%之间,腾讯播放器提升21%-257%
    • 腾讯播放器在大多数场景下的表现都是最好,即便直播流差一点,但不到100ms的差距几乎可以忽视
    • 这个提升可能是几十到几千毫秒,但大多数情况下,用户感知明显
    • 在理想的硬件和网络情况下,腾讯播放器和阿里播放器有时候感知差距并不大
  2. 在用户体验上,腾讯播放器在冷启动,首次安装等情景下优势明显,加载速度快,播放流畅,基本上可以做到所见即所得(在UI可见的一瞬间,视频就已经可以开始播放了)
  3. 腾讯播放器的问题:在使用腾讯播放器播放CCTV2和CCTV4的播放流时,出现了花屏现象,尚不知是何原因,后续跟进...