视频专辑使用教程(视频)

视频说明

保利威推出视频专辑功能,无需开发,简单几步即可将一系列点播视频整合成一个页面播放。可以用于系列专题课程、产品展示、操作教程等场景。

下面,我们来看下具体怎么操作:
第一步:新建专辑
登陆官网后台,打开视频列表,在左面菜单栏可以看到“视频专辑”,我们打开它,然后点击“新增专辑”,输入专辑名称确定即可。

第二步:添加视频内容
在添加视频之前,需要对视频内容进行分组,点击“创建分组”,输入分组名称,然后点击“添加视频”,根据自己的需求点击右边的加号添加视频,再点击右上角“添加”完成视频添加。如果需要添加其他分组视频,同样的操作方式即可。

有几点要注意:
1.需要先创建分组,再添加视频;
2.分组和视频都可通过鼠标拖拽方式进行排序;
3.基于安全性考虑,不支持添加加密视频。

第三步:展示页外观设置
点击外观设置,左边区域是设置项。右边区域是预览区。
首先设置封面,封面类型可以选择图片或者视频。这里以图片形式展示为例,选择图片类型,点击上传,选择上传的一张图片点击打开即可。

有几点要需要注意:
1.图片尺寸不能超过1920*1080,图片大小不能超过 2M。
2.支持 jpg、jpeg、png、gif 格式。
3.上传多张图片时,将以轮播的方式呈现,最多可上传6张图片。

在下列选项中分别填写好专辑标题、专辑描述、按钮文字,然后选择主题颜色,点击保存就可以完成外观设置。

第四步:分享观看链接
我们回到视频专辑首页,可以在专辑列表看到我们新建好的专辑,点击“分享”,可以获得一个链接地址和二维码。可以使用网页端进行观看或者手机扫描二维码观看。

好啦,今天的体验就到这里,如果您在使用过程有任何疑问,欢迎联系保利威服务团队

 

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

Java 上传SDK使用文档

Polyv Java 上传 SDK 为您提供服务端上传媒体文件到保利威云点播平台的开发工具包。

功能

  • 快捷上传多种格式的媒体文件。
  • 支持上传时的各种设置,如文件标题、描述、标签、上传目录、是否开启课件优化处理等。
  • 采用分片并发上传的方式,支持断点续传

使用方法

前提条件

  1. 使用本 SDK 前,要先开通保利威云点播服务。如果您还不了解该服务,请登录产品主页查看,详见:云点播
  2. 获取userId、secretKey 等相关信息用于用户身份校验,您可以在「云点播管理后台 -> 设置 -> API接口」页面中找到相关信息,点击这里登录后台

环境要求

Java版本1.8.0及以上

集成 SDK

  1. 下载Java上传SDK开发包(包含示例代码和所需jar包),点击这里下载
  2. 将解压后的jar文件拷贝至您的项目中;

  3. 使用IDE开发时引用jar包的方法,以Eclipse和IntelliJ IDEA为例说明如下:

3.1 在Eclipse中选择您的工程,右击 -> Properties -> Java Build Path -> Add JARs;

3.2 在IntelliJ IDEA中打开您的工程,File -> Project Structure -> Modules -> 右侧Dependencies -> + -> JARs or directories

API参考

1. 入口类 PolyvUploadClient.java

1.1 构造方法

PolyvUploadClient(String userId, String secretKey, int partitionSize, String checkpoint, int threadNum)

参数解释:

参数 说明
userId 保利威账号ID
secretKey 保利威账号的secretKey
partitionSize 可指定分片上传时每个分片的大小,单位:字节,默认为1MB,取值范围为100KB~5GB
checkpoint 使用断点续传时,写入续传位置的本地磁盘路径,需保证文件路径已经创建好
threadNum 可指定分片上传时的并发线程数,默认为1。注:该配置会占用服务器CPU资源,需根据服务器情况指定。

1.2 上传方法

uploadVideoParts(VideoInfo videoInfo)

该方法返回视频ID。

2. 视频实体类 VideoInfo.java

视频信息字段:

名称 类型 必填 描述
fileLocation String Y 视频文件在本地的绝对路径,必须包含文件后缀
title String N 视频标题,为空时会取视频文件名作为标题(不含后缀)
fileSize Long N 文件大小
describ String N 视频简介
tag String N 视频标签,多个用,分隔
cataId Long N 视频分类ID,默认值:1,表示上传到默认分类
luping Int N 是否进行课件优化处理,默认值:0
keepsource Int N 是否保持源文件播放,默认:0
videoPoolId String N 视频ID,当上传中断续传时,需要指定vid来恢复上传
state String N 自定义拓展信息,如果提交了该字段,会在上传完成的事件回调中透传返回。

示例代码

import net.polyv.bean.vo.VideoInfo;
import net.polyv.callback.UploadCallBack;
import net.polyv.entry.PolyvUploadClient;
import net.polyv.enumeration.UploadErrorMsg;

public class PolyvUploadVideoDemo {
    private static final String userId = ""; //保利威账号的userId(必填)
    private static final String secretKey = ""; //账号的secretKey(必填)

