@pano.video/panortc-react-native-sdk
Version:
PanoRtc SDK For React Native
407 lines (355 loc) • 11.2 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _reactNative = require("react-native");
var _Enums = require("./Enums");
var _Objects = require("./Objects");
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
const {
/**
* @ignore
*/
PanoRtcVideoStreamManagerModule
} = _reactNative.NativeModules;
/**
* @ignore
*/
const Prefix = PanoRtcVideoStreamManagerModule.prefix;
/**
* @ignore
*/
const RtcVideoStreamManagerEvent = new _reactNative.NativeEventEmitter(PanoRtcVideoStreamManagerModule);
/**
* The {@link RtcVideoStreamManager} class.
*/
class RtcVideoStreamManager {
constructor() {
_defineProperty(this, "_listeners", new Map());
}
/**
* @ignore
*/
static _callMethod(method, args) {
return PanoRtcVideoStreamManagerModule.callMethod(method, args);
}
destroy() {
this.removeAllListeners();
}
/**
* Adds the [`RtcVideoStreamManagerEventHandler`]{@link RtcVideoStreamManagerEventHandler} handler.
*
* After setting the [`RtcVideoStreamManagerEventHandler`]{@link RtcVideoStreamManagerEventHandler} handler, you can listen for `RtcVideoStreamManager` events and receive the statistics of the corresponding RtcVideoStreamManager instance.
* @param event The event type.
* @param listener The [`RtcVideoStreamManagerEventHandler`]{@link RtcVideoStreamManagerEventHandler} handler.
*/
addListener(event, listener) {
const callback = res => {
const {
data
} = res; // @ts-ignore
listener(...data);
};
let map = this._listeners.get(event);
if (map === undefined) {
map = new Map();
this._listeners.set(event, map);
}
RtcVideoStreamManagerEvent.addListener(Prefix + event, callback);
map.set(listener, callback);
return {
remove: () => {
this.removeListener(event, listener);
}
};
}
/**
* Removes the [`RtcVideoStreamManagerEventHandler`]{@link RtcVideoStreamManagerEventHandler} handler.
*
* For callback events that you only want to listen for once, call this method to remove the specific [`RtcVideoStreamManagerEventHandler`]{@link RtcVideoStreamManagerEventHandler} objects after you have received them.
* @param event The event type.
* @param listener The [`RtcVideoStreamManagerEventHandler`]{@link RtcVideoStreamManagerEventHandler} handler.
*/
removeListener(event, listener) {
const map = this._listeners.get(event);
if (map === undefined) return;
RtcVideoStreamManagerEvent.removeListener(Prefix + event, map.get(listener));
map.delete(listener);
}
/**
* Removes all the [`RtcVideoStreamManagerEventHandler`]{@link RtcVideoStreamManagerEventHandler} handlers.
* @param event The event type.
*/
removeAllListeners(event) {
if (event === undefined) {
this._listeners.forEach((_, key) => {
RtcVideoStreamManagerEvent.removeAllListeners(Prefix + key);
});
this._listeners.clear();
return;
}
RtcVideoStreamManagerEvent.removeAllListeners(Prefix + event);
this._listeners.delete(event);
}
/**
* @~english
* @brief Create a new video stream.
* @param deviceId The device to be set to new stream.
* @return
* - ResultCode.OK: video stream ID.
* - Others: Failure.
* @note The default video stream is always available after channel joined.
* @~chinese
* @brief 创建一个新的视频流。
* @param deviceId 设备 ID, 此设备会设置给新视频流。
* @return
* - ResultCode.OK:视频流 ID。
* - 其他:失败。
* @note 默认视频流无需创建,在频道加入成功后即有效。
*/
createVideoStream(deviceId) {
return RtcVideoStreamManager._callMethod('createVideoStream', {
deviceId
});
}
/**
* @~english
* @brief Destroy a video stream.
* @param streamId The stream ID to be destroyed.
* @return
* - ResultCode.OK: Success.
* - Others: Failure.
* @note The default video stream could not be destroyed.
* @~chinese
* @brief 销毁一个视频流。
* @param streamId 视频流 ID。
* @return
* - ResultCode.OK:成功。
* - 其他:失败。
* @note 默认视频流不可销毁。
*/
destroyVideoStream(streamId) {
return RtcVideoStreamManager._callMethod('destroyVideoStream', {
streamId
});
}
/**
* @~english
* @brief Set capture device for video stream.
* @param streamId Stream ID.
* @param deviceId Device ID.
* @return
* - ResultCode.OK: Success.
* - Others: Failure.
* @~chinese
* @brief 设置或更新视频流的采集设备。
* @param streamId 视频流 ID。
* @param deviceId 采集设备 ID。
* @return
* - ResultCode.OK:成功。
* - 其他:失败。
*/
setCaptureDevice(streamId, deviceId) {
return RtcVideoStreamManager._callMethod('setCaptureDevice', {
streamId,
deviceId
});
}
/**
* @~english
* @brief Get capture device of the stream.
* @param streamId Stream ID.
* @return
* - Empty: Failure, the streamId is not found.
* - Others: The capture device ID.
* @~chinese
* @brief 获取视频流的采集设备。
* @param streamId 视频流 ID。
* @return
* - 空字符串:失败,streamId未找到或其他错误。
* - 非空字符串:成功,返回采集设备ID。
*/
getCaptureDevice(streamId) {
return RtcVideoStreamManager._callMethod('getCaptureDevice', {
streamId
});
}
/**
* @~english
* @brief Start video.
* @param streamId video stream ID.
* @param profileType video profile type.
* @return
* - ResultCode.OK: Success.
* - Others: Failure.
* @note Please join one channel before starting video, otherwise it will fail.
* @~chinese
* @brief 开启视频。
* @param streamId 视频流 ID。
* @param profileType 视频分辨率。
* @return
* - ResultCode.OK:成功。
* - 其他:失败。
* @note 开启视频前请先加入一个频道,否则将返回失败。
*/
startVideo(streamId, view, config = new _Objects.RtcRenderConfig()) {
if (view.current === undefined) {
return Promise.resolve(_Enums.ResultCode.InvalidArgs);
} else {
return view.current._callMethod('startVideoWithStreamId', {
streamId,
config
});
}
}
/**
* @~english
* @brief Stop video stream.
* @param streamId Stream ID.
* @return
* - ResultCode.OK: Success.
* - Others: Failure.
* @~chinese
* @brief 关闭视频流。
* @param streamId 视频流 ID。
* @return
* - ResultCode.OK: 调用成功。
* - 其他:调用失败。
*/
stopVideo(streamId) {
return RtcVideoStreamManager._callMethod('stopVideo', {
streamId
});
}
/**
* @~english
* @brief Pause video stream.
* @param streamId Stream ID.
* @return
* - ResultCode.OK: Success.
* - Others: Failure.
* @note Please start the video stream before pausing, otherwise it will not work.
* @~chinese
* @brief 暂停视频流。
* @param streamId 视频流 ID。
* @return
* - ResultCode.OK: 成功。
* - 其他:失败。
* @note 暂停视频流前请先开启视频流,否则操作将无效。
*/
muteVideo(streamId) {
return RtcVideoStreamManager._callMethod('muteVideo', {
streamId
});
}
/**
* @~english
* @brief Resume video stream.
* @param streamId Stream ID.
* @return
* - ResultCode.OK: Success.
* - Others: Failure.
* @note Please start the video stream before resuming, otherwise it will not work.
* @~chinese
* @brief 恢复视频。
* @param streamId 视频流 ID。
* @return
* - ResultCode.OK: 成功。
* - 其他:失败。
* @note 恢复视频流前请先开启视频流,否则操作将无效。
*/
unmuteVideo(streamId) {
return RtcVideoStreamManager._callMethod('unmuteVideo', {
streamId
});
}
/**
* @~english
* @brief Subscribe to a user's video stream with render window.
* @param userId The user ID defined by customer.
* @param streamId Stream ID.
* @param profile video profile type.
* @return
* - ResultCode.OK: Success.
* - Others: Failure.
* @note Before subscribing to a user’s video stream, please make sure the user has started the video stream.
* @~chinese
* @brief 订阅用户的视频流, 并设置渲染窗口。
* @param userId 客户定义的用户标识。
* @param streamId 视频流 ID。
* @param profile 视频分辨率。
* @return
* - ResultCode.OK: 成功。
* - 其他:失败。
* @note 订阅用户的视频流前,请确保用户已开启视频流。
*/
subscribeVideo(userId, streamId, view, config = new _Objects.RtcRenderConfig()) {
if (view.current === undefined) {
return Promise.resolve(_Enums.ResultCode.InvalidArgs);
} else {
return view.current._callMethod('subscribeVideoWithStreamId', {
userId,
streamId,
config
});
}
}
/**
* @~english
* @brief Unsubscribe to a user's video stream.
* @param userId The user ID defined by customer.
* @param streamId Stream ID.
* @return
* - ResultCode.OK: Success.
* - Others: Failure.
* @note When a user stops the video or leaves the channel, the user's video will be automatically unsubscribed.
* @~chinese
* @brief 取消订阅用户的视频。
* @param userId 客户定义的用户标识。
* @param streamId 视频流 ID。
* @return
* - ResultCode.OK: 成功。
* - 其他:失败。
* @note 当用户停止视频流或者离开频道的时候,用户的视频流将会被自动取消订阅。
*/
unsubscribeVideo(userId, streamId) {
return RtcVideoStreamManager._callMethod('unsubscribeVideo', {
userId,
streamId
});
}
/**
* @~english
* @brief Capture specific user's video stream content.
* @param userId the id of target user.
* @param streamId the video stream ID.
* @param outputDir output directory.
* @param option snapshot option.
* @return
* - ResultCode.OK: Success.
* - Others: Failure.
* @~chinese
* @brief 捕获指定用户的视频流画面。
* @param userId 目标用户的 ID。
* @param streamId 视频流 ID。
* @param outputDir 输出路径。
* @param option 快照选项。
* @return
* - ResultCode.OK: 成功。
* - 其他:失败。
*/
snapshotVideo(userId, streamId, outputDir, option = new _Objects.RtcSnapshotVideoOption()) {
return RtcVideoStreamManager._callMethod('snapshotVideo', {
userId,
streamId,
outputDir,
option
});
}
}
/**
* @ignore
*/
exports.default = RtcVideoStreamManager;
//# sourceMappingURL=RtcVideoStreamManager.native.js.map
;