网易视频云开发教程

郑岐-网易云 发布于 2016/07/10 22:35
阅读 1K+
收藏 4

由于文档过多,本帖主要分享直播开发教程,网易视频云提供一对一技术支持,感兴趣的同学,2479775187qq交流。

一、使用流程

产品描述

网易视频云直播源自网易多年视频技术沉淀,基于专业的跨平台视频编解码技术和大规模视频内容分发网络,提供稳定流畅、低延时、高并发的实时音视频服务,有视频直播需求的用户可调用视频云直播提供的API或SDK即可将视频直播无缝对接到自身的业务应用系统。

本服务适用于各类音视频直播场景,比如教育行业的在线教育、网络课堂等,娱乐行业的美女直播、游戏直播等,广电行业的电视直播、赛事直播等,另外还适用于企业协作、远程医疗、云监控、庭审直播等其他视频相关行业。

目前,网易视频云直播面向注册用户开放。

开通流程

注册和登录

1.注册登录后点击“云直播”打开开通申请页,提交申请后等待后台审核。

2.后台审核通过,直播服务开通,点击“管理控制台”后进入直播管理控制台。

计费模式

计费方式 价格 说明
按流量 1.00元/GB 计费周期:以自然月为周期,计算周期内每日消耗的流量累计值,以此为计费值,出日账单和月账单
按带宽峰值 35元/Mbps/月 计费周期:以自然月为周期,计算周期内每日消耗的带宽峰值,按最高的日峰值为计费值,出月账单

管理控制台

频道管理

点击“管理控制台”进入直播管理
在直播管理页面中,您可以查看当前直播频道的情况。包括频道名称、ID、创建时间、频道状态和操作等等。可
以对直播名称进行搜索,也可以批量对直播频道进行暂停、恢复和删除。直播频道建立后,将出现在频道列表中。

频道状态

频道状态共有“空闲”、“直播中”、“直播录制中”和“禁用”四种状态。

新建频道

1.在频道管理页中点击“新建”按钮

2.输入频道名称

3.频道类型:当前默认RTMP类型,后期会其他类型可选择

4.创建后跳转频道列表页显示

频道地址

点击频道列表操作下的“地址”,显示1条RTMP推流地址和HTTP、HLS、RTMP3条拉流地址。使用直播推流SDK或Demo输入推流地址即可开始直播推流,使用播放器SDK或Demo输入拉流地址(任意一条拉流地址)即可收看直播。

直播录制

点击频道列表操作下的“录制”,可以修改此频道的录制配置,如是否开启直播时自动录制、录制视频的名称、录制视频的默认格式及切片的长度等,直播录制一律存放到云点播服务器,因此使用直播录制功能必须先开通云点播VOD服务。

数据统计

点击“数据统计”,可查询带宽峰值、流量(含上行和下行流量)统计信息,其中带宽峰值统计粒度为10分钟,流量以天为统计粒度,统计粒度内的累计消耗。

二、直播服务端API文档

接口概述

API调用说明

本文档中,所有调用视频云服务端接口的请求都需要按此规则校验。

API token校验

以下参数需要放在Http Request Header中

参数 类型 必须 说明
AppKey String 开发者平台分配的appkey
Nonce String 随机数(随机数,最大长度128个字符)
CurTime String 当前UTC时间戳,从1970年1月1日0点0分0秒开始到现在的秒数
CheckSum String 服务器认证需要,SHA1(AppSecret+Nonce+CurTime),16进制字符小写

重要提示: 本文档中提供的所有接口均面向开发者服务器端调用,用于计算CheckSum的secretkey开发者应妥善保管,可在应用的服务器端存储和使用,但不应存储或传递到客户端,也不应在网页等前端代码中嵌入。

计算CheckSum的java代码举例如下:

import java.security.MessageDigest; public class CheckSumBuilder { public static String getCheckSum(String appSecret, String nonce, String curTime) { return encode("sha1", appSecret + nonce + curTime);
    } private static String encode(String algorithm, String value) { if (value == null) { return null;
        } try {
            MessageDigest messageDigest = MessageDigest.getInstance(algorithm);
            messageDigest.update(value.getBytes()); return getFormattedText(messageDigest.digest());
        } catch (Exception e) { throw new RuntimeException(e);
        }
    } private static String getFormattedText(byte[] bytes) { int len = bytes.length;
        StringBuilder buf = new StringBuilder(len * 2); for (int j = 0; j < len; j++) {
            buf.append(HEX_DIGITS[(bytes[j] >> 4) & 0x0f]);
            buf.append(HEX_DIGITS[bytes[j] & 0x0f]);
        } return buf.toString();
    } private static final char[] HEX_DIGITS = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };
}