    public static void main(String[] args) {
        int partitionSize = 1*1024 * 1024; //可指定分片上传时每个分片的大小,默认为1M
        int threadNum = 1; //可指定分片上传时的并发线程数,默认为1,(注:该配置会占用服务器CPU资源,需根据服务器情况指定)
        String checkpoint = "/Users/TestUser/Desktop"; //断点续传的上传位置写入路径
        PolyvUploadClient client = new PolyvUploadClient(userId, secretKey, partitionSize, checkpoint, threadNum); //初始化PolyvUploadClient实例

        VideoInfo videoInfo = new VideoInfo();
        videoInfo.setFileLocation("/Users/TestUser/Desktop/testVideo.mp4"); //视频文件在服务器上的绝对路径,必须包含拓展名(必填)
        videoInfo.setTitle("测试视频"); // 视频标题(必填)
        videoInfo.setCataId(1L); // 上传的分类目录,默认值:1,表示上传到默认分类(可选)
        videoInfo.setDescrib("视频描述"); // 视频描述(可选)
        videoInfo.setTag("视频标签"); // 视频标签(可选)
        videoInfo.setLuping(0); //是否进行课件优化处理,默认值:0(可选)
        videoInfo.setKeepSource(0); //是否保持源文件播放,默认:0(可选)
        videoInfo.setState("自定义拓展信息"); //如果提交了该字段,会在上传完成的事件回调中透传返回

        System.out.println("vid=" + client.uploadVideoParts(videoInfo, new UploadCallBack() {
            @Override
            public void start(String s) {
                System.out.println("start=" + s);
            }
            @Override
            public void process(String s, long l, long l1) {
                System.out.println("process=" + s + ",uploaded=" + l + ", total=" + l1);
            }
            @Override
            public void complete(String s) {
                System.out.println("complete=" + s);
            }
            @Override
            public void success(String s) {
                System.out.println("success=" + s);
            }

            @Override
            public void error(String s, UploadErrorMsg uploadErrorMsg) {
                System.out.println("error=" + s + ", message=" + uploadErrorMsg.getMessage());
            }
        }, true));
        // 当上传中断,重新恢复的时候,可以指定vid来恢复上传 videoInfo.setVideoPoolId("xxxxxxxxxxx");
        //     videoInfo = new VideoInfo();
        //     videoInfo.setFileLocation("C:\\Users\\Lenovo\\Desktop\\video\\test.mp4");
        //     videoInfo.setVideoPoolId("xxxxxxxxxxx");
        //     System.out.println("vid=" + client.uploadVideoParts(videoInfo), new UploadCallBack() {
        //         @Override
        //         public void start(String s) {
        //             System.out.println("start=" + s);
        //         }
        //         @Override
        //         public void process(String s, long l, long l1) {
        //             System.out.println("process=" + s + ",uploaded=" + l + ", total=" + l1);
        //         }
        //         @Override
        //         public void complete(String s) {
        //             System.out.println("complete=" + s);
        //         }
        //         @Override
        //         public void success(String s) {
        //             System.out.println("success=" + s);
        //         }
        //         @Override
        //         public void error(String s, UploadErrorMsg uploadErrorMsg) {
        //             System.out.println("error=" + s + ", message=" + uploadErrorMsg.getMessage());
        //         }
        //     }, true);
        // }
    }
}

Change log

日期 版本 更新内容
2020-03-29 v1.1.1 支持自定义拓展字段,可在上传完成回调中透传返回
2019-08-05 v1.0.0 支持断点续传的新版Java上传SDK 发布
以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

回调通知使用说明

功能说明

在视频相关处理环节(如上传、转码、审核)完成后,系统会将处理结果提交到配置的回调地址,通知用户处理进展和状态,以便进行其他业务操作。

回调配置

登录云点播管理后台,在 设置 --> 回调设置 配置回调URL。
image-20200224093654793

事件类型

目前支持的事件通知类型参考如下:

一、视频上传完成

点播服务端接收完上传的视频文件后,会产生视频上传完成事件。

HTTP请求方式为:GET。

事件内容

名称 描述
sign 系统签名,由“upload”字符串拼接vid、secretkey并做MD5运算生成。例如,vid的值为e2e84a738302f20a4f6eb202976f5c63_e,secretkey的值为7UagtQOq2A,将字符串uploade2e84a738302f20a4f6eb202976f5c63_e7UagtQOq2A进行MD5计算,得到sign的值为:b245e3e65aa45b60dc02337b5cd914a7
type 回调类型:upload 已上传,invalidVideo 不合规格视频(当上传的视频的信息无法被系统分析时,判断为不合规格视频)。
vid 视频ID
state 用户自定义数据,在上传视频接口上传SDK中,如果提交了该字段,会在事件完成回调时透传返回。

回调示例

http://demo.polyv.net/callback?sign=b245e3e65aa45b60dc02337b5cd914a7&type=upload&vid=e2e84a738302f20a4f6eb202976f5c63_e

二、异步上传处理失败

当使用管理后台的视频同步功能或者使用异步方式上传视频,处理失败时会产生此事件。

当收到此回调时,说明远程上传视频失败,需检查源视频的URL地址。

HTTP请求方式为:GET。

