播放音视频

更新时间:
复制 MD 格式

为应用快速集成安全、稳定的音视频播放能力,视频点播提供从播放凭证、URL鉴权到视频加密的全套安全机制,以及跨平台播放器SDK,能够快速实现视频播放,降低开发成本。本文介绍音视频播放的工作原理、播放地址、播放方式和播放安全。

工作原理

音视频文件能否播放,取决于其状态 Status。只有状态为正常Status字段值为Normal)的视频才能正常播放,即通过点播API/SDK能获取到播放地址。

说明

审核中(Checking)屏蔽(Blocked)状态的视频,仅能在点播控制台预览,或通过已设置的审核安全IP进行访问。

视频从上传到可播放的状态流转路径如下:

  • 有转码

    image
  • 不转码

    image

因此,在获取播放地址前,必须确认视频状态已变为Normal

判断方式

用户上传视频完成后,并不代表视频已准备就绪,还需点播服务端确认接收完成,可根据事件通知来确定上传的视频何时能播放。

  • 对于不转码的视频(或音频)接收到视频上传完成事件通知后即可进行播放,此时可通过调用获取视频播放地址接口获取到播放地址,目前仅以下格式支持不转码直接播放:MP4、FLV、M3U8、MP3、WEBM。

  • 对于转码的视频,接收到单个清晰度转码完成事件通知后即可进行播放,若要确保所有清晰度都能获取到,可接收到视频转码完成再处理。

前提条件

  • 配置加速域名:请确保启用的点播域名进行过域名备案。更多信息,请参见域名准入标准。视频点播不强制要求配置加速域名(是否必须配置CDN,取决于访问方式):如果未配置加速域名,可通过获取视频播放地址接口(GetPlayInfo)获取带时效性鉴权参数的 OSS URL 进行播放(不配置加速域名也能播放);配置加速域名后,则可使用 CDN 域名进行匿名访问,或通过 URL 鉴权实现更灵活的缓存控制。两种方式均可正常播放,配置加速域名并非播放视频的必须步骤。

  • 域名CNAME解析:请确保域名完成了CNAME绑定,否则无法播放。CNAME绑定请参见 阿里云(原万网)解析配置CNAME流程,同时也支持DNSPod的域名接入。

  • 确认转码配置:视频点播支持对上传至点播的媒体文件做转码不转码处理,请参见音视频转码

  • 确认安全配置:视频点播支持多种对视频内容的保护机制,包括访问限制、URL鉴权远程鉴权视频加密安全下载,视频是否可播放受限制于以上几种安全配置,请参见视频安全

  • 配置 Web 播放器 SDK License:自 Web 播放器 SDK 2.37.8 版本起,必须配置 License 方可使用,包括 localhost 本地测试环境也需要配置有效 License,不存在临时 License。需要在点播控制台创建 Web 应用并免费购买绑定 License,获取 License Key 和绑定域名后接入代码。老版本 SDK 存在数据合规问题,海外地区使用必须升级至新版本 SDK 并绑定 License。License 的申请与配置详细步骤,请参见 Web 播放器常见问题中的License 相关问题

播放地址

  • 配置加速域名

    在点播控制台配置加速域名后,视频播放地址为CDN文件地址,可在点播控制台的音/视频>管理>视频地址页面查看,分为固定和动态两种,取决于是否在域名管理里开启了URL鉴权开关,开启和配置,请参见URL鉴权

    • 固定地址

      适用于安全性要求低的场景,地址永久有效,即关闭鉴权开关后不含鉴权信息的地址(URL中的auth_key参数值即为鉴权信息)。目前控制台添加域名后鉴权开关默认为关闭。

    • 动态地址

      适用于安全性要求高的场景,地址动态生成,一定时间后过期。动态地址的默认有效时间为您在URL鉴权里配置的默认有效时长,同时您也可以在生成播放地址获取视频播放地址时设置过期时间;若地址过期则访问时CDN会返回HTTP 403

      动态地址示例:

      http://example.aliyundoc.com/video/aliyun-sample.mp4?auth_key=1500523200-0-0-80cd3862d699b7118eed99103f2a****
      说明

      示例中的auth_key参数值前缀1500523200(时间为2017-07-20 12:00:00),且默认有效时长设置为60分钟,则表示该地址会在2017-07-20 13:00:00过期。

  • 未配置加速域名

    • 未配置加速域名时,返回的播放地址为OSS文件地址,此时无法使用URL鉴权,但会默认生成OSS鉴权信息,请参见OSS-在URL中包含签名。此时,通过播放调用获取视频播放地址接口获取播放地址时,仍可使用AuthTimeout参数指定视频OSS地址的过期时间,但无法根据AccessKey自定义鉴权信息。

    • 如您在控制台的存储管理页面设置了存储Bucket公共读,则可忽略OSS鉴权信息(具体操作,请参见存储管理),此时地址为永久有效,但有被盗链、非法下载的风险,故存储Bucket应尽量设置为私有

