Web点播播放器1.0——腾讯sdk网页点播播放器

https://www.qcloud.com/document/product/267/5706

功能介绍

本文档是介绍腾讯云视频点播服务的网页播放器(Web SDK)的使用说明,它可帮助腾讯云客户直接使用经过验证的视频播放能力,通过灵活的接口,快速同自有Web应用集成,以实现桌面应用播放功能。同时本SDK还提供在WEB端上传视频的能力。

该SDK所播放的文件受限于全局防盗链功能定义。详细内容请查看官网FAQ安全功能相关说明。

该文档面向考虑使用腾讯云视频点播播放器Web SDK进行开发并具备Javascript语言基础的开发人员。

能力支持

播放格式

WEB SDK播放视频格式支持:

播放格式PC浏览器环境手机浏览器环境
HLS(m3u8) 支持 支持
MP4 支持 支持
FLV 不支持 不支持

Android 系统兼容性问题
不像iPhone上只有一个Safari浏览器,Android上的系统标配浏览器有非常多的实现版本,所以Android手机浏览器的兼容是一个业界难题,故此表格中所示的手机浏览器格式支持情况比不适用于所有Android手机。

上传格式

SDK上传视频格式支持:

标准格式详细格式
微软格式 WMV,WM,ASF,ASX
REAL格式 RM, RMVB,RA,RAM
MPEG格式 MPG,MPEG,MPE,VOB,DAT
其他格式 MOV,3GP,MP4,MP4V,M4V,MKV,AVI,FLV,F4V

点播平台的转码服务
由于MP4和HLS(m3u8) 是目前在PC浏览器和手机浏览器上支持程度相对较好的格式,所以腾讯云的视频点播平台最终会把上传的视频发布为 MP4和HLS(m3u8) 格式。

平台兼容

为手机浏览器和PC浏览器写两套代码是非常吃力的事情,但如果您使用本款播放器,同一段代码可以自动实现PC浏览器和手机浏览器的自适应切换,播放器内部会自动区分平台使用最优的播放方案。例如:PC平台优先使用Flash 播放器以适应多种视频格式的情况,而手机浏览器上会使用HTML5技术实现视频播放。

准备工作

step1 :开通服务

首先您需要注册一个腾讯云账号,然后开通点播服务。

step2 :上传文件

点播服务开通之后,进入 点播视频管理就可以上传新的视频文件了,因为我们本篇文档主要介绍播放器的使用,所以这样做是为了让您先有个自己的在线视频地址。如果您没有开通点播服务,这个页面是进不去的。

step3 :获取ID

上传完视频之后,您就可以视频管理页面查到文件的id了,这个是播放器播放视频的最基本信息,与此同时,本款播放器有质量统计功能,在使用之前需要先确认APPID,您的APPID也可以在视频管理页面查看到。

下图中的两个ID,左边一个是视频文件的ID,另一个就是您的APPID了。

step4 :页面准备

在需要播放视频的页面(包括PC或H5)中引入初始化脚本:

<script src="//qzonestyle.gtimg.cn/open/qcloud/video/h5/h5connect.js" charset="utf-8"></script>;

本地文件限制
本地文件是不能用这款播放器播放的,因为有跨域问题,播放器一定要挂IP或者域名访问,这也是为什么需要您先上传一个视频文件获取在线播放地址的原因。

添加播放器

经过下面两个简单的步骤,您就可以在您的网页上添加一个视频播放器了。

step 1 :添加播放器容器

在需要展示播放器的页面位置加入播放器容器,例如:在index.html中加入如下代码(容器id以及宽高都可以自定义)

<div id="id_video_container" style="width:100%; height:auto;"></div>;

step 2 :创建Player 对象

接下来在页面引入的Javascript脚本中,创建一个播放器对象,这时将使用播放器的构造函数

var player = new qcVideo.Player("id_video_container", {
    "file_id": "1465197896261041838",
    "app_id": "125132611",
    "width":640,
    "height":480
});

该构造函数将会生成一个播放器对象,并且根据file_id和app_id找到对应的视频进行播放,您可以使用播放器对象player 对播放器进行控制。播放器对象的参数选项下方API方法总览有详细介绍。

完整实例代码

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1" />
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0, minimum-scale=1.0, maximum-scale=1.0"/>
    <title>点播</title>
</head>
<body>
<div id="id_video_container" style="width:100%; height:auto;"></div>
<script src="//qzonestyle.gtimg.cn/open/qcloud/video/h5/h5connect.js" charset="utf-8"></script>
<script type="text/javascript">
    (function () {
        var player = new qcVideo.Player("id_video_container", {
            "file_id": "1465197896261041838",
            "app_id": "125132611",
            "width":640,
            "height":480
        });
    })()