事件内容

名称 描述
sign 系统签名,由type、fileUrl、secretkey按顺序拼接并做MD5运算生成。例如:fileUrl 的值为 "http://a.mp4" , secretkey 的值为 kXmHMLeX6M ,将字符串 async_uploadhttp://a.mp4kXmHMLeX6M 进行MD5计算,得到 c2f168b96d882c1a03f1021c29208916
type 回调类型,返回固定值:async_upload。
fileUrl 用户提交的需要远程上传的视频URL地址
title 用户提交的需要远程上传的视频标题
state 用户自定义数据,在上传远程视频接口中,如果提交了该字段,会在事件完成回调时透传返回。

回调示例

http://demo.polyv.net/callback?sign=c2f168b96d882c1a03f1021c29208916&fileUrl=http://a.mp4&type=async_upload&title=test

三、视频同步失败

当视频上传成功后,系统需要把上传至边缘节点的视频源文件同步回中心节点,同步失败时会产生此事件。

HTTP请求方式为:GET。

事件内容

名称 描述
sign 系统签名,由type、vid、secretkey按顺序拼接并做MD5运算生成。
type 回调类型,返回固定值:videoSyncedFail。
vid 视频ID

回调示例

http://demo.polyv.net/callback?sign=b245e3e65aa45b60dc02337b5cd914a7&type=videoSyncedFail&vid=e2e84a738302f20a4f6eb202976f5c63_e

四、视频单个清晰度转码完成

视频的某种格式的某个清晰度(如:高清的mp4格式)转码完成时会产生此事件。

视频任一清晰度转码完成并审核通过后即可播放(视频状态会更新为“已发布”,如果其它清晰度的转码还未完成,播放器会自动选择已完成转码的清晰度)。

HTTP请求方式为:GET。

事件内容

名称 描述
sign 系统签名,由type、format、vid、df、secretkey按顺序拼接并做MD5运算生成,例如type的值为encode,format的值为flv,vid的值为e2e84a738302f20a4f6eb202976f5c63_e,df的值为1,secretkey的值为7UagtQOq2A,将字符串encodeflve2e84a738302f20a4f6eb202976f5c63_e17UagtQOq2A进行MD5计算,得到3c3eab358901ad19bc59b5df7704ed48
type 回调类型:encode 转码完成,encode_failed 转码失败
format 转码后的视频格式,非加密视频默认转码出flv、mp4格式;加密视频默认转码出pdx、m3u8格式。
vid 视频ID
df 视频清晰度:1 流畅,2 高清,3 超清

回调示例

http://demo.polyv.net/callback?sign=3c3eab358901ad19bc59b5df7704ed48&type=encode&format=mp4&vid=e2e84a738302f20a4f6eb202976f5c63_e&df=1

五、视频全部清晰度转码完成

视频所有清晰度转码完成会产生此事件。

由于返回内容较多,该回调的请求方式为POST。

事件内容

名称 描述
sign 系统签名,由eventType、vid、secretkey按顺序拼接并做MD5运算生成。注:sign不在POST Body中,而是作为回调URL中的一个参数返回
eventType 事件类型,取固定值:TranscodeComplete
status 视频转码状态,取值:success 成功,fail 失败 。只要有一个清晰度转码成功即返回success。
vid 视频ID
videoInfos 视频转码详情

videoInfos为数组,每个视频流的信息字段如下:

名称 描述
status 单个清晰度视频转码状态,取值:success 成功,fail 失败
format 视频格式
df 视频清晰度:1 流畅,2 高清,3 超清
bitrate 视频码率
duration 视频时长,单位:秒
size 视频大小,单位:Byte
resolution 视频分辨率

回调示例

Request URL:http://demo.polyv.net/callback?sign=3c3eab358901ad19bc59b5df7704ed48
HTTP POST Body:
{
  "eventType": "TranscodeComplete",
  "status": "success"
  "vid": "812a792458101ebf5ff6a1e5e76e1c58_8",
  "videoInfos": [
    {
      "duration": 883,
      "df": 1,
      "size": 15499011,
      "format": "mp4",
      "bitrate": 256,
      "resolution": "480x360",
      "status": "success"
    },
    {
      "duration": 883,
      "df": 2,
      "size": 27574109,
      "format": "mp4",
      "bitrate": 512,
      "resolution": "848x636",
      "status": "success"
    }
  ]
}

六、视频审核完成

视频任一清晰度转码完成后需经过智能审核或人工审核,只有审核通过的视频才可播放。审核完成后会产生此事件。

HTTP请求方式为:GET。

事件内容

名称 描述
sign 系统签名,由“manage”字符串拼接type、vid、secretkey并做MD5运算生成。例如,type的值为pass,vid的值为e2e84a738302f20a4f6eb202976f5c63_e,secretkey的值为7UagtQOq2A,将字符串managepasse2e84a738302f20a4f6eb202976f5c63_e7UagtQOq2A进行MD5计算,得到8ebb91d444ce53fafa3256670fb65d84
type 回调类型:pass 审核通过 nopass 审核不通过
vid 视频ID

回调示例

