全部产品
Search
文档中心

视频点播:各端播放器公共常见问题

更新时间:Sep 23, 2026

本文为您介绍使用阿里云播放器SDK过程中可能遇到的各端播放器具有的共性常见问题及解决方案。

标准直播播放选择RTMP还是HTTP-FLV

建议选择HTTP-FLV,理由如下:

  1. 在阿里云视频直播控制台生成地址时,会同时生成RTMP与HTTP-FLV的地址,这两个协议里包含的数据内容是一致的,只是网络协议通道不一样。

  2. HTTP协议是互联网主要协议,CDN、运营商、中间网络设备等链路中都对HTTP有很长时间的网络优化,HTTP的默认80/443端口号也是常见白名单端口,不容易被禁用,而RTMP协议比较老,其默认端口号是1935有可能被防火墙等设备禁用,导致异常。因此在综合网络环境下,HTTP-FLV的稳定性、性能(卡顿、延时)会比RTMP更好。

播放器 SDK 有哪些常用 API 使用注意事项

  • iOS 端获取播放位置:应使用 onCurrentPositionUpdate 回调的 position 参数。seek 后需监听 AVPEventSeekEnd 事件再获取位置。

  • getPlayTime() 返回值:返回整数秒数,统计真实播放时长(不含暂停和拖拽时间),倍速播放按物理时间计算。

  • 切换清晰度异常:若 selectTrack 异常,可临时使用 setQuality + setStartTime + prepare 替代。

  • replayByVidAndPlayAuth 切换视频:需显式传入 swScriptURL(HTTPS 绝对地址)以支持 iOS 低版本私有加密。

  • 设置起播时间:不影响用户手动拖拽进度条。

  • 缓冲区清理:目前不支持运行时动态清理缓冲区的 API。

播放失败相关问题

视频点播的视频无法播放,如何排查

视频播放失败需要根据播放器的报错信息和网络请求来定位问题,流本身的编码问题、网络终端或CDN问题、格式问题、Bucket问题都可能导致播放失败,以下为常见问题解决措施:

  • 欠费问题:请先检查您的账户余额,如果账户欠费则无法播放视频。

  • 网络终端问题:视频无法播放并提示4400,错误码4400指示由于服务器或网络原因不能加载资源。请确认是否配置了SSL证书、HTTPS证书是否过期或失效。

  • 格式问题:视频格式播放器不兼容,视频点播支持的播放格式请参见播放器SDK功能详情。

    说明

    带鉴权播放m3u8格式的文件需要使用自有域名,绑定域名请参见添加加速域名。

  • Bucket问题:设置的Bucket无效,或私有Bucket鉴权过期导致无法播放。关闭Bucket鉴权,同时将Bucket设置为公共读,即可正常播放。

  • 跨域问题:请先检查您加速域名的地域与视频播放地域是否一致,如果不一致将导致无法播放。如不一致,您可以创建新的加速域名或修改原加速域名地域。

调用GetPlayInfo报错提示视频状态非法或审核中

视频必须同时满足主状态(Status)为 Normal 且审核状态(AuditStatus)为 Normal,才能成功获取播放信息。若视频状态为 UploadSucc(上传成功但转码未完成)或 AuditStatus 为 Init(审核中),需要等待转码完成及审核通过后再获取播放信息。建议通过 GetVideoInfo 接口查询视频最新状态,并检查全局审核设置是否影响审核进度。

在先审后发模式下,人工审核通过仅表示内容审核完成,并不代表视频已可播放;视频仍需等待转码完成、主状态(Status)变为 Normal 后才能获取播放地址。若审核已通过而视频长时间停留在 UploadSucc 状态,说明转码未触发或未完成,请检查是否已配置并设置默认转码模板组,或在控制台手动发起转码。

播放本地M3U8格式视频报错

对于m3u8文件,它包含多个ts分片,这些分片必须在本地存在,并且m3u8文件中的路径需准确指向这些ts文件的位置,否则将无法加载。如果您的分片以链接形式存在,同样不支持播放。

