本文介紹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。