http://demo.polyv.net/callback?type=pass&vid=e2e84a738302f20a4f6eb202976f5c63_e&sign=8ebb91d444ce53fafa3256670fb65d84

七、视频删除完成

当视频文件被删除至回收站或者从回收站彻底删除时,会产生此事件。

HTTP请求方式为:POST。

事件内容

名称 描述
sign 系统签名,由eventType、secretkey按顺序拼接并做MD5运算生成:md5("DeleteMediaComplete"+secretKey) 。
注:sign不在POST Body中,而是作为回调URL中的一个参数返回。
eventType 回调类型,取固定值:DeleteMediaComplete
operateTime 操作时间,例如:2020-01-20 07:49:17
operator 操作者账号
status 操作状态,success 成功
deleteType 删除方式:MoveToTrash 删除到回收站 DeletePermanently 永久删除
vids 被删除视频的vid,批量删除时返回多个vid

回调示例

Request URL:http://demo.polyv.net/callback?sign=3c3eab358901ad19bc59b5df7704ed48
HTTP POST Body:
{
  "eventType": "DeleteMediaComplete",
  "operateTime": "2020-01-20 07:49:17",
  "operator": "aaa@polyv.net",
  "status": "success",
  "deleteType": "MoveToTrash",
  "vids": "e2e84a738302f20a4f6eb202976f5c63_e,e2e84a738302f20a4f6eb202976f5c63_f"
}

八、视频内容安全审核不通过

当视频经过AI智能扫描,发现有确认或疑似违规内容时,会产生此事件。

HTTP请求方式为:POST。

事件内容

名称 描述
sign 系统签名,由eventType、secretkey按顺序拼接并做MD5运算生成,md5("AIContentScanNotPassed"+secretKey)。
注:sign不在POST Body中,而是作为回调URL中的一个参数返回
eventType 回调类型,取固定值:AIContentScanNotPassed
scanSource 扫描来源,video 视频 ppt 三分屏课件
vid 视频ID
scanResults 扫描结果数组,包含一个或多个scanResult,详见下表:

scanResult结构:

名称 描述
imageUrl 检测图片的URL
scene 检测场景:porn 鉴黄 terrorism 暴恐涉政识别
label 检测结果分类,当scene=porn时,label取值为:
- normal 正常图片
- sexy 性感图片
- porn 色情图片
当scene为terrorism时,label取值为:
- normal 正常图片
- politics 涉政图片
- bloody 血腥图片
- weapon 武器
- others 其它
suggestion 检测建议:review 需人工复审;block 确认违规
rate 检测结果为该分类的概率,取值范围[0.00-100.00]

回调示例

Request URL:http://demo.polyv.net/callback?sign=6c5b14548fb9c06ee1b987debf88f639
HTTP POST Body:
{
  "eventType": "AIContentScanNotPassed",
  "scanSource": "video",
  "vid": "8205ac89d3699e1fc08cd8f9b8486748",
  "scanResults": [
    {
      "imageUrl": "http://img.videocc.net/uimage/8/8205ac89d3/8/8205ac89d3699e1fc08cd8f9b8486748_0_b.jpg",
      "scene": "porn",
      "label": "sexy",
      "suggestion": "block",
      "rate": 93.26
    }
  ]
}
以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

统计视频观看时长的相关方式说明

不少教育类场景都有统计观众的视频观看时长的需求,以此来判断是否完成了课程,能否触发下一步动作(比如观看下一阶段的课程),或者单纯统计并在前台显示观众的观看时长以及观看视频数量。

整体来看统计观看时长有两种方案,一种是通过服务端API来获取统计数据,另一种是借助前端播放器提供的接口,业务方自己统计,两种方案的优劣及适用场景见下表:

统计方式 前端统计 服务端API获取
时效性 实时 非实时。由于服务端需要处理整个平台的播放数据,所以会有一定延时。
数据准确性 准确 有轻微误差。因网络、链路等影响,前端上报的播放数据有可能会发送失败,所以服务端返回的观看时长不能保证绝对准确。
开发成本 较高,业务方需借助播放器的相关接口,自行在前端计算观看时长等数据并上报业务后台。 低,只需调用对应的API来获取统计结果。
适用场景 对统计实时性要求高的业务场景 对统计实时性要求不高的业务场景

前端统计方式介绍

Web播放器(包括PC H5、Flash、移动端H5播放器)

在Web页面播放视频时,可借助播放器提供的相关接口、事件并结合自身业务规则来统计所需的数据,并上报自己的业务系统。

接口:

  • j2s_getCurrentTime() //获取当前播放的时间点,比如视频播放到第20s时返回:20。
  • j2s_realPlayVideoTime() //获取正片播放时间,不包括广告、片头、暂停、片尾等时间,视频播放过程中该值会累加。

事件:

  • s2j_onPlayStart // 播放器成功加载视频文件并缓冲完成后,即将开始播放时触发。
  • s2j_onPlayOver // 播放结束后触发。

其它的播放器属性、接口和事件详见播放器事件汇总播放器函数汇总

注:j2s_realPlayVideoTime获取的是播放的自然时间时长,比如当使用2倍速播放到视频的第60s时:
player.j2s_getCurrentTime() = 60
player.j2s_realPlayVideoTime() = 30

