本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。
本文为您介绍使用视频点播服务过程中常见的报错及相应的处理建议。
使用视频点播服务过程中报“No 'Access-Control-Allow-Origin'”的错误
报错No 'Access-Control-Allow-Origin'
为跨域错误,您需要进行跨域配置。您可以参考下述方法进行配置:
登录视频点播控制台。
在左侧导航栏选择配置管理 > 分发加速配置 > 域名管理。
选择您要配置的域名,单击配置。
在指定域名的左侧导航栏,单击缓存配置。
选择自定义HTTP响应头页签,单击添加,配置自定义HTTP响应头。
配置自定义响应头参数为Access-Control-Allow-Origin,响应头值配置为
*
或需要访问的完整域名,例如www.aliyundoc.com。 更多详细信息,请参见自定义HTTP响应头。单击确定,完成配置。
有关阿里云Web播放器SDK相关的跨域配置,请参见配置跨域访问。
使用视频点播服务过程中报AliyunVODDefaultRole不存在的错误
使用视频点播的HLS标准加密、MNS回调及STS临时授权访问等部分功能时,会涉及访问其他云产品的资源,则需要视频点播拥有相应的权限,例如使用HLS标准加密功能需要KMS的权限、使用MNS回调功能需要MNS的权限等等。
AliyunVODDefaultRole是由点播系统创建的角色,该角色拥有对您OSS、MNS、CDN、以及KMS云资源的部分权限。当提示您AliyunVODDefaultRole不存在时,例如报错The role not exists: acs:ram::1748098****:role/AliyunVODDefaultRole.
,您可以通过访问云资源访问授权页面进行授权解决。
播放私有加密视频时,报”ERROR_SERVER_VOD_FORBIDDEN_ALIYUNVODENCRYPTION“的错误
为了保障您的视频安全,当直接调用GetPlayInfo - 获取音视频播放地址接口获取播放地址进行播放时,默认不返回私有加密流。因此,通过该方式播放私有加密视频时,会出现视频播放失败并报错ERROR_SERVER_VOD_FORBIDDEN_ALIYUNVODENCRYPTION
。您可以通过下述方式解决:
方式一:调用GetPlayInfo - 获取音视频播放地址接口时,设置
ResultType
参数值为Multiple
来获取所有转码完成的播放地址。方式二:经阿里云视频加密(私有加密)方式加密的视频,支持使用阿里云播放器SDK对视频进行解密播放。建议您使用阿里云播放器SDK播放视频,详情请参见使用阿里云播放器。
视频点播的视频播放地址过期
问题现象
当您使用阿里云视频点播产品,通过浏览器访问某视频点播地址时,访问失败,出现类似如下错误提示。
<Error>
<Code>AccessDenied</Code>
<Message>Request has expired.</Message>
<RequestId>5DF332644EAA4931361D1E43</RequestId>
<HostId>
outin-2cc63XXXXXXe1c955c.oss-cn-shanghai.aliyuncs.com
</HostId>
<Expires>2019-12-13T06:37:22.000Z</Expires>
<ServerTime>2019-12-13T06:40:36.000Z</ServerTime>
</Error>
问题原因
视频点播产品底层的存储依赖于OSS产品,如果没有添加视频点播域名,那么视频点播中的原始文件和转码文件地址,即流畅、标清、高清等视频都是使用类似于outin-6a6fd4XXXXXXe1a65b6.oss-cn-shanghai.aliyuncs.com
样式的OSS域名。
由于视频点播底层使用的OSS存储空间默认是私有权限,所以需要使用带签名参数的URL访问,即URL中需要携带Expires、Signature和AccessKey ID三个签名参数。但是该签名URL是存在过期时间,签名URL中的Expires字段是UNIX时间戳,标识的就是过期时间。综上所述,当以下条件成立时,你可能遇到上述报错:
没有为视频点播产品添加视频点播域名。
底层OSS存储权限并未设置为公共读,默认情况下底层OSS存储空间为私有权限。
解决方案
您可以通过以下两种方案解决此问题:
当使用视频点播底层的OSS域名进行访问时,不会使用视频点播的视频分发加速功能。这种情况下,播放视频时没有加速效果,而且所产生的访问流量也无法使用视频点播的流量包抵扣,而是会产生存储流出流量的费用,因为点播流量包只能抵扣使用视频点播域名播放视频产生的流量。如果使用视频点播域名播放视频,是可以基于点播底层的CDN加速分发视频,并且产生的流出流量可以使用流量资源包进行抵扣,因此推荐使用方案一。
方案一:为视频点播配置加速域名(推荐)
注意事项
由于视频点播域名需要配置CNAME记录,而CNAME记录和A记录是冲突的,具体冲突规则请参见解析记录冲突规则,因此配置CNAME记录前需要先删除A记录。
建议视频点播域名不要使用网站站点的域名,因为站点域名通常是使用A记录进行解析。如果删除A记录后,将无法访问站点,因此建议使用新的域名进行配置。
视频点播加速域名默认不开启鉴权,因此在未开启鉴权的情况下,使用视频点播加速域名的视频URL是没有过期时间的。如果开启了视频点播域名的URL鉴权功能,那么视频URL也是存在过期时间的,鉴权相关信息请参见配置URL鉴权。
配置方法
登录视频点播控制台。
在左侧导航栏选择配置管理 > 分发加速配置 > 域名管理,进入到域名管理页面。
确认是否已添加域名。
如果已存在域名,但域名未启用,则请启用该域名并确认CNAME记录添加成功即可。
如果不存在域名,则参考下一步进行域名添加。
在域名管理页面,单击添加域名,配置域名信息后,单击提交。
详细参数解释请参见添加加速域名。域名添加完成后,请参见配置CNAME进行CNAME配置。添加视频点播域名以后,为了有更好的加速效果,建议您添加缓存配置,详情请参见缓存配置。
方案二:将默认的OSS存储权限设置为公共读
将OSS权限修改成公共读,然后使用不带签名参数的URL进行访问,排除URL过期时间的影响。
配置为公共读权限后,互联网上任何用户都可以对该Bucket内的文件进行访问,这可能造成您数据的外泄以及费用激增,请谨慎配置公共读权限。
登录视频点播控制台。
在左侧导航栏选择配置管理 > 媒资管理配置 > 存储管理,进入到存储管理页面。
单击目标存储地址操作列的管理。
在权限区域,单击修改配置。
设置权限为公共读后,单击确定。
修改成公共读权限后,视频点播控制台默认提供的视频地址还是携带签名参数的URL。因此,使用时需要去除URL中
?
以及之后的签名参数,使用类似如下没有过期时间参数的URL访问即可。https://outin-ebdeeXXXXXX3e008181.oss-cn-shanghai.aliyuncs.com/1db42d58e9694bf681d838f0ed9****/d0a5a57cb830412ca133607e****-ld.mp4