更多播放地址的常见设置,请参见播放常见设置

可以通过以下两种方式获取播放地址:

  • 直接获取:通过查看转码完成后的事件通知,或调用获取视频播放地址接口。

  • 通过播放凭证自动换取:使用阿里云播放器SDK,可调用获取视频播放凭证接口来获取播放凭证,阿里云播放器SDK通过播放凭证自动获取播放地址进行播放。

播放方式

  • 点播控制台预览

    视频点播预览播放器,为您提供快进、音量、字幕、音轨、清晰度、弹幕等功能。让您预览视频更加便捷。预览视频

    • 在控制台的/视频页面选择视频进行预览,优先播放加密流。

    • 在控制台的音/视频>管理>视频地址页面选择某路流进行预览。为了保障您的视频安全,目前仅支持非加密流预览。

  • 集成阿里云播放器SDK

    • 您可以从服务端获取播放凭证,回传给客户端进行播放,好处在于安全性较高。更多信息,请参见获取播放凭证。使用 Web 播放器 SDK 时,需注意配置 License,具体要求请参见"前提条件"章节。

    • 目前阿里云播放器支持直接使用播放地址进行播放,可以将获取到的播放地址直接传递给播放器进行播放。更多信息,请参见获取播放地址播放。阿里云播放器 SDK 提供标准版专业版两种版本:专业版额外支持 H.266 编码、DASH 协议、外挂字幕、预加载、预渲染、高级 ABR 策略等高级功能,标准版不包含上述功能。如果仅需基础播控功能(点播/直播播放、倍速、清晰度切换等),标准版已足够;如需上述专业功能,建议购买专业版。

  • 集成第三方播放器

    • 您可以集成第三方播放器获取播放地址播放

    • 获取到播放地址后,传递给自主播放器进行播放,方式比较灵活,但需要自己实现清晰度切换、异常处理等开发工作。

播放安全(限制播放和下载)

计费说明

  • 配置加速域名后,音视频播放产生加速服务计费。

  • 未配置加速域名,音视频播放产生存储流出流量计费。

详情请参见基础服务计费

常见问题

视频播放失败,如何排查

  1. 检查网络:确认客户端网络连接正常。

  2. 检查视频状态:调用获取音视频播放地址接口或在控制台查看视频状态是否为Normal

  3. 检查播放地址/凭证:检查auth_key是否过期或签名是否正确。

  4. 检查播放器:确认使用的播放器是否支持该视频格式,阿里云播放器支持格式请参见播放器SDK功能详情

  5. 手机浏览器直接复制播放地址,播放卡顿或加载失败:原因是播放地址缺少 URL 鉴权签名,或域名开启了 Referer 防盗链校验并拦截了该请求。解决方法:确认播放地址是否开启了 URL 鉴权并携带有效的 auth_key 签名;检查域名的 Referer 防盗链白名单配置;建议使用带签名的播放链接,或通过播放器 SDK 访问,避免直接暴露原始播放地址。

  6. 微信小程序 video 组件倍速播放时音画不同步:原因是微信小程序原生 video 组件底层对 edit list 支持不完善,音频初始偏移在倍速播放或 Seek 操作时会累积放大。解决方法:建议使用阿里云 Web 播放器 SDK 替代原生 video 组件,或对视频进行转码处理以提升兼容性。

  7. Chrome 浏览器升级后 Web 播放器无法使用(涉及 HLS 兼容性问题):建议将 Web 播放器 SDK 升级至 2.37.8 及以上版本以解决该兼容性问题,并按需申请配置免费的 License(License 申请方式参见"前提条件"中的说明)。

更多异常请参考播放异常自主排查

如何实现视频加密播放

视频点播提供多种加密方案,如阿里云视频加密和HLS标准加密,需要配置加密转码模板组进行转码,并在播放时使用阿里云播放器SDK解密播放。详情请参见视频加密

加密播放报错 InvalidParameter,提示 Rand 参数无效

播放加密视频时,如果报错 InvalidParameter 且提示 Rand 参数无效,需要在播放配置中设置对应的 encryptType 参数。具体配置方式请参见加密视频播放说明