移动端SDK(Android SDK、iOS SDK)

在APP中播放视频时,可使用保利威点播SDK提供的相关接口、事件并结合自身业务规则来统计所需的数据,并上报自己的业务系统。

iOS SDK:

  • @property (nonatomic, assign, readonly) NSTimeInterval viewerWatchDuration // 用户观看时间,假如用2倍速播放到视频的第60s,该方法返回30。
  • @property (nonatomic, assign, readonly) NSTimeInterval videoContentPlayedTime //视频内容播放的时间,假如用2倍速播放到视频的第60s,该方法返回60。

Android SDK:

  • getWatchTimeDuration() // 用户观看时间,假如用2倍速播放到视频的第60s,该方法返回30。
  • getVideoContentPlayedTime() // 视频内容播放时间,假如用2倍速播放到视频的第60s,该方法返回60。

SDK也都有播放开始、完成、出错等事件回调,其它的播放器属性、接口和事件详见Github文档:iOS,Android

服务端API获取方式介绍

通过观看日志:

通过视频完成度接口:

接口文档:获取视频观看完成度接口

该接口可查看某一观众累计观看某一视频的完成度情况。无论观众使用哪种终端、分多少次观看,接口返回的是最终的汇总的完成度。

比如,视频A时长为50分钟,观众使用PC H5观看了第0~20分钟,使用手机H5观看了第10~30分钟,又使用APP观看了第40~50分钟,累计观看时长为20+20+10=50分钟,但观看的视频内容是 0~30 和 40~50 的部分。虽然累计观看时长与视频时长相同,但完成度为 (30+10)/50=80%。而用前端统计的方式,只能统计当次观看的时长,即使通过业务后台汇总累加了每次的时长,也只能通过对比观看时长和视频时长来判断是否完成了观看,上述例子中观看时长与视频时长相同,但实际完成度是80%。

通过视频高级分析来统计:

功能说明文档:高级分析功能说明

接口文档:高级分析-分页查询观看行为列表

注:
- 通过观看日志接口获取的数据在平台数据量大的情况下可能会滞后几个小时(也就是视频播放后隔几小时才能查到数据),后续会优化到10分钟以内。
- 后台导出excel表中的开始时间,是数据存储的时间,并不等同于视频开始播放的时间。
- 视频观看完成度在服务端每隔1小时计算一次,也就是有最大1小时的延迟。
- 高级分析每天统计一次,也就是有最大24小时的延迟。
- 完成度接口和高级分析中的完成度是基于视频正常速度来计算的,假如用2倍速完整观看一个视频,完成度会计算为50%。

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

恢复回收站视频API接口

接口URL

https://api.polyv.net/v2/video/{userId}/recover-videos

接口说明

该接口恢复点播回收站中的视频,接口支持批量恢复,一次性最多支持恢复100个视频。

支持格式

JSON

请求方式

POST

请求参数

参数名 必选 类型及范围 说明
userId true string 用户id,路径参数
ptime true string 当前13位毫秒级时间戳,3分钟内有效
sign true string 签名,40位大写的sha1值
vids true string 点播视频vid

返回结果

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

失败返回json

// 时间戳过期:
{
  "code": 400,
  "status": "error",
  "message": "ptime is too old.",
  "data": ""
}
// 视频vids为空
{
    "code": 400,
    "status": "error",
    "message": "vids can't be empty",
    "data": ""
}
// vids数量超过100个
{
    "code": 400,
    "status": "error",
    "message": "vids limits 100",
    "data": ""
}
// 签名报错
{
    "code": 400,
    "status": "error",
    "message": "the sign is not right.",
    "data": ""
}

响应参数说明

字段 说明 类型 schema
code 响应码 int32
status 响应状态:success/error/fail string
message 错误信息说明 string
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. 签名不正确
400 vids can't be empty 视频vid为空
400 vids limits 100 vids数量超过100个

PHP请求示例

<?php

$userId="xxxxxx";
$secretkey="xxxxxx";
$url = 'http://api.polyv.net/v2/video/'.$userId.'/recover-videos';
$header = array('application/x-www-form-urlencoded');
$data = array(
    "ptime" => time()*1000,
    "vids" => "xxxxxx_x",
);
ksort($data);
$str='';
foreach ($data as $k => $v) {
    $str = $str.$k.'='.$v.'&';
}
$str=substr($str,0,strlen($str)-1);
$str=$str.$secretkey;
$hash=strtoupper(sha1($str));
$data["sign"]=$hash;
// 请求接口
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$sResult = curl_exec($ch);
if($sError=curl_error($ch)){
    die($sError);
}
curl_close($ch);
//打印获得的数据
print_r($sResult);
?>

签名规则:

将非空的请求参数按照参数名字典顺序排列,连接参数名与参数值,并在尾部加上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

https://api.polyv.net/v2/danmu/{userId}/add

接口说明

上传点播视频弹幕接口,弹幕暂不支持特殊字符与表情符。

支持格式

JSON

请求方式

POST

请求参数