M3U8 索引文件与其对应的 .ts 分片文件(如 000000.ts、000001.ts 等)需放置在同一目录下。

本地M3U8文件需保持上述目录结构格式。

视频点播在站内可以正常播放,站外无法分享播放

可以通过以下步骤排查:

  1. 查看这个视频在点播是否还存在。

  2. 查看是否添加加速域名。

    • 未添加加速域名:查看存储Bucket的权限,存储Bucket是不是私有的。如果是私有的就一定是携带鉴权的,关闭鉴权,同时将Bucket设置为公共读,就可以直接播放了(将Bucket设置公共读,有安全风险)。

    • 已添加加速域名:查看是否有鉴权,如果有鉴权的话,可以加大鉴权有效的时间,或者关闭鉴权(有安全风险)。

播放异常相关问题

使用播放器播放视频时出现无声音现象

阿里云音视频播放器主要针对阿里云相关产品进行优化。如果您使用其他播放源地址,可能会导致播放时无声的现象。如遇无声问题,请首先检查您播放器所采用的播放源。

Web 播放器样式与组件异常如何处理

  • 图标缺失:本地部署时若图标缺失,需完整下载 /skins/default/ 目录,或修改 CSS 中图标路径的相对路径为 CDN 地址。

  • QualityComponent 切换清晰度报错:出现 t.getQuality is not a function 时,需在配置中添加 args 回调函数,并升级 aliplayercomponents 至 1.1.2+。

  • 封面图覆盖进度条:vid + playAuth 模式下封面图覆盖进度条,可通过 CSS 隐藏 .prism-cover 或启用 autoplay + muted 绕过。

  • 微信内置浏览器兼容性:微信内置浏览器 HLS 兼容性问题,配置 useHlsNative: false 强制使用 fMP4 方案。

视频起播速度慢相关问题

  • MP4格式的视频起播速度慢时,可能由于源视频的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 之前(即已完成 faststart 优化),示例输出如下。

      异常情况下,moov在mdat之后。

  • 针对阿里云Android播放器SDK和iOS播放器SDK,视频点播提供了毫秒级的起播方案,可以大大提升视频的起播速度,具体操作,请参见使用阿里云播放器实现全屏秒播。

播放加密视频相关问题

视频经过DRM加密后,无法在浏览器上正常播放

使用Web播放器播放DRM加密后的视频时,对浏览器有限制,支持的浏览器请参见功能适配说明。

播放HLS标准加密视频时,需要传入的用户令牌(MtsHlsUriToken)参数是什么?如何获取?

MtsHlsUriToken参数是用户自定义参数,常规的HLS标准加密下,加密串写到HLS流里后,会在m3u8索引文件中加入一个解密服务器的地址,当有需求需要只允许部分用户访问时,这个解密地址就需要一个验证身份的功能,MtsHlsUriToken参数就是在您的解密服务器上加一层验证逻辑,然后根据这层验证逻辑生成一个特殊的参数加入解密验证。

您需要在配置加密时,搭建令牌颁发服务生成MtsHlsUriToken,详细内容请参见HLS标准加密-步骤4。

播放跨域相关问题

OSS为英国伦敦节点,上传至OSS的视频在中国内地打开很慢

在中国内地访问英国伦敦节点属于跨区域访问,建议添加加速域名后,使用全球加速。

视频点播海外使用视频访问慢、频繁卡顿问题如何解决?

在播放过程中,引起卡顿情况,一般来说是由于网络不稳定。如果卡顿时间过长引起播放器报错,那么大概率和CDN动荡有关。如果经常发生卡顿,则需要看一下网络请求,可能是网速和该视频的码率不匹配,需要提高网速或者降低码率。

OSS视频播放相关问题

播放存储在OSS中的某些视频时,发出大量请求,应该如何处理?

请确认源视频是否存在问题(例如播放器在解码源视频时,是否发出了大量的重复请求),建议使用视频点播的转码模板对视频进行转码后播放,相关操作请参见音视频转码。

上传到视频点播中的图片资源,如何通过图片链接访问时,直接预览,而非下载?

