批量获取答题日志

接口URL

http://api.polyv.net/v2/video/{userid}/video-exam-log

接口说明

根据指定vid和时间区间查询该时间区域内对应视频下的问答日志,默认每页显示20条记录

支持格式

JSON

请求方式

GET

请求数限制

TRUE

请求参数

参数名 必选 类型及范围 说明
userid true string POLYV用户ID
ptime true string 当前时间的毫秒级时间戳(13位),3分钟内有效
sign true string 签名,为40位大写的SHA1值
vids true string 对应视频的vid,如果是多个视频,将每个vid用英文逗号隔开
pageNum false string 当前页数,默认为1
start false string 查询的开始日期,格式 YYYY-MM-DD
end false string 查询的结束日期,格式 YYYY-MM-DD

签名规则

将所有非空的请求参数按照参数名字典序排列,连接参数名与参数值,并在尾部加上secretkey,生成40位大写SHA1值,作为sign。 以下是示例过程:

1、请求参数为

"vids" = "vid1,vid2"
"start" = "2012-02-03"
"end" = "2012-09-05"
"pageNum" = "1"
"ptime" = "1493370776000"

2、将请求参数按照参数名字典顺序排列

"end" = "2012-09-05"
"pageNum" = "1"
"ptime" = "1493370776000"
"start" = "2012-02-03"
"vids" = "vid1,vid2"

3、连接字符串
连接参数名与参数值,并在尾部加上secretkey(secretkey的值为3OmoLbTlHu),如下:

end=2012-09-05&pageNum=1&ptime=1522809252890&start=2012-02-03&vids=vid1,vid23OmoLbTlHu

4、生成签名sign

C6B9BBCF53DCD14F503795A952DCC0ECAFC1AACA

返回正确结果JSON示例

