自定义音频播放器

1 概述

根据polyv播放器现有参数、接口、事件。实现pc/移动端兼容的音频播放器,可自定义播放器样式。

1.1 特性

基础功能

  • [✓]支持IOS、Android主流厂商及机型
  • [✓]支持IE10+, chrome等主流浏览器
  • [✓]支持多种视频编码格式(h264, mpeg4)
  • [✓]支持主流的视音频格式
  • [✓]播放控制(播放、暂停,拖拽进度调整)

2 开发准备

音频播放器使用audio标签进行播放,优点:节省流量。因此需要准备音频文件。保利威视后台生成音频文件有以下两种方法:

  • (1)音频源文件上传,如mp3文件,具体上传步骤可参考源文件播放
  • (2)后台开启生成音频文件,具体生成音频文件可参考音频播放器使用

3 快速开始

4 创建自定义音频播放器

4.1 引入相关资源

打开index.html

(1)在<head>中引入polyvAudio.css

<link href="polyvAudio.css" rel="stylesheet">

(2)引入相关js文件

<script src="jquery3.3.1.min.js"></script>
<script src="//player.polyv.net/script/polyvplayer.min.js"></script>
<script src="polyvAudio.js"></script>

(3)设置dom节点

<div class="wrap polyvAudio">
        <div id="audio_area" class="db audio_area">
            <div class="audio_area_left">
                <div id="audio_play_area" class="audio_play_area">
                    <i class="icon_audio_playing"></i>
                    <i class="icon_audio_pausing"></i>
                </div>
            </div>
            <div id="audio_area_right" class="audio_area_right">
                <div class="audio_info">
                    <div class="db audio_info_area">
                        <strong class="db audio_title">保利威视宣传音频</strong>
                    </div>
                    <div id="audio_slide_bar" class="audio_slide_bar">
                        <div id="audio_progress" class="progress_bar" style="width: 0%;"></div>
                        <div id="audio_progress_bg" class="progress_bar_bg"></div>
                        <div id="audio_progress_dot" class="audio_progress_dot"></div>
                    </div>
                    <div class="audio_time tips_global">
                        <span id="audio_curren_time" class="audio_current">00:00</span>
                        <span class="audio_separator">/</span>
                        <span id="audio_length" class="audio_length">00:00</span>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <div id="audio" class="audio_player"></div>

(4)嵌入播放器并设置参数调用音频模式
如2开发准备说明,可以通过以下两种方式设置对应参数嵌入播放器。
- 示例一

var player = polyvObject('#audio').videoPlayer({
    width: '1',
    height: '1',
    vid: 'accb9f485b10c10478651a4e61d49425_a',//源文件播放
    useAudio: true,
    ban_ui: true,
    hidePlayBtn: true,
    forceHTML5: true
});
  • 示例二
var player = polyvObject('#audio').videoPlayer({
    width: '1',
    height: '1',
    vid: 'accb9f485b180ec89afd18f9c8756bc2_a',//音频播放器使用
    priorityMode: 'audio',
    ban_ui: true,
    hidePlayBtn: true,
    forceHTML5: true
});

(5)关联自定义控制栏,并传入播放器实例

var polyvAudioObj = $('.polyvAudio').polyvAudio({
    player: player
});
4.2 播放控制

播放控制包括:暂停、继续、停止、获取当前播放时间、播放状态触发等,相关函数如下:

选项

useAudio

* 类型:Boolean
* 说明:是否使用音频模式

ban_ui

* 类型:Boolean
* 说明:是否隐藏播放器皮肤

hidePlayBtn

* 类型:Boolean
* 说明:是否隐藏播放器大播放按钮

forceHTML5

* 类型:Boolean
* 说明:是否使用H5播放器
* 注意: 使用H5播放器可防止部分浏览器屏蔽FLASH播放器的情况

接口

j2s_resumeVideo

* 说明:执行播放器播放动作

j2s_pauseVideo

* 说明:执行播放器暂停动作

j2s_getVideo

* 说明:获取播放器video标签实例
* 返回值说明:返回video节点
* 获取视频结束播放状态示例:player.j2s_getVideo().ended

j2s_getDuration

* 说明:获取当前播放视频总时长
* 返回值:Number(单位:秒)
* 注意: 需要在s2j_onPlayStart事件触发后再执行,否则返回0

j2s_seekVideo

* 说明:控制播放器SEEK功能
* 传参说明:秒数
* 使用示例:player.j2s_getVideo(50)

j2s_getCurrentTime

* 说明:获取视频播放当前时间
* 返回值:秒数

事件

s2j_onPlayStart

* 说明:播放开始时触发,播放过程中只触发一次

s2j_onVideoPlay

* 说明:播放开始时触发,播放过程中触发多次

以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

音频播放器使用

开启

1、描述:开通视频转音频的用户可在后台开启生成音频文件,开启后,在对视频文件转码时,会额外生成一份音频文件,在播放器上可进行视频/音频的切换。

2、设置----->视频设置----->生成音频文件设置。
播放器设置----->创建/修改----->皮肤设置选择:简雅蓝/高贵金/清新绿
b68615ddgy1fmcufedt1xj20jz0b9408
播放器中的音视频切换功能展示
b68615ddgy1fmez3s5xbqj20m60d9gp8

参数

参数 类型 默认值 取值 说明
priorityMode String video video/audio 有音频时,优先播放模式
audioMode Boolean true true/false 有音频时,是否显示音频

接口

接口名 参数类型 参数 说明
方法 getCurrentMode() String video/audio 获取当前播放模式,视频模式或音频模式
setMode(value) String video/audio 设置当前播放模式,视频模式或音频模式
事件 onChangeMode(value) String vid, currentSelectMode, preSelectMode 切换播放模式时触发,currentSelectMode为新选择的模式,preSelectMode为之前选择的模式

示例

var mode = player.getCurrentMode();
console.log(mode) // video/audio
player.setMode('video');
window.onChangeMode = function(vid, currentSelectMode, preSelectMode){
console.log(vid, currentSelectMode, preSelectMode);
}
以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

HTML5 播放器使用文档

如何使用