存储在视频点播中的图片需要使用自有域名才能够打开预览,使用默认的域名进行访问时会强制下载。您可以将自有域名添加到视频点播中,相关操作请参见添加加速域名。

SSL证书相关问题

视频在部分电脑上无法正常播放,并报错误码4400

错误码4400指示由于服务器或网络原因不能加载资源,或者格式不支持。请确认是否配置了SSL证书。

播放地址相关问题

存储在视频点播中的视频,如何生成短链接形式的视频播放地址?

若存储视频的存储地址权限为私有,其播放地址会携带一串鉴权信息,体现为长链接形式;若存储视频的存储地址权限为公共读或公共读写,则对应的播放地址不会携带后面一串鉴权信息,体现为短链接形式。存储地址的权限说明及修改请参见管理存储Bucket。

说明

存储地址权限为公共读或公共读写时,存在被盗链、非法下载的风险,不建议设置。

设置了转码格式为HLS之后,为何无法播放不转码的视频?

使用阿里云播放器通过VID+Playauth方式只能播放转码后的视频。不转码的视频,只能通过URL方式播放,可通过获取源文件信息接口获取原视频地址或登录视频点播控制台查看视频地址。

视频点播中存储的视频,其播放地址是不固定的吗?

当存储视频的存储地址权限为私有时,其对应的播放地址具有时效性,播放地址中auth_key所携带的鉴权字符串会根据设置的过期时间有所差异。

如需获取到固定不变的播放地址,则需修改存储视频的存储地址的权限为公共读或公共读写,对应生成的播放地址,只取?之前的内容,则可以得到一个固定地址,可以一直使用这个地址进行播放。存储地址的权限说明及修改请参见管理存储Bucket。

说明

存储地址权限为公共读或公共读写时,存在被盗链、非法下载的风险,不建议设置。

视频上传到视频点播后,将播放地址发送到淘宝等平台播放时,为什么要跳转到浏览器才能播放?

视频的播放取决于浏览器和本地设备的解码能力,所以通常都是要跳转到浏览器播放。

视频刷新上传后,为什么播放视频时并未出现新的视频?

视频更新后,您需要执行刷新URL的操作获取最新数据。通过视频点播控制台刷新,请参见刷新预热。通过API或SDK刷新,请参见预热缓存或提交音视频刷新或预热任务。

播放器中如何获取到视频里每一帧的像素?

  • Android播放器:可通过监听OnRenderFrameCallback回调获取。

  • iOS播放器:可通过监听onRenderingFrame回调获取。

    player.renderingDelegate = self;
    
    #pragma mark CicadaRenderingDelegate
    - (BOOL)onRenderingFrame:(CicadaFrameInfo*) frameInfo{
        if(frameInfo.frameType==Cicada_FrameType_Video){
            // 视频
            NSLog(@"receive HW frame:%p pts:%ld foramt %d", frameInfo.video_pixelBuffer, frameInfo.pts, CVPixelBufferGetPixelFormatType(frameInfo.video_pixelBuffer));
    
        } else if (frameInfo.frameType==Cicada_FrameType_Audio){
            // 音频
        }
        return NO;
    }
  • Web播放器:暂不支持获取。

上传到视频点播中的AVI格式视频,为何无法通过API或SDK方式获取到播放地址?

获取音视频播放地址接口暂不支持获取AVI格式的视频流,因此基于此接口实现获取播放地址的SDK也无法获取到AVI格式的视频流。

您可以通过视频点播控制台查看AVI视频的播放地址,详细内容请参见查询音/视频。

GetPlayInfo接口获取视频播放地址报错The video has no stream to play for the request parameter