{
  "code": 200,
  "status": "success",
  "message": "success",
  "data": [
    {data: [
        {
        logid: 27595105,
        examId: "161d7dda0e4",
        userid: "8205ac89d3",
        videoPoolId: "8205ac89d31c8c74e462548a2edd7dff_8",
        question: "test(2)",
        answer: "["1"]",
        isCorrect: 0,
        playId: "1519745038760X1487381",
        ipAddress: "61.144.145.7",
        province: "广东省",
        isp: "电信",
        operatingSystem: "Windows 7",
        browser: "Chrome",
        dateAdded: 1519745103000
        }
    ]

返回错误结果JSON示例

{
  "code": 400,
  "status": "error",
  "message": "ptime is too old.",
  "data": ""
}

字段说明

字段 说明
code 返回码
status 返回状态
message 返回信息
data 分类下的视频大小
logid 此条日志的ID
examId 日志所属的问答的ID
userId 用户ID
videoPoolId 问答所属的视频ID
question 问答标题
answer 问答的正确答案
isCorrect 是否回答正确
playerId 播放器ID
ipAddress IP地址
province 省份
isp ISP运营商
operatingSystem 操作系统
browser 浏览器
dateAdded 回答该问题的日期(时间戳形式)

php请求示例

<?php
$userid="efbb4ae8ac";
$vids="8205ac89d31c8c74e462548a2edd7dff_8";//查询月份,格式为yyyyMM
$ptime = time()*1000;
$pageNum=1;
$start="2012-02-01";
$end="2013-03-01";
$secrectKey = "hbjCVBhnth";
$sign=strtoupper(sha1("end=$end&pageNum=$pageNum&ptime=$ptime&start=$start&vids=$vids".$secrectKey));
$url="http://api.polyv.net/v2/video/$userid/video-exam-log?end=$end&ptime=$ptime&sign=$sign&pageNum=$pageNum&start=$start&vids=$vids";
$ch=curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
$output = curl_exec($ch);
curl_close($ch);
print_r($output);
?>

响应代码与响应信息对应

code message 说明
400 ptime is illegal. 时间戳格式问题,或者时间戳超过当前时间3分钟
400 请先选择目标视频. vids为空
400 sign can not be empty. 加密串为空
400 ptime is too old. 时间戳过期(3分钟过期)
400 the sign is not right. 加密串错误
400 日期格式错误. start或end格式错误
500 查询出错. 后台发生错误异常
200 success 查询成功
以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

WebView常见问题

一、简介

  目前部分网页使用WebView控件来播放Polyv点播视频或直播视频时,会产生以下问题,在此提供demo供参考方便快速解决问题。

   安卓demo下载         iOS demo下载

  安卓webview demo描述
 - demo中实现了点击全屏按钮功能(ps:demo中虽然实现了全屏,但是从竖屏切换到横屏全屏,或者从横屏切换到竖屏全屏,需要开发者自己实现)

  IOS webview demo描述
 - demo中分别演示使用UIWebview、WKWebview

二、FAQ

1. webview 引用直播观看页打开白屏

不可以随意劫持Polyv请求的cookie信息,可能导致播放页面无法正常跳转,出现白屏现象。

2. 播放器区域白屏

由于运营商劫持的可能性,建议引用https的页面地址解决。

3. iOS建议使用 WKWebView

视频在h5页面内播放属性是 inline playback, UIWebView 默认开,WKWebView 默认关。
UIWebView 在 iOS 11.3 上设置 inline playback 无效,iOS 11.0.3 上可以,所以不建议继续使用 UIWebView。

苹果官方建议:
从iOS 8.0和OS X 10.10开始,使用WKWebView将Web内容添加到您的应用程序。不要使用UIWebView或WebView。
Starting in iOS 8.0 and OS X 10.10, use WKWebView to add web content to your app. Do not use UIWebView or WebView.

4. ios配置

iOS 需要以下配置,设置 info.plist NSAppTransportSecurity 字段,允许非HTTPS连接访问。

加入 NSAllowsArbitraryLoadsInWebContent 键,允许任意web页面加载,或设置 NSAllowsArbitraryLoadsYES 来禁用ATS。

测试发现:使用NSAllowsArbitraryLoadsInWebContent在 iOS 10.3 上视频可能无法播放,所以建议直接关闭ATS。

    <key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
    </dict>

5.Android 虚拟按键适配动态调整布局

如下图华为mate8机型为例,部分webview页面底部内容被虚拟按键遮挡问题,需要处理Android调整webview适配底部返回键等虚拟键盘。

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

PlaySafe®视频版权保护体系(视频)

PlaySafe®视频版权保护体系

保利威视PlaySafe®视频版权保护体系,防下载,防盗链,防录屏,防篡改,确保在线视频版权安全。
1、防下载
PlaySafe®采用分布式编码技术,将视频物理切片,每一片视频采用不同的加密算法,结合POLYV独立研制的密码本,对关键数据进行混淆。
这样,经过加密的视频,即使被下载下来,也无法播放,确保全终端视频安全。
2、防盗链
采用业界领先的OVP防盗链技术,设置视频只允许某些域名下才能正常播放,其他域名不能播放。如果被盗链,打开视频的时候就会显示:“该站点未被授权播放该视频”。
3、防录屏
常见的录屏方式有三种:浏览器录制、桌面录制、摄像机录制。
针对以上的录屏方式,保利威视推出浏览器防录屏扫描技术,跑马灯播放器、视频水印、问答播放器四大关键技术,有效防止非法录屏。
4、防篡改
传输链路支持ATS/HTTPS加密协议。从服务器端到分发端,从分发端到观看端,均满足数据安全要求。避免视频在传输过程中被截取或被篡改。
除此之外,优化Apple HLS Encryption 视频保护机制,移动端也一样固若金汤。

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

H5播放器倍速播放(视频)

H5播放器倍速播放

1.倍速功能可以让视频加速或者减速播放;
2.在PC端,HTML5播放器能轻松实现倍速播放功能,您可以将视频的播放速度设定为0.5倍,1倍(正常速),1.2倍,1.5倍,2倍。移动端要使用倍速功能,则是通过集成SDK来实现;
3.H5播放器的使用方法有两种,第一种,是直接通过一段JS代码实现;第二种是通过在点播后台,视频设置里直接勾选优先使用H5播放器,然后使用多终端代码;
4.如果是加密视频,则需要加上'playsafe':token 参数,否则会出现点击播放没有反应的情况;
5.目前H5播放器需要IE11或以上的浏览器才能完美兼容。

更多H5播放器帮助请点击帮助文档:http://dev.polyv.net/?p=7377

 

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

视频合并功能(视频)

视频说明

1.使用视频合并功能,可以把多个不同的视频,合并成一个新的视频;
2.选择需要进行合并的视频,然后点击视频剪辑,在下拉菜单里选择视频合并;
3.目前视频合并功能只支持最多三个视频的合并;
4.视频的合并顺序是由上到下进行合并的,我们可以通过拖拽视频来改变合并的顺序;
5.可以填写新的视频名称,并选择分类,选择分类后,如果进行了分类设置,那么分类设置也会应用到新合并的视频(例如设置视频加密、水印、课件优化等)。

 

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

点播数据统计介绍(视频)

数据统计

点播数据统计,可以对账号信息、用户观看行为、用户情况进行统计分析,为您提供全方位的营销数据支持。
账号信息:可以详细查询账号空间和流量的使用情况,数据查询详细到每一天。
视频功能列表:通过实时数据、播放量、播放排行榜、观看热点、观看日志等进行统计分析,可以统计实时在线的人数、分析用户最关注的视频,关注点在哪个时间段等。
观众栏:可以查看PC端和移动端的观看人数、观众所在的地理位置分布、使用的终端环境等。
最重要的是,这些数据都有API接口,可以直接加入您自己的用户系统中!

 

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

点播快速入门

您只需要花几分钟的时间,就能快速掌握POLYV点播,迅速实现视频的上传、管理和发布,还等什么,赶紧来体验一下吧。

云点播快速入门

时长:1:56

视频的上传与发布

时长:1:29

视频分类管理

时长:2:18

点播进阶教程

您现在可以观看我们精心准备的进阶视频教程了,通过学习,您会发现点播视频可以更加安全,可以更加有趣。
以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

自定义音频播放器

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...

提交视频裁剪任务

接口URL

http://api.polyv.net/v2/video/{userid}/clip

接口说明

1、提交视频裁剪的任务
2、{userid}为用户ID

支持格式

JSON

请求方式

POST

请求参数

参数名 必选 类型及范围 说明
vid true string 视频ID
ptime true string 当前13位毫秒级时间戳,3分钟内有效
sign true string 签名,40位大写的sha1值
title true string 裁剪后的视频名称
timeFrame true string json格式的特定时间段,格式为[{"start":1,"end":6},{"start":10,"end":16}]. 时间段数量不能超过5个,每个片段开始时间不能大于结束时间,开始与结束时间间隔需要超过或者等于5秒,结束时间不能超过视频的播放时长

返回结果

{
  "code": 200,
  "status": "success",
  "message": "success",
  "data": ""
}

失败返回json(不带jsonp)

{
    code: 400,
    status: "error",
    message: "ptime is too old.",
    data: ""
}

响应说明

错误代码 message 说明
400 sign can not be empty. 加密串为空
400 ptime is too old. 时间戳过期
400 ptime is illegal. 时间戳参数格式不对或者超过当前时间3分钟
400 Could not find user by userid. userid不存在
400 the sign is not right. 加密串不正确
410 vid is blank. vid为空
411 timeFrame is blank. 时间段为空
412 vid doesn't exist. vid不存在
413 illegal timeFrames. timeframe的json格式有问题
414 timeFrames's size exceed 5. timeFrame时间段超过5段
415 illegal timeFrames. timeFrame的结束时间小于开始时间
416 illegal timeFrames. timeFrame时间段长度小于5秒
417 illegal timeFrames. timeFrame的结束时间超过视频的时长
418/419 inital clip task filed. 初始化任务失败,需要查看后台日志原因
500 save clip task failed. 后台程序抛异常
200 success 提交成功

PHP请求示例

<?php
header("Content-type: text/html; charset=utf-8");
$userid="3828390191";
$title="test";
$timeFrame="[{\"end\":12,\"start\":5},{\"end\":35,\"start\":20},{\"end\":82,\"start\":71},{\"end\":195,\"start\":111},{\"end\":236,\"start\":215}]";
$ptime=time()*1000;//13位
$vid="382839019131be68715e9455f8d0971a_3";
$secretkey="tIQp4ATe9Z";
$str="ptime=".$ptime."&timeFrame=".$timeFrame."&title=".$title."&vid=".$vid.$secretkey;
//echo $str.'';
$hash=strtoupper(sha1($str));
//echo $hash.'';
$url="http://api.polyv.net/v2/video/{$userid}/clip";
$post_data = array (
    "timeFrame" => $timeFrame,
    "title" => $title,
    "ptime" => $ptime,
    "vid" => $vid,
    "sign" => $hash,
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// post数据
curl_setopt($ch, CURLOPT_POST, 1);
// post的变量
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
$output = curl_exec($ch);
curl_close($ch);
//打印获得的数据
print_r($output);
?>

签名规则:

将非空的请求参数按照参数名字典顺序排列,连接参数名与参数值,并在尾部加上secretkey,生成40位大写SHA1值,作为sign。 以下是示例过程:

1、请求参数为

ptime = "1492591990000"
vid = "382839019131be68715e9455f8d0971a_3"
format = "json"

2、将请求参数按照参数名字典顺序排列

format = "json"
ptime = "1492591990000"
vid = "382839019131be68715e9455f8d0971a_3"

3、连接字符串
连接参数名与参数值,并在尾部加上secretkey(secretkey的值为tIQp4ATe9Z),如下:

format=json&ptime=1492591990000&vid=382839019131be68715e9455f8d0971a_3tIQp4ATe9Z

4、生成签名sign

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

查询视频播放量统计数据接口

接口URL

http://api.polyv.net/v2/videoview/{userid}

接口说明

查询视频播放量统计数据接口

支持格式

JSON

请求方式

GET

请求参数

参数名 必选 类型及范围 说明
vid true string 视频ID
userid true string 用户id(在url中使用,请求的时候不需要提交)
ptime true string 当前13位毫秒级时间戳,3分钟内有效
sign true string 签名,40位大写的sha1值
dr false string 时间段,具体值为以下几个:today(今天),yesterday(昨天),this_week(本周),last_week(上周),7days(最近7天),this_month(本月),last_month(上个月),this_year(今年),last_year(去年),默认值为7days
period false string 显示周期,具体为以下几个值:daily(按日显示),weekly(按周显示),monthly(按月显示)。默认值为daily。period的值受限于dr的值,当dr的值为today,yesterday,this_week,last_week,7days时,period只能为daily,当dr的值为this_month,last_month时,period只能为daily或者weekly

返回结果

{
  "code": 200,
  "status": "success",
  "message": "success",
  "data": [
    {
      "currentTime": "2018-02-23",
      "pcVideoView": 0,
      "mobileVideoView": 0
    },
    {
      "currentTime": "2018-02-24",
      "pcVideoView": 0,
      "mobileVideoView": 0
    },
    {
      "currentTime": "2018-02-25",
      "pcVideoView": 23,
      "mobileVideoView": 0
    },
    {
      "currentTime": "2018-02-26",
      "pcVideoView": 63,
      "mobileVideoView": 2
    },
    {
      "currentTime": "2018-02-27",
      "pcVideoView": 11,
      "mobileVideoView": 0
    },
    {
      "currentTime": "2018-02-28",
      "pcVideoView": 6,
      "mobileVideoView": 0
    },
    {
      "currentTime": "2018-03-01",
      "pcVideoView": 0,
      "mobileVideoView": 0
    }
  ]
}

失败返回json(不带jsonp)

{
  "code": 400,
  "status": "error",
  "message": "ptime is too old.",
  "data": ""
}

字段描述

字段名称 描述
currentTime 日期
pcVideoView pc端播放量
mobileVideoView 移动端播放量

响应说明

错误代码 message 说明
400 sign can not be empty. 加密串为空
400 ptime is too old. 时间戳过期
400 ptime is illegal. 时间戳参数格式不对或者超过当前时间3分钟
400 Could not find user by userid. userid不存在
400 the sign is not right. 加密串不正确
401 illegal vid. vid格式不正确,正确vid格式前面一段是userid
402 illegal period. period的值非法,请看请求参数里period的限制内容
500 query failed. 后台程序抛异常
200 success 提交成功

PHP请求示例

<?php
header("Content-type: text/html; charset=utf-8");
$userid="3828390191";
$dr="7days";
$period="daily";
$ptime=time()*1000;//13位
$vid="382839019131be68715e9455f8d0971a_3";
$secretkey="tIQp4ATe9Z";
//$jsonp="a";
if(empty($jsonp)){
    $str="dr=".$dr."&period=".$period."&ptime=".$ptime."&vid=".$vid.$secretkey;
}else{
    $str="dr=".$dr."&jsonp=".$jsonp."&period=".$period."&ptime=".$ptime."&vid=".$vid.$secretkey;
}
echo $str.'';
$hash=strtoupper(sha1($str));
echo $hash.'';
$url="http://api.polyv.net/v2/videoview/$userid?vid=$vid&ptime=$ptime&sign=$hash&dr=$dr&period=$period";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$output = curl_exec($ch);
curl_close($ch);
//打印获得的数据
print_r($output);
?>

签名规则:

将非空的请求参数按照参数名字典顺序排列,连接参数名与参数值,并在尾部加上secretkey,生成40位大写SHA1值,作为sign。 以下是示例过程:

1、请求参数为

ptime = "1492591990000"
vid = "382839019131be68715e9455f8d0971a_3"
format = "json"

2、将请求参数按照参数名字典顺序排列

format = "json"
ptime = "1492591990000"
vid = "382839019131be68715e9455f8d0971a_3"

3、连接字符串
连接参数名与参数值,并在尾部加上secretkey(secretkey的值为tIQp4ATe9Z),如下:

format=json&ptime=1492591990000&vid=382839019131be68715e9455f8d0971a_3tIQp4ATe9Z

4、生成签名sign

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