视频点播常见问题

概述

本文主要介绍使用视频点播时出现的常见问题及其解决方法。

详细信息

阿里云提醒您:

  • 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
  • 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
  • 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。

本文主要介绍以下四个常见问题:

视频点播播放不了视频

问题描述

视频点播播放不了音频,且提示以下信息。

请确认您的域名已完成备案和CNAME绑定,并处于启动状态

问题原因

视频点播域名未启用、未设置解析或者本账号下不存在点播域名

  1. 登录点播控制台,在配置管理区域依次选择分发加速配置>域名管理,确认域名的状态正常。
  1. 登录Linux系统,执行以下命令,确认解析正常。

    dig vod.XXX.com

    说明:需要解析控制台提供的CNAME地址。

    系统显示类似如下,说明是正常解析。

  1. 执行以下命令,确认解析正常。以下为A记录解析到某个IP地址的显示,及为不正常解析。

    说明:主要查看CNAME值是否为点播控制台提供。

加速域名配置错误

防盗链问题

防盗链配置了白名单,但是在播放视频时候,访问点播域名的引用域名并不在白名单中,导致播放失败,具体报错示例如下:

  1. 登录浏览器,按F12键,打开浏览器开发者工具,切换到network标签,找到所请求的视频地址,点击该视频地址即可看到如下界面。
  2. 从请求头(Request Headers)中,找到referer字段,即可明确此时请求点播的防盗链域名是什么,将此域名添加到点播域名的防盗链白名单中即可。
    注意:如果找不到这个字段,说明使用的是空referer,那么防盗链白名单勾选“允许通过浏览器地址栏直接访问资源URL”即可。
鉴权问题

点播域名开启了鉴权,但是播放视频的时候使用的是未经过鉴权的视频URL。报错示例截图如下:

解决办法
  • 关闭鉴权配置即可,详情请参见URL鉴权
  • 鉴权配置不用变更,按照鉴权文档要求,生成鉴权之后的视频访问地址即可,详情请参见URL鉴权

视频本身编码问题

视频本身编码为非H264(例如H263或者H265等)

目前主流浏览器平台一般支持的是H264视频编码,如果视频用了H263或者H265视频编码,可能出现不兼容的情况。可以通过ffmpeg查看视频编码描述信息。

ffmpeg -i http://xxxx.demo.com/vod.mp4  

系统显示类似如下。

网络问题导致视频播放失败

该问题的原因一般是由于播放端网络带宽不足,而所播放的视频码率比较高,导致缓冲数据失败,引起播放失败。

在原因3中通过ffmpeg命令可以看到视频码率(或者使用播放器,例如VLC,也可以查看播放时候的实时码率)。例如上述视频码率为1927kb/s,一般想要流畅播放视频,播放端带宽需要是视频码率的1.3~1.8倍左右。所以降低视频码率或者更换本地网络到带宽更大质量更佳的环境,都可以确保播放能够顺畅进行。

中间运营商问题

ping点播域名丢包或者ping不通。此时可以考虑更换自己本地所用LocalDNS,然后刷新本地DNS缓存,再尝试请求点播视频即可。

视频点播在网站中如何引入并播放

可以使用官方提供的Web播放器进行集成接入,本小节提供两种方法。

方法一

获取视频的播放URL,通过在站点页面中引入视频URL获取。

  • 获取播放URL的API接口,详情请参见获取视频播放地址
    说明:如果点播域名开启了鉴权,那么获取到的URL是被鉴权过的,存在有效期限制,需要定期更换新URL才能保证可以一直正常使用。
  • 通过视频点播OpenAPI的SDK获取视频播放URL,SDK获取方法请参见阿里云开发工具包(SDK)。本文以Python SDK为例,示例如下。
    import json
    from aliyunsdkvod.request.v20170321 import GetPlayInfoRequest
    from aliyunsdkcore import client
    clt = client.AcsClient('your AccessKeyId','your AccessKeySecret','cn-shanghai')
    def get_video_playauth(clt):
    request = GetPlayInfoRequest.GetPlayInfoRequest()
    request.set_accept_format('JSON')
    request.set_VideoId('your VideoID')
    response = json.loads(clt.do_action(request))
    return response
    response_str = get_video_playauth(clt)
    print response_str

方法二

使用官方提供的Web播放器,详情请参见产品概述,通过vid和playAuth方式去播放,其中vid为视频ID(videoId),可以在点播控制台的域名管理中获取,playAuth API接口获取请参见获取视频播放地址接口。或者通过点播OpenAPI的SDK获取。本文以Python SDK为例获取PlayAuth,示例如下。

说明:playAuth过期时间只有100秒,且不可自定义设置。

import json
from aliyunsdkvod.request.v20170321 import GetVideoPlayAuthRequest
from aliyunsdkcore import client
clt = client.AcsClient('your accessKeyID','your accessKeySecret','cn-shanghai')
def get_video_playauth(clt):
request = GetPlayInfoRequest.GetVideoPlayAuthRequest()
request.set_accept_format('JSON')
request.set_VideoId('your videoId')
response = json.loads(clt.do_action(request))
return response
response_str = get_video_playauth(clt)
print response_str

如何获取点播上传视频的播放地址

视频点播如何配置加密

点播的视频加密一共分为两种,即HLS标准加密和私有加密:

相关文档

适用于

  • 视频点播