本文介绍LiveChannel常见操作,例如创建LiveChannel、列举LiveChannel及删除LiveChannel等。
创建LiveChannel
通过RTMP协议上传音视频数据前,必须先调用该接口创建一个LiveChannel。调用PutLiveChannel接口会返回RTMP推流地址,以及对应的播放地址。
以下代码用于创建LiveChannel:
const OSS = require('ali-oss');
const store = new OSS({
// yourregion填写Bucket所在地域。以华东1(杭州)为例,Region填写为oss-cn-hangzhou。
region: 'yourRegion',
// 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
accessKeyId: process.env.OSS_ACCESS_KEY_ID,
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
authorizationV4: true,
// 填写Bucket名称。
bucket: 'examplebucket',
})
// 填写LiveChannel名称,LiveChannel名称不能包含正斜线(/),例如mychannel。
const cid = 'mychannel';
const conf = {
// 填写LiveChannel的描述信息,最大长度不能超过128字节。
Description: 'this is my channel',
// 指定LiveChannel的状态。此处指定为enabled,表示启用LiveChannel。如需禁用LiveChannel,请将该参数设置为disabled。
Status: 'enabled',
Target: {
// 指定转储的类型,目前仅支持HLS。
Type: 'HLS',
// 指定每个ts文件的时长,单位为秒。
FragDuration: '10',
// 当Type为HLS时,指定m3u8文件中包含ts文件的个数。
FragCount: '5',
// 当Type为HLS时,指定生成的m3u8文件的名称。名称必须以”.m3u8”结尾,长度范围为6~128字节。
PlaylistName: 'playlist.m3u8'
}
};
// 创建LiveChannel。
store.putChannel(cid, conf).then(r=>console.log(r))
获取LiveChannel信息
以下代码用于获取指定的LiveChannel信息:
const OSS = require('ali-oss');
const store = new OSS({
// yourregion填写Bucket所在地域。以华东1(杭州)为例,Region填写为oss-cn-hangzhou。
region: 'yourRegion',
// 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
accessKeyId: process.env.OSS_ACCESS_KEY_ID,
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
authorizationV4: true,
// 填写Bucket名称。
bucket: 'examplebucket',
})
// 填写LiveChannel名称
const cid = 'mychannel';
// 获取LiveChannel信息。
store.getChannel(cid).then(r=>console.log(r));
设置LiveChannel状态
以下代码用于设置LiveChannel状态:
const OSS = require('ali-oss');
const store = new OSS({
// yourregion填写Bucket所在地域。以华东1(杭州)为例,Region填写为oss-cn-hangzhou。
region: 'yourRegion',
// 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
accessKeyId: process.env.OSS_ACCESS_KEY_ID,
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
authorizationV4: true,
// 填写Bucket名称。
bucket: 'examplebucket',
})
// 填写LiveChannel名称。
const cid = 'mychannel';
// LiveChannel分为启用(enabled)和禁用(disabled)两种状态。
// LiveChannel处于disabled状态时,OSS会禁止您向该LiveChannel进行推流操作。如果您正在向该LiveChannel推流,那么推流的客户端会被强制断开(会有10s左右的延迟)。
store.putChannelStatus(cid, 'disabled').then(r=>console.log(r));
获取LiveChannel状态信息
以下代码用于获取指定LiveChannel的推流状态信息:
const OSS = require('ali-oss');
const store = new OSS({
// yourregion填写Bucket所在地域。以华东1(杭州)为例,Region填写为oss-cn-hangzhou。
region: 'yourRegion',
// 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
accessKeyId: process.env.OSS_ACCESS_KEY_ID,
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
authorizationV4: true,
// 填写Bucket名称。
bucket: 'examplebucket',
})
// 填写LiveChannel名称。
const cid = 'mychannel';
// 获取LiveChannel状态信息。
store.getChannelStatus(cid).then(r=>console.log(r))
生成LiveChannel播放列表
PostVodPlaylist接口用于为指定的LiveChannel生成一个点播用的播放列表。OSS会查询指定时间范围内由该LiveChannel推流生成的ts文件,并将其拼装为一个m3u8播放列表。
以下代码用于生成LiveChannel播放列表:
const OSS = require('ali-oss');
const store = new OSS({
// yourregion填写Bucket所在地域。以华东1(杭州)为例,Region填写为oss-cn-hangzhou。
region: 'yourRegion',
// 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
accessKeyId: process.env.OSS_ACCESS_KEY_ID,
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
authorizationV4: true,
// 填写Bucket名称。
bucket: 'examplebucket',
})
// 填写LiveChannel名称。
const cid = 'mychannel';
const r = await this.store.createVod(cid, 're-play', {
// 指定查询ts文件的起始时间,格式为Unix时间戳。
startTime: 1460464870,
// 指定查询ts文件的终止时间,格式为Unix时间戳。
endTime: 1460465877
// EndTime必须大于StartTime,且时间跨度不能大于1天。
}).then(r=>console.log(r))
列举指定的LiveChannel
以下代码用于列举指定的LiveChannel:
const OSS = require('ali-oss');
const store = new OSS({
// yourregion填写Bucket所在地域。以华东1(杭州)为例,Region填写为oss-cn-hangzhou。
region: 'yourRegion',
// 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
accessKeyId: process.env.OSS_ACCESS_KEY_ID,
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
authorizationV4: true,
// 填写Bucket名称。
bucket: 'examplebucket',
})
const r = await this.store.listChannels({
// 列举前缀为'my'的LiveChannel。
prefix: 'my',
// 指定返回的LiveChannel的最大个数为3个。
'max-keys': 3
}).then(r=>console.log(r))
获取LiveChannel推流记录
GetLiveChannelHistory接口用于获取指定LiveChannel的推流记录。使用GetLiveChannelHistory接口最多会返回指定LiveChannel最近的10次推流记录。
以下代码用于获取LiveChannel推流记录:
const OSS = require('ali-oss');
const store = new OSS({
// yourregion填写Bucket所在地域。以华东1(杭州)为例,Region填写为oss-cn-hangzhou。
region: 'yourRegion',
// 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
accessKeyId: process.env.OSS_ACCESS_KEY_ID,
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
authorizationV4: true,
// 填写Bucket名称。
bucket: 'examplebucket',
})
// 填写LiveChannel名称。
const cid = 'mychannel';
// 获取LiveChannel推流记录。
store.getChannelHistory(cid).then(r=>console.log(r))
删除LiveChannel
当有客户端正在向LiveChannel推流时,删除请求会失败。
DeleteLiveChannel接口只会删除LiveChannel本身,不会删除推流生成的文件。
以下代码用于删除指定的LiveChannel:
const OSS = require('ali-oss');
const store = new OSS({
// yourregion填写Bucket所在地域。以华东1(杭州)为例,Region填写为oss-cn-hangzhou。
region: 'yourRegion',
// 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
accessKeyId: process.env.OSS_ACCESS_KEY_ID,
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
authorizationV4: true,
// 填写Bucket名称。
bucket: 'examplebucket',
})
// 填写LiveChannel名称。
const cid = 'mychannel';
// 删除LiveChannel。
store.deleteChannel(cid).then(r=>console.log(r))
相关文档
关于创建LiveChannel的API接口说明,请参见PutLiveChannel。
关于获取LiveChannel配置信息的API接口说明,请参见GetLiveChannelInfo。
关于设置LiveChannel的API接口说明,请参见PutLiveChannelStatus。
关于获取LiveChannel状态的API接口说明,请参见GetLiveChannelStat。
关于列举指定LiveChannel的API接口说明,请参见ListLiveChannel。
关于生成LiveChannel播放列表的API接口说明,请参见PostVodPlaylist。
关于获取LiveChannel推流记录的API接口说明,请参见GetLiveChannelHistory。
关于删除LiveChannel的API接口说明,请参见DeleteLiveChannel。