接口说明

所有接口都只支持POST请求
所有接口请求Content-Type类型为:application/json;charset=utf-8
所有接口返回类型为JSON,同时进行UTF-8编码

频道管理

创建频道

接口说明

创建一个直播频道

请求说明

POST https://vcloud.163.com/app/channel/create HTTP/1.1 Content-Type: application/json;charset=utf-8

参数说明

参数 类型 说明 必须
name String 频道名称
type int 频道类型(0:rtmp;1:hls;2:http)

curl请求示例

curl -X POST -H "Content-Type: application/json" -H "AppKey: XXXX" -H "Nonce: XXXX" -H "CurTime: xxxx" -H "CheckSum: XXXX" -d '{"name":"netease_vcloud", "type":0}' https://vcloud.163.com/app/channel/create

HttpClient请求示例(以下各接口的HttpClient调用方式参考此处)

import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicNameValuePair; import org.apache.http.util.EntityUtils; import org.apache.http.Consts; import java.util.ArrayList; import java.util.Date; import java.util.List; public class Test { public static void main(String[] args) throws Exception{
        DefaultHttpClient httpClient = new DefaultHttpClient();
        String url = "https://vcloud.163.com/app/channel/create";
        HttpPost httpPost = new HttpPost(url);

        String appKey = "94kid09c9ig9k1loimjg012345123456";
        String appSecret = "123456789012";
        String nonce = "1";
        String curTime = String.valueOf((new Date()).getTime() / 1000L);
        String checkSum = CheckSumBuilder.getCheckSum(appSecret, nonce ,curTime);//参考 计算CheckSum的java代码 // 设置请求的header httpPost.addHeader("AppKey", appKey);
        httpPost.addHeader("Nonce", nonce);
        httpPost.addHeader("CurTime", curTime);
        httpPost.addHeader("CheckSum", checkSum);
        httpPost.addHeader("Content-Type", "application/json;charset=utf-8"); // 设置请求的参数 StringEntity params = new StringEntity("{\"name\":\"netease_vcloud\", \"type\":0}",Consts.UTF_8);
        httpPost.setEntity(params); // 执行请求 HttpResponse response = httpClient.execute(httpPost); // 打印执行结果 System.out.println(EntityUtils.toString(response.getEntity(), "utf-8"));
    }
}

返回说明

http 响应:json

参数 类型 说明
code int 错误码
cid String 频道ID,32位字符串
ctime Long 创建频道的时间戳
pushUrl String 推流地址
httpPullUrl String http拉流地址
hlsPullUrl String hls拉流地址
rtmpPullUrl String rtmp拉流地址
msg String 错误信息
"Content-Type": "application/json; charset=utf-8" { "code" : XXX, "msg" : XXX, "ret" : { "cid" : XXX, "ctime" : XXX, "pushurl" : XXX, "httpPullUrl" : XXX, "hlsPullUrl" : XXX, "rtmpPullUrl" : XXX
    }
}

code参考code状态表

修改频道

接口说明

修改直播频道信息

请求说明

POST https://vcloud.163.com/app/channel/update HTTP/1.1 Content-Type: application/json;charset=utf-8

参数说明

参数 类型 说明 必须
name String 频道名
cid String 频道ID,32位字符串
type int 频道类型 ( 0 : rtmp, 1 : hls, 2 : http)

curl请求示例

curl -X POST -H "Content-Type: application/json" -H "AppKey: XXXX" -H "Nonce: XXXX" -H "CurTime: xxxx" -H "CheckSum: XXXX" -d '{"name":"netease_vcloud", "cid":"XXXXX", "type":0}' https://vcloud.163.com/app/channel/update

返回说明

http 响应:json

参数 类型 说明
code int 错误码
msg String 错误信息
"Content-Type": "application/json; charset=utf-8" { "code" : XXX, "msg" : XXX, "ret" : {

    }
}

code参考code状态表

删除频道

接口说明

删除一个直播频道

请求说明

POST https://vcloud.163.com/app/channel/delete HTTP/1.1 Content-Type: application/json;charset=utf-8

参数说明

参数 类型 说明 必须
cid String 频道ID,32位字符串

curl请求示例

curl -X POST -H "Content-Type: application/json" -H "AppKey: XXXX" -H "Nonce: XXXX" -H "CurTime: xxxx" -H "CheckSum: XXXX" -d '{"cid":"XXXXX"}' https://vcloud.163.com/app/channel/delete

返回说明

http 响应:json

