zoukankan      html  css  js  c++  java
  • 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="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="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内容将被暂停播放,除非用户决定去手动点开它。

  • 相关阅读:
    SpringMVC上传文件的三种方式(转载)
    几种流行Webservice框架性能对比(转载)
    @QueryParam和@PathParam使用方法比较
    MyEclipse开发Rest服务入门
    WebService SOAP、Restful和HTTP(post/get)请求区别
    Java WebService入门实例
    WebService 与 Socket 区别
    Double 数据保留两位小数二:直接截取小数后面两位,不进行四舍五入
    SVN 常识
    Android 友盟分享躺过的几个坑,大坑,坑爹啊
  • 原文地址:https://www.cnblogs.com/stnlcd/p/7262054.html
Copyright © 2011-2022 走看看