参数名 必选 类型及范围 说明
userId true string 用户id,路径参数
ptime true string 当前13位毫秒级时间戳,3分钟内有效
sign true string 签名,40位大写的sha1值
vid true string 点播视频vid
msg true string 弹幕信息
time true string 弹幕出现的时间,格式 HH:mm:ss
sessionId false string 场次号
param2 false string 自定义参数
fontSize false int32 字体大小,默认:18
fontMode false string 出现位置,顶部:top,底部:bottom,滚动:roll(默认)
fontColor false string 字体颜色,格式0xFFFFFF, 默认:0xFFFFFF

返回结果

// 成功结果
{
    "code": 200,
    "status": "success",
    "message": "success",
    "data": {
        "Id": 1115759
    }
}

失败返回json

// 时间戳过期:
{
  "code": 400,
  "status": "error",
  "message": "ptime is too old.",
  "data": ""
}
// 签名报错
{
    "code": 400,
    "status": "error",
    "message": "the sign is not right.",
    "data": ""
}
// 必须参数为空
{
    "code": 400,
    "status": "error",
    "message": "vid, msg and time should not be empty.",
    "data": ""
}
// 弹幕时间格式不对
{
    "code": 400,
    "status": "error",
    "message": "Wrong time format.",
    "data": ""
}
// 非法参数
{
    "code": 400,
    "status": "error",
    "message": "font size illegal",
    "data": ""
}
// 视频不存在
{
    "code": 400,
    "status": "error",
    "message": "vid doesn't exist.",
    "data": ""
}

响应参数说明

字段 说明 类型 schema
code 响应码 int32
status 响应状态:success/error/fail string
message 错误信息说明 string
data 响应数据 object
data.Id 弹幕Id int32

响应错误说明

错误代码 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. 签名不正确
400 vid doesn't exist. 视频vid为空
400 vid, msg and time should not be empty. 必传参数为空
400 Wrong time format. 弹幕时间格式不对
400 font size illegal 字体格式非法

PHP请求示例

<?php

$userId="xxxxxxxxxxx";
$secretkey="xxxxxxxxxxx";
$url = 'http://api.polyv.net/v2/danmu/'.$userId.'/add';
$header = array('application/x-www-form-urlencoded');
$data = array(
    "ptime" => time()*1000,
    "msg" => "弹幕......",
    "vid" => "xxxxxxxxxxx",
    "time" => "00:01:10"
);
ksort($data);
$str='';
foreach ($data as $k => $v) {
    $str = $str.$k.'='.$v.'&';
}
$str=substr($str,0,strlen($str)-1);
$str=$str.$secretkey;
$hash=strtoupper(sha1($str));
$data["sign"]=$hash;
// 请求接口
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
$sResult = curl_exec($ch);
if($sError=curl_error($ch)){
    die($sError);
}
curl_close($ch);
//打印获得的数据
print_r($sResult);
?>

签名规则:

将非空的请求参数按照参数名字典顺序排列,连接参数名与参数值,并在尾部加上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

https://api.polyv.net/v2/video/{userId}/srt/upload

接口说明

上传点播视频字幕接口,改接口会自动检测字幕语言。

支持格式

form-data

请求方式

POST

请求参数

参数名 必选 类型及范围 说明
userId true string 用户id,路径参数
ptime true string 当前13位毫秒级时间戳,3分钟内有效
sign true string 签名,40位大写的sha1值
vid true string 点播视频vid
title true string 字幕名称
file true file 字幕文件,支持utf-8编码
asDefault false string 是否作为默认字幕,Y:是,N:否
language false string 语言,默认自动检测,支持语言:中文、繁体中文 、英语、日语、韩语、法语、德语、俄语、西班牙语、阿拉伯语、葡萄牙语、其他

返回结果

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

失败返回json

// 时间戳过期:
{
  "code": 400,
  "status": "error",
  "message": "ptime is too old.",
  "data": ""
}
// 文件名称为空
{
    "code": 400,
    "status": "error",
    "message": "title can't be empty",
    "data": ""
}
// 文件为空
{
    "code": 400,
    "status": "error",
    "message": "file can't be empty",
    "data": ""
}
// 签名报错
{
    "code": 400,
    "status": "error",
    "message": "the sign is not right.",
    "data": ""
}

响应参数说明

字段 说明 类型 schema
code 响应码 int32
status 响应状态:success/error/fail string
message 错误信息说明 string
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. 签名不正确
400 vid can't be empty 视频vid为空
400 file can't be empty 视频文件不能为空
400 title can't be empty 标题为空
400 language is not support 不支持的语言

PHP请求示例

<?php

$userId="xxxxxx";
$secretkey="xxxxxx";
$url = 'http://api.polyv.net/v2/video/'.$userId.'/srt/upload';
$header = array('Content-type: multipart/form-data');
$data = array(
    "ptime" => time()*1000,
    "title" => "xxxxx",
    "vid" => "xxxxxx_x",
);
ksort($data);
$str='';
foreach ($data as $k => $v) {
    $str = $str.$k.'='.$v.'&';
}
$str=substr($str,0,strlen($str)-1);
$str=$str.$secretkey;
$hash=strtoupper(sha1($str));
$data["sign"]=$hash;
$data['file']='@/home/moshunwei/english.srt';
// 请求接口
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$sResult = curl_exec($ch);
if($sError=curl_error($ch)){
    die($sError);
}
curl_close($ch);
//打印获得的数据
print_r($sResult);
?>

