cloudhub-playback-sdk
Version:
CloudHubPlaybackSDK
110 lines (109 loc) • 4.29 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const PlaybackPlayerController_1 = __importDefault(require("./controllers/PlaybackPlayerController"));
const RecordController_1 = __importDefault(require("./controllers/RecordController"));
const EngineController_1 = __importDefault(require("./controllers/EngineController"));
const RoomController_1 = __importDefault(require("./controllers/RoomController"));
const Logger_1 = __importDefault(require("./Logger"));
const global_1 = __importDefault(require("./global"));
const utils_1 = __importDefault(require("./helper/utils"));
const event_1 = require("./helper/event");
Logger_1.default.info(`CloudHubPlayback sdk started version ${global_1.default.config.version}`);
const engine = new EngineController_1.default();
const recordManager = new RecordController_1.default();
const player = new PlaybackPlayerController_1.default(recordManager);
function initSDK(config = "{}") {
config = utils_1.default.strToJson(config);
const { recordRootUrl } = config;
Logger_1.default.info(`initSDK config: `, config);
if (!utils_1.default.verifyUrl(recordRootUrl)) {
Logger_1.default.error('recordRootUrl not path');
return false;
}
//存储播放器配置为全局变量
global_1.default.config = Object.assign(global_1.default.config, config);
global_1.default.isInitSDK = true;
Logger_1.default.info('initSDK success');
listenInitPlay();
}
function listenInitPlay() {
let retryCount = 20;
let speed = 500;
let timer = setInterval(() => {
retryCount--;
if (retryCount <= 0) {
Logger_1.default.warning('waiting to start... please run startPlay !');
}
if (global_1.default.isInitSDK && global_1.default.isStartPlayer) {
clearInterval(timer);
initPlayer();
}
}, speed);
}
function initPlayer() {
// 请求内容
RoomController_1.default.getRoomContent().then((data) => {
Logger_1.default.info('init room.join success');
// 初始化 record 管理器
recordManager.init().then(() => {
Logger_1.default.info('init record.json success');
// 通知播放器播放准备就绪
window.CloudHubPlayer.playerReady();
// 开始播放
player.start();
event_1.EventOuter.trigger('startPlay', data);
event_1.EventInner.trigger('onDocAddr', {
address: [global_1.default.config.docAddr],
channelId: RoomController_1.default.serial
});
// 发送开始播放事件
window.CloudHubPlayer.playStarted();
}).catch(error => {
Logger_1.default.error(error);
window.CloudHubPlayer.playFailed(error);
});
}).catch((error) => {
Logger_1.default.error(error);
window.CloudHubPlayer.playFailed(error);
});
}
function startPlay(onCallback) {
Logger_1.default.info(`startPlay`);
if (utils_1.default.isFunction(onCallback)) {
event_1.EventOuter.on('startPlay', onCallback);
}
global_1.default.isStartPlayer = true;
}
function getEngine() {
Logger_1.default.info('getEngine');
return engine;
}
function getChannelId() {
Logger_1.default.info(`getChannelId channel:${RoomController_1.default.serial}`);
return RoomController_1.default.serial || '';
}
function seekRecordPosition(position) {
Logger_1.default.info(`seekRecordPosition position:${position}`);
player.setTimeDifference(position);
}
function sendError(message) {
window.CloudHubPlayer.sendError(message);
}
const CloudHubPlayback = {
sdkInfo: utils_1.default.deepCopy(Object.assign(global_1.default.config, (window.CloudHubPlayer ? window.CloudHubPlayer.options : {}))),
getEngine,
startPlay,
getChannelId,
seekRecordPosition,
sendError,
};
// 对外给播放器的api
window._CloudHubPlayback = {
initSDK
};
// 暴露给广生
window.CloudHubPlayback = Object.assign({ rtcEngine: engine, logger: Logger_1.default }, CloudHubPlayback);
exports.default = CloudHubPlayback;