</script>
</body>
</html>

更多的情况

case 1 :有视频地址但是没有file_id 及app_id的情况下怎么播放视频?

这时需要用到传视频播放地址的功能,这时不需要传file_id 及app_id。JS用例如下:

    var option = {
    "width": 640,
    "height": 480,
    //...可选填其他属性
    "third_video": {
    "urls":{
            20 : "http://208.vod.myqcloud.com/204.mp4"//演示地址,请替换实际地址
        }
    }
};
var player = new qcVideo.Player("id_video_container", option);

其中参数third_video的 urls属性是个Object 可以传多个不同清晰度的视频地址,具体参数说明在API方法总览中,直达链接

备注:urls 中至少包含一个视频地址

case 2 :如何使用"弹幕"功能?

在播放器初始化完成后,调用播放器对象的addBarrage(barrage) 方法,可以为视频添加弹幕。具体参数参考API方法总览的说明。

例子:给正在播放的视频添加两条弹幕

var barrage = [
{"type":"content", "content":"hello world", "time":"1"},
{"type":"content", "content":"居中显示", "time":"1", "style":"C64B03;30","position":"center"}
];
player.addBarrage(barrage);

备注:弹幕功能仅在前端实现,后台支持请自行开发。弹幕只在PC Flash播放器中生效,H5暂时不具备弹幕功能

case 3 :播放结束时做一些操作,如视频推荐,应该怎么做?

使用listener参数,传入playStatus事件的回调函数。当播放状态变更时,会调用此函数。具体回调函数参数的说明参考API总览,直达链接

例子:

var option ={
    "file_id":"1465197896261041838",
    "app_id":"125132611",
    "width":800,
    "height":720
    //...可选填其他属性
};
var listener = {
    playStatus: function (status){
        //TODO
        console.log(status);
    }
};
var player = new qcVideo.Player("id_video_container", option, listener);

case 4 :让播放器记住上次观看的时间点,下次从这个时间点继续播放该怎么做?

option中设置remember参数为1,播放器将会记录该视频最后一次未播放完的的时间点,下次播放会从这个时间点继续播。

例子:

var option ={
    "file_id":"1465197896261041838",
    "app_id":"125132611",
    "width":800,
    "height":720,
    "remember":1
    //...可选填其他属性
};
var player = new qcVideo.Player("id_video_container", option);

case 5 :如何让播放器在网页尺寸变化时跟着变化尺寸

使用播放器对象的resize(width, height),可以动态修改播放器尺寸。

player.resize(640, 480);

case 6 :如何播放在云视频管理里设置了密码的视频?

和播放普通视频一样,SDK会自动显示输入密码对话框,输入密码后即可播放。

备注:密码功能只对传视频ID播放方式有效。

case 7 :如何生成通过二维码或者链接传播的链接?

例子(请替换链接中的appid和fileid):

http://play.video.qcloud.com/qrplayer.html?appid=1251769111&fileid=14651978969211156176147&autoplay=0&sw=640&sh=426&\$def=20&wmode=transparent …

http://play.video.qcloud.com/iplayer.html?appid=1251769111&fileid=14651978969211156176147&autoplay=0&sw=1800&sh=1200&def=20&wmode=transparent …

case 8 :如何指定播放视频的清晰度?

在确认视频拥有该清晰度的情况下,使用definition参数指定播放视频的清晰度,适用于视频ID和传地址播放两种方式。参数说明链接

例子:

var option ={
    "file_id":"14651978969261415426",
    "app_id":"1251606588",
    "definition":30,
    "width":800,
    "height":700
};

var player = new qcVideo.Player("id_video_container", option);

API方法总览

1.构造函数

qcVideo.Player(id, option, listener);

id: String ; 必选参数 ;
页面放置播放器的容器ID,可以自由定义。

option: Object ; 必选选参数 ;
播放器的参数设置选项,具体选项有:

参数类型默认值参数说明
file_id String 用视频ID播放方式为必选参数,为该点播文件的唯一标识
app_id String 条件同上为必选参数,同一个账户下的视频,该参数是相同的
width Number 必选,例如:640,设置播放器宽度,单位为像素
height Number 必选,例如:480,设置播放器高度,单位为像素
auto_play Number 0 是否自动播放,0: 不自动,1: 自动播放 
备注:该选项只对PC平台Flash播放器生效
disable_full_screen Number 0 是否允许全屏播放,0: 支持全屏播放,1: 禁用全屏播放 
备注:该选项只对PC平台Flash播放器生效
disable_drag Number 0 是否允许拖动时间轴,0: 允许拖拽,1: 禁止拖拽 
备注:该选项只对PC平台Flash播放器生效
stretch_full Number 0 是否等比拉伸视频至铺满播放器0: 不拉伸,1: 拉伸全屏 
备注:该选项只对PC平台Flash播放器生效
stop_time Number 试看功能,例如设置:60,60秒后停止播放,并且触发“playStatus”事件
remember Number 0 是否开启续播功能,0:关闭,1:开启,开启后将会记录这个视频上一次未看完的时间点,下一次继续播放。 
备注:该选项只对PC平台Flash播放器生效
playbackRate Number 1 变速播放,例如设置2表示2倍速度播放,0.5表示慢正常速度一倍播放。 
备注:该选项暂时只对H5播放器生效
hide_h5_setting Boolean false 是否隐藏H5的设置按钮,true:隐藏,false:不隐藏
hide_h5_error Boolean false 是否隐藏H5的错误提示, 
备注:该选项暂时只对H5播放器生效
WMode String window Window模式不支持其他页面元素覆盖在flash播放器上面,如需要可以修改为opaque 或其他flash wmode的参数值。
备注:该选项只对PC平台Flash播放器生效
stretch_patch Boolean false 设置为true时,支持将开始、暂停、结束时的图片贴片铺满播放器。
definition Number 可以指定播放视频的清晰度,首先需要视频拥有改清晰度 可选值有: 10、20、30、40、210、220、230、240,具体对应哪种视频可以参考third_video的参数说明。
videos Array 开启防盗链后,可以通过设置videos的可访问的视频地址,支持播放器播放;清晰度类型通过url与后台查出的url前缀匹配得到。详情请查看防盗链功能使用指南
例如:[“http://xxx.myqcloud.com/xxxyy\_f220.m3u8?**sign**=xxx”,
...
]
third_video Object 该选项只用于视频文件播放地址的情形
参数例子:{
‘duration’: 20 , //视频时长(单位秒),可选参数,没有传的情况下在视频加载MetaData后自动更新视频时长。
注意:如果是播放mp4,这个时长数据是必须的
‘urls’ : { //(至少包含一个地址,注意对应视频格式
   10 : “mp4手机视频地址”, 
   20 :“mp4标清视频地址”,
   30 : “mp4高清视频地址”, 
   40 : “mp4超清视频地址”, 
   210 : “hls手机视频地址”, 
   220 : “hls标清视频地址”, 
   230 :“hls高清视频地址”, 
   240 : “hls超清视频地址” 
  }
}
备注:如果在 Chrome 等PC浏览器中模拟移动设备,需要有 mp4 视频地址才可以播放。

listener : Object ; 可选参数 ; 播放状态变化回调函数列表

函数名称类型说明
fullScreen function 全屏/退出全屏时触发,回调函数的参数 isFullScreen:Boolean 
返回值: true全屏 ; false 退出全屏 
例子:function(isFullScreen){ ... } 
备注:该事件只对PC平台Flash播放器生效
playStatus function 播放状态变更时触发,回调函数的参数 status:String 
返回值:ready: “播放器已准备就绪”,seeking:”搜索”, suspended:”暂停”, playing:”播放中” , playEnd:”播放结束” , stop: “试看结束触发” , error: “h5播放出现错误时触发” 
例子:function(status, msg){ ... }
dragPlay function 拖动播放位置变化时触发 ; second:Number 
返回值:拖动播放的位置(单位秒) 
例子: function(second){ ... } 
备注:该事件只对PC平台Flash播放器生效

2.获取参数和状态

构造函数返回的播放器对象具有以下获取参数和状态的方法

方法名返回值说明
getVolume Number,取值范围(0 到 1) 获取当前音量
getDuration Number,单位秒 获取当前视频总时长
getCurrentTime Number,单位秒 获取当前播放位置
isSeeking Boolean ; true 为”加载中” 当前播放状态是否 “加载中”
isSuspended Boolean ; true 为”暂停中” 当前播放状态是否 “暂停中”
isPlaying Boolean ; true 为”播放中” 当前播放状态是否 “播放中”
isPlayEnd Boolean ; true 为”播放结束” 当前播放状态是否 “播放结束”
getWidth Number(int) 获取当前播放器宽度
getHeight Number(int) 获取当前播放器高度
getClarity Number(int) ( 1:”手机”, 2:“标清”, 3:“高清”, 4:“超清”) 获取当前视频的清晰度
getAllClaritys Array<int> ( 1:”手机”, 2:“标清”, 3:“高清”, 4:“超清”) 获取当前视频全部的清晰度

3.设置和动作

构造函数返回的播放器对象具有以下设置方法