签名规则:

将非空的请求参数按照参数名字典顺序排列,连接参数名与参数值,并在尾部加上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...

音频播放器使用文档

概述

Polyv 音频播放器是保利威云点播Web播放器的重要补充,主要应用于音频为主的业务场景,基于HTML5实现PC/移动端兼容,并深度融合了保利威视频云业务,如支持加密播放等,为用户提供简单、快速、安全、稳定的播放服务。

基础功能

  1. 支持播放上传到保利威平台的音视频文件,并且支持播放加密的音视频文件。
  2. 播放控制(播放、暂停,拖拽进度调整等)。
  3. 两套默认皮肤可选,也可以自定义样式。

支持格式

  • 音频格式:mp3、aac、m3u8
  • 音频编码:mp3、aac
  • 视频格式:mp4、m3u8
  • 视频编码:h264

注:
1. 如果上传文件时设置的是默认转码方式,所有的文件都会转码为视频文件,使用音频播放器播放视频文件时,只会播放声音,没有图像。
2. 如果上传文件时设置了"源文件播放",平台不会对源文件进行转码,播放器会直接播放源文件。建议上传mp3或aac格式的文件,其它音频格式文件,如3gp、ogg、wav、FLAC、mov等,能否正常播放取决于浏览器支持。
3. 如果上传视频文件时设置了“生成音频文件”,平台在转码时会额外转出一份mp3文件,音频播放器会播放该mp3文件。

适配情况

mp3 aac mp4 m3u8
iOS
Android 4.0+
Chrome 34+
Firefox 49+
IE IE9+ IE9+ IE9+ IE11+ for Windows 8.1+
Edge
Safari 8+

常见适配问题:
1. 设置autoplay=true无效,不会自动播放
- 移动端浏览器中音频自动播放一直是禁止的,目前通用的办法是通过用户手动触发播放(例如监听用户的点击事件并调用play方法),但不排除一些特性的浏览器和webview允许自动播放。
- PC端Chrome 55以上版本、MacOS High Sierra Safari 11以上的浏览器也都限制自动播放。
2. 音量调节功能(setVolume)在iOS和部分Android浏览器上不支持。
3. 倍速播放功能(setSpeed)在部分移动端浏览器上不支持,比如Android 微信。

集成方式

引入资源

<!-- 指定版本 -->
<script src="//player.polyv.net/resp/vod-audio-player/0.1.0/audio-player.min.js"></script>
<!-- 最新版本 -->
<script src="//player.polyv.net/resp/vod-audio-player/latest/audio-player.min.js"></script>

创建 HTML 节点

<div id="myAudioPlayer"></div>

创建播放器实例

const plvAudioPlayer = new PlvAudioPlayer({
  vid: '从 polyv 后台获取的 vid',
  wrap: '#myAudioPlayer',
  skin: 'white'
});

监听播放器事件

// 播放器初始化完毕
plvAudioPlayer.on('ready', function() {
  console.info('ready');
});

调用播放器方法,及获取播放器属性

// 切换加密视频
plvAudioPlayer.changeVid({
  ts: ts,
  sign: sign,
  vid: vid
});
// 获取音频文件当前播放进度
const currentTime = plvAudioPlayer.currentTime;

API 文档

参数设置

将所有参数以对象形式传入播放器,可以设置的属性包括:

名称 类型 是否必填 描述
vid string 上传到保利威平台的音视频的唯一ID
viewerInfo object 可选 观众信息(用于观看日志统计)。详见观众信息
wrap string 可选 需要载入播放器的css选择器
skin string 可选 播放器皮肤(white / grey),如果使用自定义播放器皮肤,则不需传该参数。
autoPlay boolean 可选 是否自动播放
loop boolean 可选 是否循环播放
volume number 可选 音量(范围0~1)
speed number 可选 倍速播放
startTime number 可选 从第几秒开始播放,需小于视频时长
playsafe function | string 可选 服务器计算出的 token。若要在PC端播放加密音视频才需要该参数,非加密音视频可忽略。详见创建playsafe token
playsafeUrl string 可选 业务方服务端获取 token 的接口,每次需要 token 时播放器会请求这个接口获取。
ts string 可选 移动端播放web加密音视频使用的 ts,非加密音视频可忽略。详见移动端Web加密说明
sign string 可选 移动端播放web加密音视频使用的 sign,非加密音视频可忽略

静态属性

可以通过 PlvAudioPlayer[key] 获取。

名称 类型 描述
EventType object 回调事件的汇总。

实例属性

每个播放器实例都有以下属性:

名称 类型 描述
audio object 原生的 audio 对象。
currentTime number 当前播放位置,单位:秒。
duration number 当前音频时长,单位:秒。
paused boolean 当前是否暂停状态。

实例方法

play()

开始播放。

pause()

暂停播放。

(async) changeVid(param)

切换媒体文件。

Parameters:
名称 类型 描述
param string | object vid 字符串。如果是加密视频,需要传入包含属性playsafe(PC端)、ts(移动端)、sign(移动端)、vid的对象。