参数 类型 说明
code int 错误码
msg String 错误信息
"Content-Type": "application/json; charset=utf-8" { "code" : XXX, "msg" : XXX, "ret" : {

    }
}

code参考code状态表

获取频道状态

接口说明

获取一个直播频道的信息

请求说明

POST https://vcloud.163.com/app/channelstats HTTP/1.1 Content-Type: application/json;charset=utf-8

参数说明

参数 类型 说明 必须
cid String 频道ID,32位字符串

curl请求示例

curl -X POST -H "Content-Type: application/json" -H "AppKey: XXXX" -H "Nonce: XXXX" -H "CurTime: xxxx" -H "CheckSum: XXXX" -d '{"cid":"XXXXX", "name":"netease_vcloud"}' https://vcloud.163.com/app/channelstats

返回说明

http 响应:json

参数 类型 说明
ctime Long 创建频道的时间戳
cid String 频道ID,32位字符串
name String 频道名称
status int 频道状态(0:空闲; 1:直播; 2:禁用; 3:直播录制)
type int 频道类型 ( 0 : rtmp, 1 : hls, 2 : http)
uid Long 用户ID
needRecord int 1-开启录制; 0-关闭录制
format int 1-flv; 0-mp4
duration int 录制切片时长(分钟),默认120分钟
filename String 录制后文件名
msg String 错误信息
"Content-Type": "application/json; charset=utf-8" { "code" : XXX, "msg" : XXX, "ret" : { "ctime" : XXX, "cid" : XXX, "name" : XXX, "status" : XXX, "uid" : XXX, "needRecord" : XXX, "format" : XXX, "duration" : XXX, "filename" : XXX
    }
}

code参考code状态表

获取频道列表

接口说明

获取用户直播频道列表

请求说明

POST https://vcloud.163.com/app/channellist HTTP/1.1 Content-Type: application/json;charset=utf-8

参数说明

参数 类型 说明 必须
records int 单页记录数,默认值为10
pnum int 要取第几页,默认值为1
ofield String 排序的域,支持的排序域为:ctime(默认)
sort int 升序还是降序,1升序,0降序,默认为desc

curl请求示例

curl -X POST -H "Content-Type: application/json" -H "AppKey: XXXX" -H "Nonce: XXXX" -H "CurTime: xxxx" -H "CheckSum: XXXX" -d '{"records":XXX, "pnum":XXX, "ofield": "XXX", "sort": XXX}' https://vcloud.163.com/app/channellist

返回说明

http 响应:json

参数 类型 说明
ctime Long 创建频道的时间戳
cid String 频道ID,32位字符串
name String 频道名称
status int 频道状态(0:空闲; 1:直播; 2:禁用; 3:直播录制)
type int 频道类型 ( 0 : rtmp, 1 : hls, 2 : http)
uid Long 用户ID
needRecord int 1-开启录制; 0-关闭录制
format int 1-flv; 0-mp4
duration int 录制切片时长(分钟),默认120分钟
filename String 录制后文件名
msg String 错误信息
"Content-Type": "application/json; charset=utf-8" { "code" : XXX, "msg" : XXX, "ret" : { "list" : [
            { "ctime" : XXX, "cid" : XXX, "name" : XXX, "status" : XXX, "uid" : XXX, "needRecord" : XXX, "format" : XXX, "duration" : XXX, "filename" : XXX
            },

            { "ctime" : XXX, "cid" : XXX, "name" : XXX, "status" : XXX, "uid" : XXX, "needRecord" : XXX, "format" : XXX, "duration" : XXX, "filename" : XXX
            },

            ...

        ]
    }
}

code参考code状态表

重新获取推流地址

接口说明

用户创建频道时获取的推流地址失效时,重新获取推流地址。

请求说明

POST https://vcloud.163.com/app/address HTTP/1.1 Content-Type: application/json;charset=utf-8

参数说明

参数 类型 说明 必须
cid String 频道ID

curl请求示例

curl -X POST -H "Content-Type: application/json" -H "AppKey: XXXX" -H "Nonce: XXXX" -H "CurTime: xxxx" -H "CheckSum: XXXX" -d '{"cid": "xxxx"}' https://vcloud.163.com/app/address

返回说明

http 响应:json

参数 类型 说明
code int 错误码
pushUrl String 推流地址
httpPullUrl String http拉流地址
hlsPullUrl String hls拉流地址
rtmpPullUrl String rtmp拉流地址
msg String 错误信息
"Content-Type": "application/json; charset=utf-8" { "code" : XXX, "msg" : XXX, "ret" : { "pushUrl" : XXX, "httpPullUrl" : XXX, "hlsPullUrl" : XXX, "rtmpPullUrl" : XXX
    }
}

