jiuyiUniapp/jiuyi2/node_modules/agora-rtc-sdk-ng/services/live-streaming/index.d.ts

336 lines
10 KiB
TypeScript
Raw Normal View History

2024-12-18 15:46:27 +08:00
import { UID, RTMConfiguration, TurnServerConfigWithMode, CloudProxyServerMode, EncryptionMode, EventEmitter, RetryConfiguration } from '@agora-js/shared';
import { RemoteStreamType } from '@agora-js/media';
import { AgoraRTCError } from '@agora-js/report';
declare enum LiveStreamingServiceMode {
TRANSCODE = "mix_streaming",
RAW = "raw_streaming"
}
/**
* Configurations for the watermark and background images to put on top of the video in [LiveStreamingTranscodingConfig]{@link LiveStreamingTranscodingConfig}.
*/
interface LiveStreamingTranscodingImage {
/**
* The HTTP/HTTPS URL address of the image on the video.
*
* Supports online PNG only.
*/
url: string;
/**
* The horizontal distance (pixel) between the image's top-left corner and the video's top-left corner.
*
* The default value is `0`.
*/
x?: number;
/**
* The vertical distance (pixel) between the image's top-left corner and the video's top-left corner.
*
* The default value is `0`.
*/
y?: number;
/**
* The width (pixel) of the image.
*
* The default value is `160`.
*/
width?: number;
/**
* The height (pixel) of the image.
*
* The default value is `160`.
*/
height?: number;
/**
* The transparency level of the image.
*
* The value range is [0.0,1.0]:
* - 0.0: Completely transparent.
* - 1.0: (Default) Opaque.
*/
alpha?: number;
}
/**
* The configurations for CDN live stream transcoding. To be used when you call [setLiveTranscoding]{@link IAgoraRTCClient.setLiveTranscoding}.
*/
interface LiveStreamingTranscodingConfig {
/**
* The audio bitrate (Kbps) of the CDN live stream.
*
* A positive integer. The default value is 48, and the highest value is 128.
*/
audioBitrate?: number;
/**
* The number of audio channels for the CDN live stream.
*
* Agora recommends choosing 1 (mono), or 2 (stereo) audio channels. Special players are required if you choose 3, 4, or 5.
*
* - 1: (Default) Mono
* - 2: Stereo
* - 3: Three audio channels
* - 4: Four audio channels
* - 5: Five audio channels
*/
audioChannels?: 1 | 2 | 3 | 4 | 5;
/**
* The audio sampling rate:
*
* - 32000: 32 kHz
* - 44100: 44.1 kHz
* - 48000: (Default) 48 kHz
*/
audioSampleRate?: 32000 | 44100 | 48000;
/**
* The background color in RGB hex.
*
* Value only. Do not include a preceding #. The default value is 0x000000.
*/
backgroundColor?: number;
/**
* The height of the video in pixels.
*
* A positive integer, the default value is 360.
*
* - When pushing video streams to the CDN, ensure that `height` is at least 64; otherwise, the Agora server adjusts the value to 64.
* - When pushing audio streams to the CDN, set `width` and `height` as 0.
*/
height?: number;
/**
* The width of the video in pixels.
*
* A positive integer, the default value is 640.
*
* - When pushing video streams to the CDN, ensure that `width` is at least 64; otherwise, the Agora server adjusts the value to 64.
* - When pushing audio streams to the CDN, set `width` and `height` as 0.
*/
width?: number;
/**
* @ignore
*/
lowLatency?: boolean;
/**
* The bitrate (Kbps) of the output video stream.
*
* The default value is 400.
*/
videoBitrate?: number;
/**
* The video codec profile type.
*
* Set it as `66`, `77`, or `100` (default). If you set this parameter to any other value, the Agora server adjusts it to the default value `100`.
*
* - `66`: Baseline video codec profile. Generally used for video calls on mobile phones.
* - `77`: Main video codec profile. Generally used for mainstream electronic devices, such as MP4 players, portable video players, PSP, and iPads.
* - `100`: (Default) High video codec profile. Generally used for high-resolution broadcasts or television.
*/
videoCodecProfile?: 66 | 77 | 100;
/**
* The video frame rate (fps) of the CDN live stream.
*
* The default value is 15. The Agora server adjusts any value over 30 to 30.
*/
videoFrameRate?: number;
/**
* The video GOP in frames.
*
* The default value is 30.
*/
videoGop?: number;
/**
* @deprecated
*
* Watermark images for the CDN live stream.
*/
images?: LiveStreamingTranscodingImage[];
/**
* Watermark image for the CDN live stream.
*/
watermark?: LiveStreamingTranscodingImage;
/**
* Background image for the CDN live stream.
*/
backgroundImage?: LiveStreamingTranscodingImage;
/**
* Manages the user layout configuration in the CDN live streaming.
*
* Agora supports a maximum of 17 transcoding users in a CDN streaming channel.
*/
transcodingUsers?: LiveStreamingTranscodingUser[];
userConfigExtraInfo?: string;
}
/**
* Manages the user layout configuration in [LiveStreamingTranscodingConfig]{@link LiveStreamingTranscodingConfig}.
*/
interface LiveStreamingTranscodingUser {
/**
* The transparency level of the user's video.
*
* The value ranges between 0.0 and 1.0:
*
* - 0.0: Completely transparent.
* - 1.0: (Default) Opaque.
*/
alpha?: number;
/**
* The height of the video.
*
* The default value is 640.
*/
height?: number;
/**
* The user ID of the CDN live host.
*/
uid: UID;
/**
* The width of the video.
*
* The default value is 360.
*/
width?: number;
/**
* The position of the top-left corner of the video on the horizontal axis.
*
* The default value is 0.
*/
x?: number;
/**
* The position of the top-left corner of the video on the vertical axis.
*
* The default value is 0.
*/
y?: number;
/**
* The layer index of the video frame.
*
* An integer. The value range is [0,100].
*
* - 0: (Default) Bottom layer.
* - 100: Top layer.
*/
zOrder?: number;
/**
* The audio channel ranging between 0 and 5. The default value is 0.
* - 0: (default) Supports dual channels. Depends on the upstream of the broadcaster.
* - 1: The audio stream of the broadcaster uses the FL audio channel. If the broadcasters upstream uses multiple audio channels, these channels are mixed into mono first.
* - 2: The audio stream of the broadcaster uses the FC audio channel. If the broadcasters upstream uses multiple audio channels, these channels are mixed into mono first.
* - 3: The audio stream of the broadcaster uses the FR audio channel. If the broadcasters upstream uses multiple audio channels, these channels are mixed into mono first.
* - 4: The audio stream of the broadcaster uses the BL audio channel. If the broadcasters upstream uses multiple audio channels, these channels are mixed into mono first.
* - 5: The audio stream of the broadcaster uses the BR audio channel. If the broadcasters upstream uses multiple audio channels, these channels are mixed into mono first.
*/
audioChannel?: number;
}
interface ServerAddress {
ip: string;
port: number;
fingerprint?: string;
domain_prefix?: string;
ticket: string;
}
interface ChooseServerResponse {
code: number;
addresses: ServerAddress[];
server_ts: number;
uid: number;
cid: number;
cert: string;
detail?: {
[id: number]: string;
candidate?: string;
};
cname?: string;
flag?: number;
opid?: number;
}
interface GatewayAddress {
ip?: string;
ip6?: string;
port?: number;
address: string;
}
interface MultiIpOptions {
gateway_ip: string;
uni_lbs_ip: string;
}
interface JoinInfo extends Partial<RTMConfiguration> {
clientId: string;
appId: string;
sid: string;
cname: string;
turnServer: TurnServerConfigWithMode;
proxyServer?: string;
token: string;
cloudProxyServer: CloudProxyServerMode;
uid?: number | null;
stringUid?: string;
aespassword?: string;
aessalt?: string;
aesmode?: EncryptionMode;
multiIP?: MultiIpOptions;
optionalInfo?: string;
appScenario?: string;
useLocalAccessPoint: boolean;
apUrl?: string;
defaultVideoStream?: RemoteStreamType;
license?: string;
setLocalAPVersion?: number;
preload?: boolean;
apRequestDetail?: string;
}
interface JoinInfoWithUID extends JoinInfo {
uid: number;
}
interface JoinInfoWithAPResponse extends JoinInfo {
cid: number;
uid: number;
vid?: string;
apResponse: ChooseServerResponse;
apGatewayAddress?: GatewayAddress;
gatewayAddrs: GatewayAddress[];
uni_lbs_ip?: string;
}
declare class AgoraRTCLiveStreamingClient extends EventEmitter {
onLiveStreamWarning?: (url: string, err: AgoraRTCError) => void;
onLiveStreamError?: (url: string, err: AgoraRTCError) => void;
spec: JoinInfoWithUID;
private retryTimeout;
private connection?;
private httpRetryConfig;
private wsRetryConfig;
private isStartingStreamingTask;
private taskMutex;
private cancelToken;
private transcodingConfig?;
private uapResponse?;
private lastTaskId;
private statusError;
constructor(spec: JoinInfoWithUID, wsRetryConfig?: RetryConfiguration, httpRetryConfig?: RetryConfiguration);
setTranscodingConfig(transcodingConfig: LiveStreamingTranscodingConfig): Promise<void>;
startLiveStreamingTask(rtmp: string, mode: LiveStreamingServiceMode, retryError?: AgoraRTCError): Promise<void>;
stopLiveStreamingTask(url: string): Promise<void>;
resetAllTask(): void;
terminate(): void;
private connect;
private handlePublishStreamServer;
hasUrl(url: string): boolean;
}
type TRteServiceName = "ChannelMediaRelay" | "LiveStreaming" | "ImageModeration" | "ContentInspect" | "DataStream";
interface IRteService<T = any> {
name: TRteServiceName;
create: (...args: any[]) => T;
update?: (...args: any[]) => Promise<void> | void;
destroy?: (...args: any[]) => Promise<void> | void;
}
interface ILiveStreamingOptions {
joinInfo: JoinInfoWithAPResponse;
appId: string;
websocketRetryConfig?: RetryConfiguration;
httpRetryConfig?: RetryConfiguration;
}
declare const LiveStreamingService: IRteService<AgoraRTCLiveStreamingClient>;
export { AgoraRTCLiveStreamingClient, type ILiveStreamingOptions, LiveStreamingService };