@pano.video/panortc-react-native-sdk
Version:
PanoRtc SDK For React Native
253 lines (252 loc) • 10.2 kB
TypeScript
import type { RefObject } from 'react';
import { ResultCode } from './Enums';
import { RtcRenderConfig, RtcSnapshotVideoOption } from './Objects';
import type { RtcVideoStreamManagerEventHandler, Subscription } from './RtcEvents';
import type { RtcSurfaceView } from './RtcRenderView.native';
/**
* The {@link RtcVideoStreamManager} class.
*/
export default class RtcVideoStreamManager implements RtcVideoStreamManagerInterface {
/**
* @ignore
*/
private _listeners;
/**
* @ignore
*/
private static _callMethod;
destroy(): void;
/**
* 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<EventType extends keyof RtcVideoStreamManagerEventHandler>(event: EventType, listener: RtcVideoStreamManagerEventHandler[EventType]): Subscription;
/**
* 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<EventType extends keyof RtcVideoStreamManagerEventHandler>(event: EventType, listener: RtcVideoStreamManagerEventHandler[EventType]): void;
/**
* Removes all the [`RtcVideoStreamManagerEventHandler`]{@link RtcVideoStreamManagerEventHandler} handlers.
* @param event The event type.
*/
removeAllListeners<EventType extends keyof RtcVideoStreamManagerEventHandler>(event?: EventType): void;
/**
* @~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: string): Promise<number>;
/**
* @~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: number): Promise<ResultCode>;
/**
* @~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: number, deviceId: string): Promise<ResultCode>;
/**
* @~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: number): Promise<string>;
/**
* @~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: number, view: RefObject<RtcSurfaceView>, config?: RtcRenderConfig): Promise<ResultCode>;
/**
* @~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: number): Promise<ResultCode>;
/**
* @~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: number): Promise<ResultCode>;
/**
* @~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: number): Promise<ResultCode>;
/**
* @~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: string, streamId: number, view: RefObject<RtcSurfaceView>, config?: RtcRenderConfig): Promise<ResultCode>;
/**
* @~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: string, streamId: number): Promise<ResultCode>;
/**
* @~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: string, streamId: number, outputDir: string, option?: RtcSnapshotVideoOption): Promise<ResultCode>;
}
/**
* @ignore
*/
interface RtcVideoStreamManagerInterface {
createVideoStream(deviceId: string): Promise<number>;
destroyVideoStream(streamId: number): Promise<ResultCode>;
setCaptureDevice(streamId: number, deviceId: string): Promise<ResultCode>;
getCaptureDevice(streamId: number): Promise<string>;
startVideo(streamId: number, view: RefObject<RtcSurfaceView>, config?: RtcRenderConfig): Promise<ResultCode>;
stopVideo(streamId: number): Promise<ResultCode>;
muteVideo(streamId: number): Promise<ResultCode>;
unmuteVideo(streamId: number): Promise<ResultCode>;
subscribeVideo(userId: string, streamId: number, view: RefObject<RtcSurfaceView>, config?: RtcRenderConfig): Promise<ResultCode>;
unsubscribeVideo(userId: string, streamId: number): Promise<ResultCode>;
snapshotVideo(userId: string, streamId: number, outputDir: string, option?: RtcSnapshotVideoOption): Promise<ResultCode>;
}
export {};