本文主要介绍当播放异常时自主排查异常根因的定位思路及排查步骤等。
排查思路
导致视频播放异常的原因有多种,定位问题时,可首先分析异常产生是否呈现一定的分布特征。若异常产生具有明显分布特征时,可按下述表格中归纳出来的可能原因进行排查定位问题;若异常产生无明显分布特征时,则可以按端(终端设备)、流(音视频流)、网(网络节点)的思路逐步定位问题;若经过自主排查最终无法定位问题,您可以提供异常信息获取阿里云技术支持。
- 异常呈现分布特征: - 异常分布特征 - 异常产生可能原因 - 终端用户集中在某些ISP或是地区 - 可能是当地运营商网络、CDN区域调度问题导致。 - 终端设备的操作系统呈现集中特征 - 可能是SDK在不同平台之间的实现差异、系统兼容性问题导致。 - 终端设备品牌或机型呈现集中特征 - 可能是设备兼容性问题导致。 - 特定音视频文件呈现集中特征 - 可能是音视频文件的编码、CDN预热或是业务访问策略问题导致。 
- 异常无明显分布特征:异常产生原因比较复杂或被数据量所掩盖,需要从内容到人的业务链路重要节点逆向排查,逐步定位问题节点以追溯原因。 
步骤一:排查端
终端设备兼容性
首先判断当前音视频流的协议是否为操作系统与应用环境所支持,若不支持,请做转码处理,转码操作请参见转码推荐。播放器SDK支持的音视频协议及编码格式如下。
Native App
| 操作系统 | 视频编码格式 | 视频协议 | 音频编码格式 | 
| Android | 
 | 
 | 
 | 
| iOS | |||
| Windows | |||
| macOS | |||
| Linux | 
Web
| 操作系统 | 视频编码格式 | 视频协议 | 音频编码格式 | 
| Android | H.264 | 
 | 
 | 
| iOS | H.264 | 
 说明  不支持FLV和MPEG-DASH。 | |
| H.265 | 
 | ||
| Windows | H.264 | ||
| macOS | H.264 | 
 | |
| H.265 | 
 | 
Android设备部分浏览器需要MSE拓展才能支持HLS播放,具体情况如下:
| Android设备浏览器 | HLS支持情况 | 
| 微信 | 支持 | 
| 钉钉 | 支持 | 
| UC/夸克 | 支持 | 
| QQ浏览器 | 支持 | 
| Chrome | MSE拓展支持 | 
| 华为浏览器 | MSE拓展支持 | 
| OPPO浏览器 | 支持 | 
| vivo浏览器 | 支持 | 
| 小米浏览器 | MSE拓展支持 | 
播放器SDK兼容性
当上述终端设备兼容性满足要求时,可以通过使用其他播放器(非阿里云播放器)播放视频辅助排查是否为播放器SDK兼容性问题。
- 若其他播放器播放正常,则可能是阿里云播放器SDK的兼容性问题导致,此时您可以获取技术支持。 
- 若其他播放器播放异常,则需要从流、网定位问题原因。 
步骤二:排查流
排除了上述可能原因后,可以对音视频流进行重新转码后再次尝试播放,若转码后播放正常,则说明可能是原有音视频流编码不规范导致播放异常。
当播放MP4视频起播慢或MOV视频播放失败时,可能由于源视频的moov(音视频数据索引)在mdat(音视频数据)之后造成,可以通过转码源视频将moov移到mdat之前,以加快播放解析。
- 通过如下命令检测moov位置: - # 源视频地址可以是本地文件地址也可以是在线URL,例如:http://pla****.alicdn.com/video/aliyunmedia.mp4 ffmpeg -v trace -i "源视频地址" 2>&1 | grep -e type:\'mdat\' -e type:\'moov\'- 正常情况下,moov在mdat之前,如下图所示。  - 异常情况下,moov在mdat之后,如下图所示。  
- 通过如下命令或ffprobe命令行工具(工具地址)可以查询源文件的音频、视频编码格式等信息,可以用于分析产生异常的视频是否存在某类规律或特征: - ffprobe "input.mp4"或- ffprobe "源视频地址" 
转码推荐
- 转码输出:建议转为H.264的MP4或HLS视频流。 
- 转码方式:建议使用以下阿里云服务或本地工具。 - 分类 - 服务名称/工具名称 - 说明 - 阿里云服务 - 视频点播 - 视频点播提供的音视频转码功能支持完善的转码和转封装能力,以满足丰富的媒体格式转换需求,支持普通转码、窄带高清1.0转码、窄带高清2.0转码、原画转码。详细内容请参见音视频转码。 - 媒体处理 - 媒体处理提供的媒资转码功能可以将多媒体数据转码成适合在全平台播放的格式,支持普通转码、窄带高清1.0转码、窄带高清2.0转码、倍速转码、分辨率倍增转码,适用于视频源文件存储在OSS自有Bucket中的用户。详细内容请参见媒资转码。 - 智能媒体服务 - 智能媒体服务提供点播转码和实时转码能力,支持对存储在OSS或VOD中的音视频转码,并支持对直播流进行转码,详细内容请参见点播转码和实时转码。 - 本地工具 - FFmpeg Codecs - 下载地址:FFmpeg Codecs - 格式工厂 - 下载地址:格式工厂 
步骤三:排查网
排除了上述可能原因后,可以通过对网络传输进行检查以定位播放异常原因。
- 确认终端设备网络是否正常。 - Wi-Fi:当前网络是否稳定可访问?下行网速 ≥ 码率? - 可以使用测速网获取下行网速,若下行网速< 码率则会出现加载失败或播放卡顿。 
- 移动网络:当前网络是否为4G、5G等高速网络?网络信号强度如何? - 弱网条件下网速可能不满足视音视频加载要求。 
 说明- 对于用户网络发生DNS劫持的场景,可以手动配置DNS到阿里公共DNS服务(223.5.5.5,223.6.6.6),从而快速恢复播放。 - 进入移动端设置 > 无线局域网页面。  