code参考code状态表

设置频道为录制状态

接口说明

设置频道为录制状态,用户推流时,即可录制为视频文件。

请求说明

POST https://vcloud.163.com/app/channel/setAlwaysRecord HTTP/1.1 Content-Type: application/json;charset=utf-8

参数说明

参数 类型 说明 必须
cid String 频道ID
needRecord int 1-开启录制; 0-关闭录制
format int 1-flv; 0-mp4
duration int 录制切片时长(分钟),默认120分钟
filename String 录制后文件名,格式为filename_YYYYMMDD-HHmmssYYYYMMDD-HHmmss, 
文件名
录制起始时间(年月日时分秒) -录制结束时间(年月日时分秒)

curl请求示例

curl -X POST -H "Content-Type: application/json" -H "AppKey: XXXX" -H "Nonce: XXXX" -H "CurTime: xxxx" -H "CheckSum: XXXX" -d '{"cid": "XXX", "needRecord": XXX, "format":XXX, "duration":XXX, "filename":"XXX"}' https://vcloud.163.com/app/channel/setAlwaysRecord

返回说明

http 响应:json

参数 类型 说明
code int 错误码
msg String 错误信息
"Content-Type": "application/json; charset=utf-8" { "code" : XXX, "msg" : XXX
}

code参考code状态表

暂停频道

接口说明

暂停用户正在直播的频道。

请求说明

POST https://vcloud.163.com/app/channel/pause HTTP/1.1 Content-Type: application/json;charset=utf-8

参数说明

参数 类型 说明 必须
cid String 频道ID

curl请求示例

curl -X POST -H "Content-Type: application/json" -H "AppKey: XXXX" -H "Nonce: XXXX" -H "CurTime: xxxx" -H "CheckSum: XXXX" -d '{"cid": "XXX"}' https://vcloud.163.com/app/channel/pause

返回说明

http 响应:json

参数 类型 说明
code int 错误码
msg String 错误信息
"Content-Type": "application/json; charset=utf-8" { "code" : XXX, "msg" : XXX
}

code参考code状态表

批量暂停频道

接口说明

暂停一组用户正在直播的频道。

请求说明

POST https://vcloud.163.com/app/channellist/pause HTTP/1.1 Content-Type: application/json;charset=utf-8

参数说明

参数 类型 说明 必须
cidList JsonArray 频道ID列表

curl请求示例

curl -X POST -H "Content-Type: application/json" -H "AppKey: XXXX" -H "Nonce: XXXX" -H "CurTime: xxxx" -H "CheckSum: XXXX" -d '{"cidList": ["XXX", "XXX", "XXX", ...]}' https://vcloud.163.com/app/channellist/pause

返回说明

http 响应:json

参数 类型 说明
code int 错误码
msg String 错误信息
successList JsonArray 成功暂停cid列表
"Content-Type": "application/json; charset=utf-8" { "code" : XXX, "msg" : XXX, "ret" : { "successList" : [
             XXX,
             XXX,
             XXX,
             ...
         ]

    }
}

code参考code状态表

恢复频道

接口说明

恢复用户被暂停的频道。

请求说明

POST https://vcloud.163.com/app/channel/resume HTTP/1.1 Content-Type: application/json;charset=utf-8

参数说明

参数 类型 说明 必须
cid String 频道ID

curl请求示例

curl -X POST -H "Content-Type: application/json" -H "AppKey: XXXX" -H "Nonce: XXXX" -H "CurTime: xxxx" -H "CheckSum: XXXX" -d '{"cid": "XXX"}' https://vcloud.163.com/app/channel/resume

返回说明

http 响应:json

参数 类型 说明
code int 错误码
msg String 错误信息
"Content-Type": "application/json; charset=utf-8" { "code" : XXX, "msg" : XXX
}

code参考code状态表

批量恢复频道

接口说明

恢复一组用户正在直播的频道。

请求说明

POST https://vcloud.163.com/app/channellist/resume HTTP/1.1 Content-Type: application/json;charset=utf-8

参数说明

参数 类型 说明 必须
cidList JsonArray 频道ID列表

curl请求示例

curl -X POST -H "Content-Type: application/json" -H "AppKey: XXXX" -H "Nonce: XXXX" -H "CurTime: xxxx" -H "CheckSum: XXXX" -d '{"cidList": ["XXX", "XXX", "XXX", ...]}' https://vcloud.163.com/app/channellist/resume

返回说明

http 响应:json