方法说明
resize(width,height) 参数:width :int;height :int 
功能:设置当前播放器宽度高度 
返回:无
play(second) 参数:second:int单位秒 
功能:开始播放,可以设置开始播放指定时间点 
返回:Int 返回码
备注:在传视频地址播放的情况下,second只能传 空值 或者0
pause() 功能:暂停当前播放的视频 
返回:Int 返回码
resume() 功能:恢复播放视频
返回:Int 返回码
setClarity(clarity) 参数:clarity:int 清晰度 取值范围 (1:”手机”,2:”标清”,3:”高清”,4:”超清”)
功能:更换视频清晰度 
返回:Int 返回码 
注意:clarity指定的清晰度,请确保当前视频具备该清晰度,否则将按播放器默认规则选择一个清晰度播放
changeVideo(opt) 参数: opt Object ; 包含将要播放的视频的基本信息,和构造函数第二个参数基本一致,具体参考构造函数说明
功能:动态更换视频 
返回:Int 返回码
addBarrage(barrage) 参数:barrage:Array 弹幕信息 
[{ 
"type":"content", //消息类型 ,content:普通文本 (必选) 
"content":"hello world", //文本消息 (必选) 
"time":"1.101",//单位秒 ,表示距离当前调用添加字幕的时间多久后,开始显示该条字幕 (必选) 
"style": "C64B03;35",// 分号分割,第一项颜色值,第二项字体大小 (可选) 
"postion":"center" //固定位置 
center: 居中,bottom: 底部, up: 顶上 (可选) }, ... ] 
功能:添加弹幕 
返回:Int 返回码 
备注:弹幕仅在前端实现,后台功能请自行开发。该功能只在PC Flash播放器中生效
closeBarrage() 功能:关闭弹幕,关闭后重新调用addBarrage可开启弹幕。 
返回:Int 返回码 
备注:弹幕仅在前端实现,后台功能请自行开发。该功能只在PC Flash播放器中生效

这些设置方法的统一返回码是:

错误码含义
200 操作成功
0 播放器未完全初始化
-1 动态更换失败视频,缺少必要参数
-2 未知操作命令
-3 播放时间超出有效播放范围

视频文件上传功能

用户可以使用点播Web SDK上传视频,以帮助腾讯云视频用户通过Web上传视频文件。

该SDK当前支持HTML5上传(不支持HTML5的浏览器暂不支持上传)

具体操作方法请阅:http://video.qcloud.com/sdk/upload.html

问题排查

错误码列表

SDK使用过程中出现的异常code对照表,如遇到未在列表中的异常code,请联系我们的客服,客服会安排工程师进行解决。

Code说明
1003 密码错误
10000 请求超时(拉取播放器配置信息与视频信息超时,请检查网络重试,超时时间为10s)
10001 数据解析失败(拉取播放器配置信息与视频信息获取到的数据解析失败,可能是网络问题或者服务器异常)
10002 连接超时,请稍后再试(拉取播放器配置信息与视频信息失败,可能是网络问题或者服务器异常)
10008 APPID或 File ID错误
11044 缺少APPID
11045 缺少File ID
11046 缺少密码

常见问题

    • 为什么H5播放视频拉伸变形了?

      解答:H5并不具备拉伸视频的能力,请检查播放器的容器宽高是否设置正确

    • QQ浏览器显示下载视频,怎么屏蔽?

      解答:手机QQ浏览器的内核限制,JS无法干预,同样在UC等浏览器的内核也提供了自动嗅探视频提供下载的功能。需要联系浏览器开发商进行关闭。

    • QQ浏览器下无法在盖住视频

      解答:浏览器接管了H5的视频播放功能,X5内核视频播放使用了自研的播放器,考虑用户体验,浏览器使用了统一的播放界面。相关信息参考QQ浏览器文档说明

    • 在调用isPlaying()等方法时没有获取到正确的状态信息

      解答:在移动端的某些浏览器和webview中,播放视频会被浏览器自带的内核接管,sdk将无法获得正确的播放状态。

    • 设置了自动播放,但在移动端无法自动播放?

      解答:目前大部分手机浏览器由于数据流量等原因,默认不自动加载媒体文件,播放视频时需要用户触发操作。

    • iOS系统下视频自动全屏播放

      解答:iOS系统由于webkit设置原因,默认视频全屏播放,如果您的视频需要在APP内实现内联播放,可以设置webkit-playsinline属性。目前iOS10以下版本的Safari无法禁止视频自动全屏。

    • 为什么在 PC Chrome 中Flash播放器会有两个播放按钮?

      解答:从Chrome 42版本开始将不再自动播放Flash, 只对主要的Flash内容进行自动播放,其它的Flash内容将被暂停播放,除非用户决定去手动点开它。

 

posted @ 2017-07-31 11:01  STN_LCD  阅读(2579)  评论(0编辑  收藏  举报