可以通过以下步骤排查:

  1. 确认媒资存储类型是否为标准存储。

    GetPlayInfo接口默认仅返回标准存储媒资的播放流。如需获取非标准存储音视频播放流,可设置接口参数PlayConfig的StorageClass为All。

    StorageClass 的其他可选取值包括 Standard(标准)、IA(媒资低频)、Archive(媒资归档)、ColdArchive(媒资冷归档)、SourceIA(源文件低频)、SourceArchive(源文件归档)、SourceColdArchive(源文件冷归档)、Changing(媒资变更中)及 SourceChanging(源文件变更中),空值表示不筛选。

  2. 确认媒资是否存在转码流。

    获取转码流需先进行音视频转码再调用GetPlayInfo接口;如需源流地址,请参考GetMezzanineInfo。

播放卡顿相关问题

有哪些措施可以改善视频播放卡顿,提升命中率?

可从如下方面提升命中率:配置URL鉴权、刷新预热、缓存配置、过滤参数。

拖动视频的进度条到视频中间播放时,播放卡顿

当视频本身的关键帧太少时,导致拖动时需要大量加载前后的关键帧才能计算出来对应的画面,也就出现了卡顿现象。这种情况下,建议对视频进行转码处理,可以达到增加关键帧的效果,从而缓解卡顿。转码操作请参见音视频转码。

H.266解码插件相关问题

出现0x200600001 MEDIA_PLAYER_ERROR_CODEC_VIDEO_NOT_SUPPORT报错

当message为vvc plugin not enabled时,表示业务层没有激活插件,需调用AliPlayerGlobalSettings.enableCodecPlugin接口激活插件功能;

当message为vvc plugin not loaded,表示插件未成功集成,请检查插件库是否成功地引入到项目中,或显式引入loadlibrary确保加载成功。

出现0x50020002 MEDIA_PLAYER_ERROR_CODEC_PREMIUM_INVALID报错

表明未获取专业版License授权,H.266解码插件为播放器专业版功能,请参考管理License获取专业版授权。

视频封面相关问题

视频点播获取视频封面失败

视频点播控制台默认为HTTPS协议,只有支持HTTPS协议才可以直接预览并且显示截图。也可以打开浏览器开发者工具查看具体报错。

视频审核相关问题

视频点播人工审核无法播放视频

视频点播有两种审核模式,审核模式如果设置为先审后发,则需要审核完成后才能播放视频。两种审核模式区别如下:

  • 先发后审:视频转码成功后默认标记为正常状态,可直接播放,后续需要在视频审核中进行人工审核确认,通过屏蔽操作后视频将不能播放。

  • 先审后发:视频转码成功后默认进入审核流程,标记为审核中状态,只有审核通过(人工审核通过)后才可以播放。

参数解析问题

videoID是什么?为什么需要videoID?如何获取?

出于安全性考虑,用户使用点播上传媒体文件,将获得该文件的视频ID(videoID),而非URL地址。用户也可以通过点播OpenAPI获取,更多内容,请参见:获取音视频播放地址。

使用点播上传完成之后,会获取到一个videoID。

videoID也可以在阿里云点播控制台获取,操作流程如下所示:

  1. 登录视频点播控制台。

  2. 在点播控制台左侧导航栏的媒资库区域,单击音/视频。

  3. 在视频列表内获取videoID(视频ID)。

可以通过控制台获取的videoID来做下载和播放的测试。如何实现点播上传见:上传SDK概述。

AccessKey Id和AccessKey Secret是什么?如何获取?

阿里云AccessKey Id和AccessKey Secret是您访问阿里云API的唯一凭证。AccessKey Id是类似身份的标识,而AccessKey Secret的作用是签名您的访问参数,以防被篡改。AccessKey Secret类似您的登录密码,不要向任何人泄露。

获取操作:

  1. 登录视频点播控制台。

  2. 将鼠标悬浮在上方菜单栏的用户区域,在弹出的快捷菜单中单击AccessKey管理。

  3. 在AccessKey管理页面,创建AccessKey,或者查看已有AccessKey Id的AccessKey Secret。

playKey是什么?如何获取?

playkey(apikey):播放密钥,用于播放器SDK获取视频播放地址时验证身份,播放鉴权是视频点播在阿里云AK安全认证基础上的二次鉴权机制,可有效防止盗链。根据用户播放时可能使用的平台,默认提供Flash、H5、iOS、Android四个平台的播放密钥。