seek(time)

跳转到指定位置。

Parameters:
名称 类型 描述
time number 指定位置的时长,单位为 s。

setLoop(val)

设置循环播放。

Parameters:
名称 类型 描述
val boolean 是否循环播放。

setSpeed(val)

设置播放的倍速。

Parameters:
名称 类型 描述
val number 倍速值,可选范围 0~16。非法值将默认设置为 1。

setVolume(val)

设置音量。

Parameters:
名称 类型 描述
val number 音量值,可选范围 0~1。非法值将默认设置为 1。

stop()

停止播放,停止后的音频再播放会从头开始。

(async) updateParam(param)

更新 param。会导致原来的音频结束播放,重新加载。

Parameters:
名称 类型 描述
param object 播放器参数

destroy()

销毁当前播放器实例。

事件

播放器提供了一些常用的事件回调,使用方法如:

// 播放器初始化完毕
plvAudioPlayer.on('ready', function() {
  console.info('ready');
});

目前提供的播放器方法包括以下:

ready

播放器初始化完毕,播放器提供的方法需在此事件发生后才可以调用。

Properties:
名称 类型 描述
data object 事件信息。可以通过 data.audioInfo 获取音频相关信息。

loadstart

在媒体开始加载时触发。

play

媒体播放时触发。

playing

播放中,会触发多次

pause

播放暂停时触发。

seeking

在跳跃操作开始时触发。

seeked

在跳跃操作完成时触发。

ratechange

在回放速率变化时触发。

timeupdate

元素的currentTime属性表示的时间已经改变。

waiting

在一个待执行的操作(如回放)因等待另一个操作(如跳跃或下载)被延迟时触发。

ended

播放结束时触发。

stop

stop方法完成后的回调。

hlsError

hls发生错误时触发。

serverError

发生播放错误时触发。

Properties:
名称 类型 描述
data object 报错信息。可以通过 data.code 获取报错信息的错误码。
以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

字幕设置

字幕设置:顶部功能列表的“播放器”—选择已有播放器(或创建新的播放器)—点击“修改”,如下图所示:
1
点击“修改”后,进入如下图界面,找到“字幕设置”,进行字幕相关属性设置。
2
显示字幕:选择后开启字幕功能;
双语字幕:选中后开启双字幕功能,将根据字幕文件的语言匹配双字幕;
  设为默认字幕:把双字幕设为默认字幕;
  上方字幕:双字幕中位于上方的字幕;
  下方字幕:双字幕中位于下方的字幕;
字幕样式设置:可控制字幕的样式,包括字体、字号、字体颜色、加粗、倾斜、描边、字体间距、字幕高度位置等,具体如下图:
4

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

视频数据司南介绍(视频)

视频说明

视频数据司南,基于保利威大数据系统,从单次观看行为、视频、观众等维度,为您提供更精细化、更直观的数据分析,为业务提供更有效的分析决策依据。

现在我们就来体验一下:
在点播后台数据统计的左侧菜单中,可以看到“高级分析”,
首先,观看行为分析,它能够以秒为粒度展示观众如何观看您的视频。具体是怎么样的呢?
保利威云点播视频的每一次播放,都会产生一个热力图。热力图不仅展示了观看完成度这样的统计结果,还直观地还原了整个观看过程:
白色表示观众跳过了这一部分视频内容,没有观看;
绿色表示观众正常观看了;
黄色表示这部分视频被重复观看了两次;
橙色、红色以及深红色分别表示视频被重复观看了三次、四次以及四次以上。

总而言之,颜色越“热”,代表重复观看的次数越多。

观众信息部分,包括视频开始播放的时间,观众头像,该观众观看您账号下视频的总数量、观众昵称以及观看地点。展开之后,可以看到观看设备、IP、观看页等信息;点击头像或昵称可以跳转至观众分析页面。

视频信息,包括视频封面、名称、时长和视频ID;
点击视频名称或ID,可以进入视频分析功能;

视频分析功能,可以让您了解整个观众群体是如何观看视频的。

红色折线表示视频观看的次数。蓝色折线表示观众人数。
折线出现跌落可能意味着这部分视频内容观众不感兴趣,而上升则可能意味着比较吸引观众注意力。可以根据折线走向,分析优化视频内容,为制作更有吸引力的视频内容提供指导。
图表左侧是几个重要指标统计,让您从宏观层面了解迄今为止该视频的播放情况。

观众分析功能
每个观众都有一个独立页面,点击查看详情,您可以快速查看该观众的总体统计情况,包括:
- 观看视频的总数
- 观看视频花费的总时长
- 平均观看完成度
- 首次观看日期
- 上次观看记录
这些数据能帮您剖析用户活跃程度、流失情况。
另外,还有观众的视频观看热力图,能够让您洞悉观众的每一次观看过程。

数据本身没有意义,除非从中获得有价值的洞察。我们相信,视频数据司南与业务运营结合,对实际效益的增长促进,将拥有无限想象空间。

以上就是保利威视频数据司南的简单介绍,如果您在使用过程中有任何疑问,欢迎联系保利威服务团队。

 

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