- 单击当前网络右侧详情按钮,进入网络详情页面。  
- 配置DNS。  
 
- 确认是否启用了CDN加速。 
- 确认视频源站与终端用户分布区域。 - 若视频源站使用中国内地的服务区域,而终端用户处于海外,则可能出现明显的卡顿问题。此时,建议根据终端用户分布情况选择对应的服务区部署视频源站,以改善加速效果。 
- 确认观看时间段。 - 若特定时间段同时观看人数过多,则可能出现源站限流造成播放卡顿的问题。 
相关文档
若您按照上述流程进行排查后依旧无法定位问题原因,可通过查看下述文档,看是否有相同的案例及解决方案:
获取技术支持
若您按照上述流程仍无法解决您的问题,您可以提交工单处理。关于如何提交工单,请参见联系我们。
获取技术支持时,建议您提供以下信息以便提升技术支持效率。
| 信息字段 | 示例 | 详细说明 | 
| 系统与设备平台 | Android 9,小米 | 需提供发生问题的设备品牌及操作系统型号等信息,例如:Android几+品牌、iOS几、Windows几、Mac/Linux几。 | 
| SDK及版本号 | Android SDK 5.4.8.0 | 需说明使用的播放器SDK及SDK版本号,播放器SDK包括:Web SDK、Android SDK、iOS SDK、Flutter SDK、Windows SDK。 | 
| 视频源 | https://xxxxxx.m3u8 | 需提供可复现问题的视频源地址或视频文件。 | 
| 问题描述+日志+录屏 | 2022年08月29日,16:40开始播放,直到17:00左右出现卡顿,日志附件如下。 | 需详细描述问题发生的步骤及现象,最好可具体到详细的时间点。对于可复现的问题,需要提供完整复现步骤的日志(Android和iOS端可提供日志,日志获取方式请参见Android端获取问题日志或iOS端获取问题日志),必要时可以附上录屏的信息。 | 
| 问题分布特征 | 只在Android设备上有这个问题,iOS设备上不存在。问题必现。 | 请说明问题发生是否具备分布特征及问题复现的规律及频率。例如:问题发生集中在某个视频源、某个设备平台、某个版本号等,问题发生为偶现或必现等。 |