说明

为保证密钥安全,查看播放密钥时需要输入手机号验证码确认身份。

获取操作:

  1. 登录视频点播控制台。

  2. 在点播控制台左侧导航栏的配置管理区域,选择分发加速配置 > 下载设置。开启安全下载模式。

  3. 在获取密钥中,填写APP唯一标识和离线解密私钥。

  4. 单击生成密钥并下载。

playauth是什么?如何获取?

目前播放器播放视频分为三种模式,对应三种不同的使用场景。使用playauth的方式最安全,建议使用setAuthInfo的播放模式来实现。

playauth可以理解为点播服务将所有的信息(videoID、AccessKey Id、AccessKey Secret)都进行混合再做加密操作,用户拿到的就是一串包含多个信息的数据,播放器就可以播放。

播放模式

适用场景

优劣

是否建议使用

setDataSource

适用于测试

有泄露风险,需要将自己的AccessKey Id和AccessKey Secret直接写入客户端代码中,客户端如果被破解将有泄露风险。

不建议商用时上线使用

setAuthInfo

适用于正式商用

安全,所有的视频地址和链接都不暴露。

建议商用使用

播放本地和网络URL

可以播放本地视频且能够播放视频URL

简单,可以播放其他平台的视频。

在有播放本地视频需求和播放网络视频需求时使用

流程:服务端获取播放凭证 > 将播放凭证下发给客户端 > 完成视频播放。

  1. 获取播放凭证:用户在服务器侧通过调用播放鉴权SDK(Server端的SDK),向视频点播服务获取播放凭证。

  2. 完成视频播放:播放器SDK根据视频ID和播放凭证向视频点播服务获取视频的播放地址,从而加载视频流并解码完成播放。

重要

播放凭证时效为100秒,只能用于获取指定视频的播放地址,不能混用或重复使用。如果凭证过期则无法获取播放地址,请重新获取凭证。

播放器SDK根据播放凭证会自动获取播放地址进行解码播放,播放地址的时效为30分钟,若播放凭证失效请重新获取播放凭证,并回传给播放器SDK用于刷新播放地址。

为保障主账号安全,建议使用子账号的AccessKey,尤其在Web播放场景下。

多音轨切换、倍速控制及小程序播放限制说明

Chrome 浏览器为什么无法切换 MP4 音轨?

Chrome 浏览器不支持 HTMLMediaElement.audioTracks API,因此无法切换 MP4 文件中的音轨。建议改用 HLS(m3u8)格式播放:阿里云 Web 播放器 SDK 基于 hls.js 实现 HLS 多音轨切换;也可以通过多音轨打包转码生成 m3u8 文件后播放。

Flutter 播放器切换音轨后画面为什么会卡住?

Flutter 播放器切换音轨时会清空缓冲区,避免切换后音画不同步。切换期间画面短暂卡住属于预期行为,建议在业务 UI 中增加 loading 提示,明确告知用户正在切换音轨。

如何限制用户修改播放倍速?

仅隐藏倍速按钮只能限制用户通过播放器 UI 修改倍速,无法阻止用户以其他方式修改播放速率。需要使用 JavaScript 监听 ratechange 事件,并通过 setInterval 定时检测 playbackRate 属性;检测到播放速率发生变化时,将 playbackRate 强制重置为 1。

小程序播放 Web 视频和加密视频有哪些限制?

微信小程序不支持阿里云 Web 播放器 SDK,也不支持 DRM 加密视频播放。播放标准加密视频时,需要使用微信小程序原生 Video 组件,并配合自建解密服务。TikTok 等其他小程序可以使用小程序自带的播放器,也可以通过 WebView 集成阿里云 Web 播放器 SDK。

Android 原生 video 标签为什么无法播放 m3u8?

大部分 Android 设备原生不支持 HLS,因此使用原生 video 标签播放 m3u8 文件可能失败。建议将视频转为 MP4 格式,或通过 WebView 集成阿里云 Web 播放器 SDK 播放 HLS 视频。

相关文档