参数 类型 说明
code int 错误码
msg String 错误信息
successList JsonArray 成功暂停cid列表
"Content-Type": "application/json; charset=utf-8" { "code" : XXX, "msg" : XXX, "ret" : { "successList" : [
             XXX,
             XXX,
             XXX,
             ...
         ]

    }
}

code参考code状态表

获取录制视频文件列表

接口说明

获取某频道录制视频文件列表。

请求说明

POST https://vcloud.163.com/app/videolist HTTP/1.1 Content-Type: application/json;charset=utf-8

参数说明

参数 类型 说明 必须
cid String 频道ID

curl请求示例

curl -X POST -H "Content-Type: application/json" -H "AppKey: XXXX" -H "Nonce: XXXX" -H "CurTime: xxxx" -H "CheckSum: XXXX" -d '{"cid": "XXX"}' https://vcloud.163.com/app/videolist

返回说明

http 响应:json

参数 类型 说明
code int 错误码
msg String 错误信息
videoList JsonArray 录制视频列表
video_name String 录制后文件名,格式为filename_YYYYMMDD-HHmmssYYYYMMDD-HHmmss, 
录制起始时间(年月日时分秒) -录制结束时间(年月日时分秒)
orig_video_key String 视频文件在点播桶中的存储路径
uid Long 用户ID
vid Long 视频文件ID
"Content-Type": "application/json; charset=utf-8" { "code" : XXX, "msg" : XXX, "ret" : { "videoList" : [
            { "video_name" : XXX, "orig_video_key" : XXX, "uid" : XXX, "vid" : XXX
            },

            { "video_name" : XXX, "orig_video_key" : XXX, "uid" : XXX, "vid" : XXX
            },

            ...

        ]
    }
}

code参考code状态表

code状态表

code 详细描述
200 操作成功
402 验证码错误
403 请求信息不完整
404 用户已存在
405 激活码不存在
406 用户未激活
407 用户不存在
408 密码错误
409 认证失败
410 用户已激活
411 邮箱不存在
501 内部错误
602 频道查询失败
603 频道删除失败
604 频道添加失败
605 频道更新失败
607 AppKey不存在
609 频道ID为空
610 频道名称为空
612 频道类型错误
613 CheckSum为空
614 AppKey为空
615 CurTime为空
617 cid或uid错误
618 uid不存在或该uid下无频道
629 频道暂停失败
630 频道恢复失败
631 请求体参数错误

直播推流 iOS SDK

网易视频云直播推流 iOS SDK是网易官方推出的 iOS 平台上用于推流的软件开发工具包,提供简单、便捷的开发接口,支持 iOS 7.0及以上版本的 iPad/iPhone/iPod 设备上实现直播推流功能。

开发指南

http://vcloud.163.com/vcloud-sdk-manual/LiveStreaming_Android/sdk/android_livestreaming.html

API文档

http://vcloud.163.com/vcloud-sdk-manual/LiveStreaming_Android/api/index.html

三、直播推流 Windows SDK

网易视频云直播推流 Windows SDK是网易官方推出的 Windows 平台上用于推流的软件开发工具包,提供简单、便捷的开发接口,支持 Windows 平台上音视频采集,编码,实现直播推流功能。

开发指南

http://vcloud.163.com/vcloud-sdk-manual/LiveStreaming_iOS/sdk/ios_livestreaming.html

API文档

http://vcloud.163.com/vcloud-sdk-manual/LiveStreaming_iOS/api/index.html

四、播放器 Android SDK

网易视频云播放器 Android SDK是网易官方推出的 Android 平台视频播放器软件开发工具包,提供简单、便捷的开发接口,支持 Android 2.3.3 及以上版本的移动设备上实现媒体播放功能。

开发指南

http://vcloud.163.com/vcloud-sdk-manual/LivePlayer_Android/sdk/android_liveplayer.html

API文档

http://vcloud.163.com/vcloud-sdk-manual/LivePlayer_Android/api/index.html

播放器 iOS SDK

网易视频云播放器 iOS SDK是网易官方推出的 iOS 平台视频播放器软件开发工具包,提供简单、便捷的开发接口,支持 iOS 7.0及以上版本的 iPad/iPhone/iPod 设备上实现媒体播放功能。

开发指南

http://vcloud.163.com/vcloud-sdk-manual/LivePlayer_iOS/sdk/ios_liveplayer.html

API文档

http://vcloud.163.com/vcloud-sdk-manual/LivePlayer_iOS/api/index.html

加载中
0
0
别慌
别慌
这个都提供服务了。。。。。
0
郑岐-网易云
郑岐-网易云

由于文档过多,本帖主要分享直播开发教程,网易视频云提供一对一技术支持,感兴趣的同学,2479775187qq交流

返回顶部
顶部