<div id="player"></div>
<script src="//player.polyv.net/script/player.js"></script>
<script>
  var player = polyvPlayer({
    wrap: '#player',
    width: 800,
    height: 533,
    vid: 'e8888b74d1229efec6b4712e17cb6b7a_e',
  });
</script>

选项

参数 类型 默认值 说明
wrap string / HTMLElement - 页面上存在需要载入播放器的DOM元素或css选择器
width number / string 100% 播放器的宽度
height number / string auto 播放器的高度
vid string - 从 polyv 后台上传的视频会生成一个视频唯一vid
loop boolean false 视频播放结束后是否循环播放
autoplay boolean false 播放器加载后视频是否自动播放
volume number 0.75 视频默认音量大小,范围 (0, 1),播放器会记录上一次播放的音量
flash boolean false 是否默认打开flash播放器
df number - 视频默认清晰度,可设置为0123,分别对应自动、流畅、高清、超清,设置该参数会覆盖后台的设置
hideRepeat boolean false 播放结束后是否显示重播面板,可通过play.HTML5.changeRepeat改变
code string - 跑马灯设置中自定义的code值
speed boolean/array [2, 1.5, 1.2, 0.5] 设置为false则关闭倍速,可传入数组自定义显示哪几种倍速,速率1不需要填入,会自动添加,所设置速率值必须大于0,少于或等于3,最多设置6种速率(不包含1),所设置值会按由大到小自动排序
showHd boolean true 是否显示清晰度选择
ignoreIE boolean false 设置该选项将会在ie浏览器中禁用HTML5播放器(edge浏览器除外,国内360,QQ等浏览器的兼容模式表现为ie浏览器,所以也会被禁用)
watchStartTime number undefined 从第几秒开始播放,需少于视频时长
watchEndTime number undefined 播放到第几秒结束播放,需少于视频时长,在该值到结束的进度条禁止点击,如果设置值少入watchStartTime,则watchStartTime失效
skinLocation number 1 控制栏显示在视频区域内外或不显示,可选0(不显示)、1(视频内)、2(视频外)
ban_history_time string off 是否禁止记住播放进度,下次打开会从上次进度打开(设置watchStartTime后还是会从watchStartTime处开始播放),默认为off(不禁止),on为禁止
hideSwitchPlayer boolean false 是否禁止显示HTML5与flash播放器切换按钮
priorityMode string video 默认打开视频模式还是音频模式,需要该视频有对应的音频转码可选video/audio
audioMode boolean true 是否开启音频模式
videoMode boolean true 是否开启视频模式,设置为false后将会以音频模式播放,无论是否有音频转码
screenshot boolean false 是否开启视频截图功能
ban_seek_by_limit_time string on 是否禁止视频拖拽为播放区域
ban_seek string off 设置为 on 播放器将会彻底禁止拖拽
loading_bg_img string - 视频默认封面图
ban_record_interaction_right_answer string off 设置为 on 问答回答正确不会记录,每次刷新播放都需重新回答

选项-加密设置

playsafe (string|function / 默认值:undefined)
- 服务器计算出的 token 若要播放加密视频才需要该参数,非加密视频可忽略
- 当传入function 时,next必须调用,且传入获取的token值。当设置函数时切换视频(changeVid)可不需重传playsafe值,当播放加密视频时会自动获取,若视频有音视频切换建议使用
- 请在服务器生成 token 值

ts (number / 默认值:undefined)
- 移动端加密视频时间戳 移动端视频的WEB加密

sign (string / 默认值:undefined)
- 移动端加密视频签名 移动端视频的WEB加密

token获取方式

// php
function get_client_ip() {
  if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
    $ipaddress = $_SERVER['HTTP_CLIENT_IP'];
  } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
      $ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR'];
  } else {
      $ipaddress = $_SERVER['REMOTE_ADDR'];
  }
    return $ipaddress;
}

$userId = 'your userId';       // polyv 提供的服务器间的通讯验证
$secretkey = 'your secretkey';     // polyv 提供的接口调用签名访问的key
$videoId = '65956867df8c717eb79136e05394122c_6';  // 视频对应vid
$ts = time() * 1000;      // 时间戳
$viewerIp = get_client_ip();  // 用户 ip
$viewerId = '12345';      // 自定义用户 id
$viewerName = 'testUser';  // 用户昵称, 若值为中文需要urlencode('张三')
$extraParams = 'HTML5';  // 自定义参数

/* 将参数 $userId、$secretkey、$videoId、$ts、$viewerIp、$viewerIp、$viewerId、$viewerName、$extraParams
    按照ASCKII升序 key + value + key + value ... +value 拼接
*/
$concated =  'extraParams'.$extraParams.'ts'.$ts.'userId'.$userId.'videoId'.$videoId.'viewerId'.$viewerId.'viewerIp'.$viewerIp.'viewerName'.$viewerName;

// 再首尾加上 secretkey
$plain = $secretkey.$concated.$secretkey;

// 取大写MD5
$sign = strtoupper(md5($plain));



// 然后将下列参数用post请求  https://hls.videocc.net/service/v1/token 获取 token
$url = 'https://hls.videocc.net/service/v1/token';
$data = array('userId' => $userId, 'videoId' => $videoId, 'ts' => $ts, 'viewerIp' => $viewerIp, 'viewerName' => $viewerName, 'extraParams' => $extraParams, 'viewerId' => $viewerId, 'sign' => $sign);

$options = array(
    'http' => array(
        'header'  => "Content-type: application/x-www-form-urlencoded\r\n",
        'method'  => 'POST',
        'content' => http_build_query($data)
    )
);
$context  = stream_context_create($options);
$result = file_get_contents($url, false, $context);

// 获取返回结果的 token, 再传入 playsafe 中播放加密视频
$token = json_decode($result)->data->token;
var player = polyvPlayer({
  wrap: '#video',
  width: 800,
  height: 533,
  vid: '02bfeb00e2ea42ec033fedfbd24c2879_0',
  playsafe: '<?php echo $token ?>'  //传入服务器生成token
});
// or
var player = polyvPlayer({
  wrap: '#video',
  width: 800,
  height: 533,
  vid: '02bfeb00e2ea42ec033fedfbd24c2879_0',
  playsafe: function(vid, next) {
    $.ajax({
      ...
      url: '自定义获取token的请求地址'
      data: {
        vid: vid
      },
      ...
    }).done(function(res) {
      next(res.playsafe);
    });
  }
});

选项-自定义广告

adSkip (boolean / 默认值: false)

  • 是否可以跳过广告
  • 设置后会出现跳过广告的按钮

adMatter (array / 默认为后台设置值)

  • 自定义广告列表,可设置多个,设置后会覆盖后台广告设置
  • 视频广告只支持MP4格式

示例:

 adMatter: [
    {
      addrurl: 'http://www.polyv.net/', //广告跳转链接
      adtype: 2,  //广告资源类型: 1 图片广告 、2 视频广告、3 swf广告(flash播放器生效)
      location: 1, //广告位置: 1 片头广告、2 暂停广告 、3 片尾广告、4 弹窗广告
      timesize: 10, //广告时长(单位:秒)
      matterurl: 'test.mp4', //广告地址
      cataid: 1, //分类ID(可选,默认为 1)
      poplocation: 1, //弹窗广告位置(1,2,3,4)
      popuptime: 45 //弹窗广告出现的时间
    }
  ]

选项-自定义片头

teaser_show (number / 默认为后台设置值)
- 是否显示片头,0 不显示, 1 显示

teaser_url (string / 默认为后台设置值)
- 片头地址(视频只支持mp4)

teaser_time (number / 默认为后台设置值,图片默认3
- 片头显示时长

teaserSkip (boolean / 默认值 false
- 是否显示跳过片头按钮

选项-统计

statistics (object / 默认值: undefined)
- 用户自定义播放统计参数

statistics: {
    session_id: 'class_1', // 播放场次标识
    param1: '1',           //自定义参数,可设置4个
    param2: '2',
    param3: '3',
    param4: '4',
  }

选项-自定义logo

logo (object / 默认值: undefined)
- 自定义logo设置,如果不设置则读取 polyv 后台的设置值
- 若设置了宽高的任何一个的话logo大小会根据据设置值显示,若不设置则最大显示120px,请注意图片大小不要过大以免影响显示效果

logo: {
  // 宽  默认 'auto'
  logo_width: 200,
  // 高  默认 'auto'
  logo_height: 'auto',
  // logo地址
  logo_url: 'test.png',
  // 位置 0,1,2,3,4 (隐藏、左上、右上、左下、右下)
  logo_pos: 2,
  // 跳转链接 (选填)
  logo_link: 'http://www.polyv.net/',
  // 透明度 (0~100)
  logo_alpha: 50,
  //logo偏移(根据左上角为原点的坐标,单位 % ,只在位置1,2生效)
  logoOffset: '40,50',
  logo_resize: true // 动态更新logo大小,默认为false, 若设置了logo宽高则不生效
}

实例属性

属性 返回值 说明
isSupportHTML5 boolean 浏览器是否支持 HTML5 播放器,若返回 true 则播放器默认打开 HTML5 播放器,否则将打开flash 播放器
HTML5 boolean / object 当前打开的是flash播放器则该属性为 false,反之为HTML5播放器的实例,该实例之后会说明
flash boolean / object 当前打开的是HTML5播放器则该属性为 false,反之返回多终端代码初始化的实例,该实例之后会说明

实例方法

player.toFlash
- 切换到 flash 播放器

player.toHTML5
- 切换到 HTML5 播放器

player.destroy
- 销毁播放器,包括HTML5和flash播放器

player.on
- 事件绑定

player.changeStatistics(session_id, param1, param2, param3, param4)
- 修改播放统计参数

player.getCurrentMode
- 返回当前播放模式('video' / 'audio')

player.setMode
- 切换播放模式,可选 'video' / 'audio',切换音频时需要有相应的音频转码

player.changeVid(object / string)
- 接口支持传入object、json格式化字符串、多个参数传入,使用如下:

const option = {
  vid: '需要切换视频的vid',
  autoplay: true,
  ts: '移动端授权ts',
  sign: '移动端授权sign',
  playsafe: '若是加密视频需重新生成',
  statistics: {}  // 和选项中statistics一样,会覆盖掉原本的统计参数
};
// 方法一
player.changeVid(option);
//方法二
player.changeVid(JSON.stringify(option));
// 方法三 该写法为flash播放器的写法,请尽量使用方法一、方法二
player.changeVid(vid, watchStartTime, autoplay, ts, sign)

另提供以下方法

j2s_getCurrentTimej2s_getDurationj2s_pauseVideoj2s_resumeVideo
j2s_stopVideochangeVidj2s_stayInVideoTimej2s_realPlayVideoTime
j2s_seekVideoj2s_setVolumechangeRepeattoggleFullscreen

  • 具体方法与flash播放器一致,具体参考播放器函数接口汇总
  • toggleFullscreen只在HTML5播放器生效,因为浏览器安全限制,flash尚不支持

播放器切换事件

HTML5Load
- flash 播放器切换到 HTML5 播放器时触发

player.on('HTML5Load', function() {
  console.log(typeof player.HTML5);  // 'object';
  console.log(player.flash);  // false
});

flashLoad
- HTML5 播放器切换到 flash 播放器时触发

播放错误事件

serverError
- 返回一些如录屏(#016)、黑白域名(#006)、授权验证失败(#012)、视频数据读取失败(#003)等错误信息

player.on('serverError', function(event, errorCode) {
  console.log(errorCode);
});

HTML5 属性

若当前播放器为 HTML5播放器,player.HTML5属性为HTML5播放器实例对象,反之为false

属性

player.HTML5.video (HTMLElement)
- HTML5播放器所创建的原生 video 元素,可按照需要自行绑定事件与设置属性等

方法

player.HTML5.play
- 播放视频

player.HTML5.pause
- 暂停视频

player.HTML5.togglePlay
- 暂停播放交替切换

player.HTML5.toggleFullscreen:
- 全屏非全屏交替切换
- 在player.HTML5.video 中可以通过绑定 fullscreen 与 exitFullscreen事件来监听全屏与退出全屏事件

player.HTML5.changeVid (object)

参数对象设置
- vid (必填): 需更换的vid,若与当前播放视频vid一样则无效
- playsafe(选填):若更换的视频为加密视频,需要传入playsafe参数,每个不同vid都需重新传入一个不同playsafe
- autoplay (boolean/ 选填): 切换视频后视频是否自动播放

player.HTML5.changeRepeat (boolean)

  • 参数truefalse ,改变hideRepeat值

flash属性

若当前播放器为 flash 播放器,player.flash属性为polyv多终端代码初始化播放器后返回对象,反之为false,* 注意,移动端中对象会存储在flash中
- 参考 多终端代码

HTML5 播放器与 flash 播放器切换说明

  1. 为了兼容不兼容HTML5播放器的浏览器,若检测到不兼容的浏览器或设置flash: true会自动打开flash播放器,比如IE10、IE9。
  2. 播放器实例有 HTML5 与 flash 两个属性,根据当前播放器类型而切换
  3. 可以设置 flashLoad 事件监听flash播放器是否加载

与flash事件兼容

目前HTML5播放器兼容了部分flash播放器事件,设置后在HTML5播放器中也会触发, 参考 flash播放器事件,事件如下:
s2j_onVideoPlays2j_onVideoPauses2j_onPlayerInitOvers2j_onPlayOver、 s2j_onPlayStarts2j_onFullScreens2j_onNormalScreens2j_onVideoSeeks2j_onReadyPlays2j_onPlayerErrors2j_volumeChange

onChangeMode(vid, currentMode, lastMode)
- 音视频切换的时触发
- vid: 视频vid
- currentMode:切换后播放模式 ('video'/'audio')
- lastMode:切换前播放模式 ('video'/'audio')

兼容性

  • pc:IE11(window 8+)或以上浏览器兼容HTML5播放器,IE10、IE9将打开flash播放器
  • 移动端: 将调用多终端代码打开播放器
  • 因用ES2015编写,暂不兼容IE8

在H5播放器中使用授权播放与跑马灯

具体参考授权播放和跑马灯
若需要在PC端h5播放器中显示跑马灯,则移动端的$array改为(callback不为空时):
$array = Array("status"=>$status,"username"=>$username,"sign"=>$sign,"msg"=>$msg,"fontSize"=>$fontSize,"fontColor"=>$fontColor,"speed"=>$speed,"filter"=>$filter,"setting"=>$setting,"alpha"=>$alpha,"filterAlpha"=>$filterAlpha,"filterColor"=>$filterColor,"blurX"=>$blurX,"blurY"=>$blurY,"tweenTime"=>$tweenTime,"interval"=>$interval,"lifeTime"=>$lifeTime,"strength"=>$strength,"show"=>$show,);

在多终端代码中使用 HTML5 播放器

页面中只需引入多终端代码,不需引入 HTML5 播放器代码,切换是会自动加载

默认打开flash

  • 参数:在 flashvars 参数加上 skin_type: 'skin_blue'ban_set_player: 'off'
  • changeH5Success: 当点击切换 HTML5 播放器时触发且只会在默认打开 flash 播放器时触发
  • 说明: 该设置会默认打开 flash 播放器,但播放器中会有切换播放器的选项
  • 设置如下:
var player = polyvObject('#video').videoPlayer({
    width: 800,
    vid: '02bfeb00e2ea42ec033fedfbd24c2879_0',
    flashvars: {
      skin_type: 'skin_blue',
      ban_set_player: 'off'
    }
});
player.on('changeH5Success', function(newPlayer) {
  player = newPlayer;  // newPlayer 是初始化 HTML5 播放器后返回对象
});

默认打开HTML5 播放器

  • 参数: forceH5 (boolean / false)
  • 说明: 设置 forceH5 参数为 true 后播放器将默认打开 HTML5 播放器(浏览器不兼容除外),若需要播放加密视频需传入 playsafe 参数
  • 设置如下
// 返回 HTML5 播放器对象
var player = polyvObject('#video').videoPlayer({
    width: 800,
    vid: '65956867dfc7794f00b20912e5ea5ecc_6',
    forceH5: true,
    // playsafe: 'token' 加密视频需传入
});

注意事项

  • 请尽量不要对播放器的样式进行修改或者对video标签进行修改
  • 尽量避免在有animation和transform等css3的元素或者子元素下初始化播放器,因为这些元素可能对导致播放器全屏样式错乱,这个属于浏览器的一个bug,请谅解
以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

播放器错误代码参考

Flash播放器错误提示

错误来源 错误类型 编号 中文 英文
后台 客户套餐过期 #001 当前视频无法播放,请向管理员反馈 The video is not available, please contact the Administrators
后台 客户套餐流量用完 #002 当前视频无法播放,请向管理员反馈 The video is not available, please contact the Administrators
后台 黑白名单不通过 #006 当前视频无法播放,请向管理员反馈 The video is not available, please contact the Administrators
后台 该视频不存在 #004 当前视频无法播放,请向管理员反馈 The video is not available, please contact the Administrators
后台 视频审核不通过 #005 当前视频无法播放,请向管理员反馈 The video is not available, please contact the Administrators
后台 视频正在审核 #009 视频暂时无法播放,请稍后刷新重试 The video is temporarily not available, please refresh later
后台 视频正在编码 #010 视频暂时无法播放,请稍后刷新重试 The video is temporarily not available, please refresh later
配置/网络 xml加载失败 #003 视频暂时无法播放,请稍后刷新重试 The video is temporarily not available, please refresh later
配置/网络 视频文件加载失败 #007 视频暂时无法播放,请稍后刷新重试 The video is temporarily not available, please refresh later
配置/网络 视频文件加载超时 #008 视频暂时无法播放,请稍后刷新重试 The video is temporarily not available, please refresh later
配置/网络 播放器皮肤加载失败 #011 视频暂时无法播放,请稍后刷新重试 The video is temporarily not available, please refresh later
配置/网络 跑马灯加载错误/失败 #012 视频暂时无法播放,请稍后刷新重试 The video is temporarily not available, please refresh later
配置/网络 授权加载错误/失败 #013 视频暂时无法播放,请稍后刷新重试 The video is temporarily not available, please refresh later
浏览器 Flash没有js权限 #014 视频无法加载,请尝试把浏览器更新至最新版本或更换浏览器,若继续提示相同错误请向管理员反馈 The video is not available, please update or change your browser. If it does not work, please contact the Administrators
浏览器 js错误 #015 视频无法加载,请尝试把浏览器更新至最新版本或更换浏览器,若继续提示相同错误请向管理员反馈 The video is not available, please update or change your browser. If it does not work, please contact the Administrators

IOS sdk错误提示

错误来源 错误类型 编号 中文 英文
后台/SDK 该码率不存在 #101 当前视频无法播放,请向管理员反馈 The video is not available, please contact the Administrators
后台/SDK 目标码率的 m3u8 无法获取,或者获取结果为空 #102 当前视频无法播放,请向管理员反馈 The video is not available, please contact the Administrators
后台/SDK 账户流量超标 #103 当前视频无法播放,请向管理员反馈 The video is not available, please contact the Administrators
后台/SDK 账户过期 #104 当前视频无法播放,请向管理员反馈 The video is not available, please contact the Administrators
后台/SDK 视频状态错误(videojson中status 字段不等于60 /61) #105 当前视频无法播放,请向管理员反馈 The video is not available, please contact the Administrators
App开发 vid 不合法(指定vid不包含userid前缀) #106 当前视频无法播放,请向管理员反馈 The video is not available, please contact the Administrators
App开发 加密秘钥长度不正确(配置SDK加密串) #107 当前视频无法播放,请向管理员反馈 The video is not available, please contact the Administrators
App开发 加密向量长度不正确(配置SDK加密串) #108 当前视频无法播放,请向管理员反馈 The video is not available, please contact the Administrators
App开发 加密串解密参数有误(配置SDK加密串) #109 当前视频无法播放,请向管理员反馈 The video is not available, please contact the Administrators
App开发 签名错误(本地服务器) #110 当前视频无法播放,请向管理员反馈 The video is not available, please contact the Administrators
App开发 下载路径为空(用户配置下载路径) #111 当前视频无法播放,请向管理员反馈 The video is not available, please contact the Administrators
本地 文件操作(移动、删除、创建目录、读取)失败 #112 当前视频无法播放,请尝试删除视频后重新下载。若问题无法解决,请向管理员反馈 The video is not available, please try to delete the video before re-download it. If it does not work, please contact the Administrators.
本地 下载任务创建失败 #113 当前视频无法播放,请尝试删除视频后重新下载。若问题无法解决,请向管理员反馈 The video is not available, please try to delete the video before re-download it. If it does not work, please contact the Administrators.
网络 网络请求错误 #114 视频暂时无法播放,请检查网络环境是否正常。若问题无法解决,请向管理员反馈 The video is temporarily not available, please try to repair the network. The video is not available, please try to delete the video before re-download it. If it does not work, please contact the Administrators.

Android sdk错误提示

错误来源 错误类型 编号 中文 英文
后台/SDK 流量超标 20004 当前视频无法播放,请向管理员反馈 The video is not available, please contact the Administrators
后台/SDK 账号过期 20005 当前视频无法播放,请向管理员反馈 The video is not available, please contact the Administrators
后台/SDK 视频开始播放错误 20008 当前视频无法播放,请向管理员反馈 The video is not available, please contact the Administrators
后台/SDK 没有权限访问视频 20009 当前视频无法播放,请向管理员反馈 The video is not available, please contact the Administrators
后台/SDK 视频状态错误 20011 当前视频无法播放,请向管理员反馈 The video is not available, please contact the Administrators
后台/SDK video取得为null 20016 当前视频无法播放,请向管理员反馈 The video is not available, please contact the Administrators
后台/SDK mp4链接数量错误 20017 当前视频无法播放,请向管理员反馈 The video is not available, please contact the Administrators
后台/SDK m3u8链接数量错误 20018 当前视频无法播放,请向管理员反馈 The video is not available, please contact the Administrators
后台/SDK 1.5倍播放地址为空 30003 当前视频无法播放,请向管理员反馈 The video is not available, please contact the Administrators
后台/SDK 1.5倍播放地址错误 30004 当前视频无法播放,请向管理员反馈 The video is not available, please contact the Administrators
后台/SDK 1.5倍播放地址错误 30005 当前视频无法播放,请向管理员反馈 The video is not available, please contact the Administrators
后台/SDK m3u8 15x链接数量错误 30006 当前视频无法播放,请向管理员反馈 The video is not available, please contact the Administrators
后台/SDK 视频加载过程中出错 30011 当前视频无法播放,请向管理员反馈 The video is not available, please contact the Administrators
后台/SDK hls url 格式错误 30013 当前视频无法播放,请向管理员反馈 The video is not available, please contact the Administrators
后台/SDK token取得为null 30015 当前视频无法播放,请向管理员反馈 The video is not available, please contact the Administrators
后台/SDK hls2 url 格式错误 30016 当前视频无法播放,请向管理员反馈 The video is not available, please contact the Administrators
App开发 没有设置用户token 20010 当前视频无法播放,请向管理员反馈 The video is not available, please contact the Administrators
App开发 vid错误 20014 当前视频无法播放,请向管理员反馈 The video is not available, please contact the Administrators
App开发 码率错误 20015 当前视频无法播放,请向管理员反馈 The video is not available, please contact the Administrators
App开发 播放视频速度为null 30001 当前视频无法播放,请向管理员反馈 The video is not available, please contact the Administrators
App开发 切换码率相同 30007 当前视频无法播放,请向管理员反馈 The video is not available, please contact the Administrators
App开发 切换播放速度相同 30008 当前视频无法播放,请向管理员反馈 The video is not available, please contact the Administrators
App开发 不能切换码率 30009 当前视频无法播放,请向管理员反馈 The video is not available, please contact the Administrators
App开发 不能切换速度 30010 当前视频无法播放,请向管理员反馈 The video is not available, please contact the Administrators
App开发 视频码率不存在 如果视频只有流畅码率,而用户输出了高清码率会提示这个错误 30014 当前视频无法播放,请向管理员反馈 The video is not available, please contact the Administrators
本地 本地视频文件错误 20007 当前视频无法播放,请尝试删除视频后重新下载。若问题无法解决,请向管理员反馈 The video is not available, please try to delete the video before re-download it. If it does not work, please contact the Administrators.
本地 没有缓存视频 30002 当前视频无法播放,请尝试删除视频后重新下载。若问题无法解决,请向管理员反馈 The video is not available, please try to delete the video before re-download it. If it does not work, please contact the Administrators.
网络 无法连接网络 20003 视频暂时无法播放,请检查网络环境是否正常。若问题无法解决,请向管理员反馈 The video is temporarily not available, please try to repair the network. The video is not available, please try to delete the video before re-download it. If it does not work, please contact the Administrators.
网络/后台 问答错误 网络问题无法加载问答数据,或者服务器问答数据错误。 30012 视频暂时无法播放,请检查网络环境是否正常。若问题无法解决,请向管理员反馈 The video is temporarily not available, please try to repair the network. The video is not available, please try to delete the video before re-download it. If it does not work, please contact the Administrators.

错误来源说明:

  • 后台:服务器处理或点播后台所导致的的情况;
  • 网络:客户端网络环境导致的情况。
  • 配置:本地配置文件导致的情况;
  • 浏览器:浏览器权限或兼容性导致的情况;
  • Flash版本:Flash更新或安装问题。
  • SDK:播放器SDK内部错误导致的的情况;
  • App开发:App集成SDK过程中导致的情况;
  • 本地:客户端本地文件或缓存导致的情况。
以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

用户自定义参数

在播放代码中,用户可以添加参数session_id,自定义为任何值(比如,表示学员信息的学员ID),最长不能超过50个英文字符。示例代码如下:

<script src='//player.polyv.net/script/polyvplayer.min.js'></script>
<div id='plv_e2e84a7383f869a0c8501b0c2f3dbdec_e'></div>
<script>
var player = polyvObject('#plv_e2e84a7383f869a0c8501b0c2f3dbdec_e').videoPlayer({
 'width':'600',
 'height':'450',
 'vid' : 'e2e84a7383f869a0c8501b0c2f3dbdec_e',
'session_id' :'TEST_POLYV'
});
</script>

当用户访问使用了以上示例播放代码的页面时,播放代码js会把session_id提交到POLYV系统的播放日志数据库中。当用户通过调用获取某一天视频日志时,就能查询到日志里面每一条记录中的session_id,如下图所示:

QQ图片20160815180751

以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

播放器函数接口汇总

供javascript调用的播放器函数接口
函数名 参数 返回 说明 代码示例
j2s_getCurrentTime 秒数 返回当前播放头的时间,例如视频时长120秒,播放头时间在20.5秒,则返回20.5;页面javascript可不断轮询此播放时间,配合后面暂停/播放/停止等函数,对播放过程实现高级的控制。 查看
j2s_pauseVideo 暂停播放当前视频 查看
j2s_resumeVideo 恢复播放当前视频 查看
j2s_stopVideo 停止播放当前视频,并显示结束画面 查看
j2s_seekVideo _second JS控制播放器SEEK功能 ,函数名:j2s_seekVideo(_second)其中参数_second 为秒数 查看
j2s_setVolume _rate JS控制播放器音量功能 ,函数名:j2s_setVolume(_rate)其中参数_rate 为0~1
changeVid vid,watchStartTime,autoPlay,ts,sign 在不刷新页面和播放器的情况下,切换到下一个视频,可应用于自定义播放列表。参数说明:vid:切换视频vid(String),watchStartTime:开始播放时间(Number),autoPlay:是否自动播放("on"/"off"),ts: web授权用(String),sign: web授权用(String) 查看
j2s_getFlowCount() 字节数 获取当前流量(单位:字节)的接口供JS调用 查看
j2s_getDuration() 秒数 获取当前视频的总时长(播放器初始化完毕才可以调用,默认为0,播放器初始化完毕事件为s2j_onPlayerInitOver) 查看
j2s_realPlayVideoTime() 秒数 正常播放过程中的观看时间,不包括广告、片头、暂停、片尾等时间。 查看
j2s_showInterAction() 控制问答播放器显示问答
j2s_hideInterAction() 控制问答播放器隐藏问答
以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

播放器函数接口示例一

演示

当前观看时间(包含视频缓冲时间)是 0 秒
当前观看时间(不包含视频缓冲时间)是 0 秒
当前播放进度是 0 秒
当前流量: 0 字节 | 0 KB
当前视频的时长是 0 秒
示例代码

点击查看播放器函数接口说明

<object id="polyvplayer02bfeb00e2ba940698c54cdf517aa9b6_0" width="708" height="490" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"><param name="movie" value="http://player.polyv.net/videos/player.swf"><param name="allowscriptaccess" value="always"><param name="wmode" value="Transparent"><param name="flashvars" value="vid=02bfeb00e2ba940698c54cdf517aa9b6_0"><param name="allowFullScreen" value="true"><embed allowfullscreen="true" allowscriptaccess="always" flashvars="vid=02bfeb00e2ba940698c54cdf517aa9b6_0" height="490" name="polyvplayer02bfeb00e2ba940698c54cdf517aa9b6_0" src="http://player.polyv.net/videos/player.swf" type="application/x-shockwave-flash" width="708" wmode="Transparent"></object><br />
 
<span id="stayInVideoTime">当前观看时间(包含视频缓冲时间)是 0 秒</span><br>
<span id="realPlayVideoTime">当前观看时间(不包含视频缓冲时间)是 0 秒</span><br>
<span id="getCurrentTime">当前播放进度是 0 秒</span><br />
<span id="flow">当前流量: 0 字节 | 0 KB</span><br />
<span id="duration">当前视频的时长是 0 秒</span><br />
 
<input type="button" onclick="resume()" value="播放"></input>
<input type="button" onclick="pause()" value="暂停"></input>
<input type="button" onclick="seek(30)" value="seek到第30秒"></input>
<input type="button" onclick="stop()" value="停止"></input>
<input type="button" onclick="nextVideo()" value="切换到下一个视频"></input><br />
 
<script type="text/javascript">
function getPlayer(movieName) {
 if (navigator.appName.indexOf("Microsoft") != -1) {
  var reObj=window[movieName];
  try
  {
   if(reObj.length>0)
   {
    return reObj[0];
   }
            else
            {
              return reObj;
            }
  }catch(e)
  {
    
  }
  return ;
 }
 else {
  return document[movieName];
 }
}
var player=getPlayer("polyvplayer02bfeb00e2ba940698c54cdf517aa9b6_0");
 
function resume()
{
  player.j2s_resumeVideo();
}
 
function pause()
{
  player.j2s_pauseVideo();
} 
 
function seek(_sec)
{
  player.j2s_seekVideo(_sec);
}
 
function stop()
{
  player.j2s_stopVideo();
}
 
function nextVideo()
{
  player.changeVid("02bfeb00e27ff92a76364b16af2f115e_0");
}
 
function render()
{
if(player != undefined && player.j2s_stayInVideoTime != undefined && player.j2s_realPlayVideoTime != undefined && player.j2s_getCurrentTime != undefined && player.j2s_getDuration != undefined && player.j2s_getFlowCount != undefined){
  var sec1=player.j2s_stayInVideoTime();
  var sec2=player.j2s_getCurrentTime();
  var sec3=player.j2s_getDuration();
  var sec4=player.j2s_realPlayVideoTime();
  var byte=player.j2s_getFlowCount();
  document.getElementById("stayInVideoTime").innerHTML="当前观看时间(包含视频缓冲时间)是 <span style='color:#ff0000;'>"+sec1+"</span> 秒";
  document.getElementById("realPlayVideoTime").innerHTML="当前观看时间(不包含视频缓冲时间)是 <span style='color:#ff0000;'>"+sec4+"</span> 秒";
  document.getElementById("getCurrentTime").innerHTML="当前播放进度是 <span style='color:#ff0000;'>"+sec2+"</span> 秒";
  document.getElementById("duration").innerHTML="当前视频的时长是 <span style='color:#ff0000;'>"+sec3+"</span> 秒";
  document.getElementById("flow").innerHTML="当前流量: <span style='color:#ff0000;'>"+byte+"</span> 字节 | <span style='color:#ff0000;'>"+byte/1024+"</span> KB";
}
}
var interval=setInterval("render()",500);
</script>
以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

播放器函数接口示例二

演示


当前观看时间(包含视频缓冲时间)是 0 秒
当前观看时间(不包含视频缓冲时间)是 0 秒
当前播放进度是 0 秒
当前流量: 0 字节 | 0 KB
当前视频的时长是 0 秒

示例代码
点击查看播放器函数接口说明


<span id="stayInVideoTime">当前观看时间(包含视频缓冲时间)是 0 秒</span><br> <span id="realPlayVideoTime">当前观看时间(不包含视频缓冲时间)是 0 秒</span><br> <span id="getCurrentTime">当前播放进度是 0 秒</span><br /> <span id="flow">当前流量: 0 字节 | 0 KB</span><br /> <span id="duration">当前视频的时长是 0 秒</span><br /> <input type="button" onclick="resume()" value="播放"></input> <input type="button" onclick="pause()" value="暂停"></input> <input type="button" onclick="seek(30)" value="seek到第30秒"></input> <input type="button" onclick="stop()" value="停止"></input> <input type="button" onclick="nextVideo()" value="切换到下一个视频"></input><br /> <script type="text/javascript"> function getPlayer(movieName) { if (navigator.appName.indexOf("Microsoft") != -1) { var reObj=window[movieName]; try { if(reObj.length>0) { return reObj[0]; } else { return reObj; } }catch(e) { } return ; } else { return document[movieName]; } } function resume() { player.j2s_resumeVideo(); } function pause() { player.j2s_pauseVideo(); } function seek(_sec) { player.j2s_seekVideo(_sec); } function stop() { player.j2s_stopVideo(); } function nextVideo() { player.changeVid("02bfeb00e27ff92a76364b16af2f115e_0"); } function render() { if(player != undefined && player.j2s_stayInVideoTime != undefined && player.j2s_realPlayVideoTime != undefined && player.j2s_getCurrentTime != undefined && player.j2s_getDuration != undefined && player.j2s_getFlowCount != undefined){ var sec1=player.j2s_stayInVideoTime(); var sec2=player.j2s_getCurrentTime(); var sec3=player.j2s_getDuration(); var sec4=player.j2s_realPlayVideoTime(); var byte=player.j2s_getFlowCount(); document.getElementById("stayInVideoTime").innerHTML="当前观看时间(包含视频缓冲时间)是 <span style='color:#ff0000;'>"+sec1+"</span> 秒"; document.getElementById("realPlayVideoTime").innerHTML="当前观看时间(不包含视频缓冲时间)是 <span style='color:#ff0000;'>"+sec4+"</span> 秒"; document.getElementById("getCurrentTime").innerHTML="当前播放进度是 <span style='color:#ff0000;'>"+sec2+"</span> 秒"; document.getElementById("duration").innerHTML="当前视频的时长是 <span style='color:#ff0000;'>"+sec3+"</span> 秒"; document.getElementById("flow").innerHTML="当前流量: <span style='color:#ff0000;'>"+byte+"</span> 字节 | <span style='color:#ff0000;'>"+byte/1024+"</span> KB"; } } var interval=setInterval("render()",500); </script>
以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

播放器flashvars参数

参数名 取值 说明 代码示例
loading_bg_img url 播放器一开始LOADING时的大背景图URL 查看
df 1-3 视频默认播放的清晰度,取值范围1-3  ;  如:df=1 流畅,df=2高清,df=3超清 查看
teaser_time 视频片头图片显示多少秒后消失,如: teaser_time=2.5 查看
watchStartTime 视频默认从第几秒开始播放 , 如 watchStartTime=30.5 查看
watchEndTime 视频播放结束的秒数,如整段视频时长120秒,watchEndTime=60,则视频在播放到60秒时会结束播放,并且只能在60秒内进行seek拖动播放 查看
ban_seek_by_limit_time on/off 用于限制用户只能以自然播放的形式来观看视频,不能通过seek拖拉来快速观看视频。
一般是配合“watchStartTime”来使用,默认值为off(如果没有设置该参数,则watchStartTime默认是从0秒开始播放),当设定为ban_seek_by_limit_time =on后,并设定了watchStartTime=xx秒,则播放过程中,只能在watchStartTime范围seek拖动视频,或自然播放过程中,播放头时间超过watchStartTime后,可在播放头时间内seek拖动视频
查看
start 截取视频的一部分作为一个独立的视频,如原视频时长60秒,设定start=20后,则视频显示为40秒,并且从原视频的第20秒开始播放。
通常配合end参数一起使用。
查看
end 截取视频的一部分作为一个独立的视频,如原视频时长60秒,设定start=20,end=50后,则视频显示为30秒,并且从原视频的第20秒开始播放,到原视频的50秒结束播放。 查看
autoplay string 如果当前是第一个播放的视频,用该参数来控制是否自动播放,0表示关闭自动播放,1表示开启自动播放。切换后的视频不受此参数控制 查看
setScreen string 设置视频默认播放的屏幕比例,取值范围
1.“100”:原始
2.“4_3”:4:3
3.“16_9”:16:9
4.“fill”:铺满
查看
setVolumeM Number 视频声音增益
1为原视频音量大小,不变
1.5为原视频音量1.5倍
查看
volume Number 初始视频音量
0为静音
1为原视频音量大小
is_auto_replay on/off 自动循环播放当前视频,默认值为off。注:在播放列表里会忽略本参数。 查看
ban_ad_time on/off on则表示不显示广告倒计时 查看
ban_ui on/off 不显示所有控制栏,右侧栏等按钮,只有播放画面和Loading,设为on为不显示 查看
ban_control on/off 禁止播放器上所有按钮的功能 查看
list_id id 在播放器内显示播放列表
is_play_once on/off 只允许观看一次,播放结束后,返回封面并隐藏控制栏,禁止所有操作
video_bg_color 十六进制 为了让视频背景与网页背景融合,可以用户自定义视频背景颜色,如:ccff00
ban_history_time on/off on表示不记录当前的播放时间,并且不续播
history_video_duration int类型,取正整数,单位为分钟 表示视频总时长超过多少分钟时,flash播放器会记录历史播放进度,下次播放时自动续播,默认为5分钟
ban_skin_big_play_btn on/off 对播放器皮肤的特别定制,可以去掉控制栏的大播放按钮
ban_bar_keep_play_btn on/off 去掉“现代”播放器皮肤的控制栏,只保留居中的大播放按钮
interaction_data string 修改教育答题提交到后台的地址,如http://yoursite.com/getexam
logo_url string logo图片地址,如http://www.polyv.net/images/newnavbar/logo.png
logo_alpha Number logo透明度,取值是0~1
logo_link string 点击logo后跳转链接,如http://my.polyv.net
skin_type string 当后台预览播放器,设定了一个预览用的皮肤类型,重新加载UXML时,会忽略掉UXML里设定的皮肤类型。皮肤类型选择 如:"skin_blue"
logo_pos Number logo显示位置,1:左上角;2:右上角;3:左下角;4:右下角
ban_preview_video on/off 禁止显示缩略图
barHideTime Number 皮肤自定义隐藏时间
ban_record_interaction_right_answer on/off 为on时不把回答正确或可以跳过的题目做记录,下次播放还会继续弹出
注:以上对时间点的设置后,根据视频文件实际关键帧所在时间点,实际显示的时间可能有几秒的偏差. 如 设定watchStartTime=20 ,而离20秒最近的关键帧位置在18秒,则实际播放时,从18秒开始播放.

HTML代码和多终端代码添加多个flashvars参数示例:

HTML代码(多个flashvars参数用符合“&”连接):

<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="600" height="416" id="e2e84a738396503c313915c17b5b08ac_e">
<PARAM NAME=movie VALUE="http://player.polyv.net/videos/player.swf">
<param name="allowscriptaccess" value="always">
<param name="wmode" value="Transparent">
<param name="flashvars" value="vid=e2e84a738396503c313915c17b5b08ac_e&watchStartTime=5&watchEndTime=20" /><param name="allowFullScreen" value="true" />
<EMBED src="http://player.polyv.net/videos/player.swf" width="600" height="416"  TYPE="application/x-shockwave-flash" allowscriptaccess="always" wmode="Transparent" name="e2e84a738396503c313915c17b5b08ac_e" allowFullScreen="true" flashvars="vid=e2e84a738396503c313915c17b5b08ac_e&watchStartTime=5&watchEndTime=20"/></EMBED>
</OBJECT>

多终端代码(多个flashvars参数用{}括起来,格式为{"aa":"bb","cc":"dd"}):

<script src='//player.polyv.net/script/polyvplayer.min.js'></script>
<div id='plv_e2e84a7383891b0f03445b0f683d0b18_e'></div>
<script>
var player = polyvObject('#plv_e2e84a7383891b0f03445b0f683d0b18_e').videoPlayer({
    'width':'600',
    'height':'416',
    'vid' : 'e2e84a7383891b0f03445b0f683d0b18_e',
    'flashvars':{"watchStartTime":"5","watchEndTime":"20"}
});
</script>
以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

播放器flashvars参数示例一

点击查看播放器flashvars参数说明

代码示例 (注:flashVars应在 以及 标签同时设定)

<object id="polyvplayerd81a899efa04df410e7adcbebeb064b1_d" width="680" height="422" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000">
<PARAM NAME=movie VALUE="http://player.polyv.net/videos/player.swf">
<param name="allowscriptaccess" value="always">
<param name="wmode" value="Transparent"><param name="flashvars" value="vid=d81a899efa04df410e7adcbebeb064b1_d&autoplay=true&watchStartTime=30&watchEndTime=60&df=2&ban_seek_by_limit_time=on&is_auto_replay=on&ban_ad_time=on&loading_bg_img=http://www.polyv.net/images/bg-bg.jpg" />
<param name="allowFullScreen" value="true" />
<EMBED src="http://player.polyv.net/videos/player.swf" width="680" height="422"  TYPE="application/x-shockwave-flash" allowscriptaccess="always" wmode="Transparent" name="polyvplayerd81a899efa04df410e7adcbebeb064b1_d" allowFullScreen="true" flashvars="vid=d81a899efa04df410e7adcbebeb064b1_d&autoplay=true&watchStartTime=30&watchEndTime=180&df=2&ban_seek_by_limit_time=on&is_auto_replay=on&ban_ad_time=on&loading_bg_img=http://www.polyv.net/images/bg-bg.jpg"/></EMBED>
</object>
以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...