实时音视频 RTC实时音视频 RTC

更新时间:2021/06/28 GMT+08:00
分享

本地流对象(LocalStream)

该对象继承自Stream对象,并有如下新增接口。

表1 LocalStream接口

接口

描述

initialize

本地流初始化。

setAudioProfile

设置音频流配置。

setVideoProfile

设置视频流配置。

setScreenProfile

设置共享流配置。

addResolution

对初始化后的本地流增加新的分辨率的视频。该接口为1.8.0版本新增。

removeResolution

对流删除视频指定分辨率的视频。该接口为1.8.0版本新增。

addTrack

为本地流对象添加音视频轨。

removeTrack

从本地流对象移除音视频轨。

replaceTrack

为本地流对象替换音视频轨。

switchDevice

切换媒体输入设备。

startAudioMixing

开始播放在线音频文件。

stopAudioMixing

停止播放在线音频文件。

pauseAudioMixing

暂停播放在线音频文件。

resumeAudioMixing

恢复播放在线音频文件。

getAudioMixingDuration

获取在线音频文件时长。

setAudioMixingVolume

设置在线音频音量大小。

setAudioMixingPosition

设置在线音频播放进度。

getAudioMixingCurrentPosition

获取在线音频播放进度。

bindScreenAudio2RelatedStream

绑定屏幕共享背景音至关联流对象。该接口为1.4.0版本新增。

initialize

initialize():  Promise<void>

功能说明

根据createStream入参StreamConfig,初始化本地音视频流对象。流只有初始化完成后才可以播放。

请求参数

返回参数

返回错误信息请参考表2 初始化错误信息列表

表2 初始化错误信息列表

错误原因

描述

处理措施

NotFoundError

找不到满足请求参数的媒体类型(包括:音频、视频、屏幕分享)。例如:PC没有摄像头,但是请求浏览器获取视频流,则会触发该错误。

建议在通话开始前引导用户检查通话所需的摄像头或麦克风等设备,若无摄像头设备且需要进行语音通话,可在创建本地流对象HRTC.createStream({ audio: true, video: false }) 指明仅采集麦克风。

NotAllowedError

未获得用户设备列表(摄像头、麦克风、屏幕共享)的授权。

提示用户不授权摄像头/麦克风访问无法进行音视频通话。

NotReadableError

尽管用户已经授权使用相应的设备,但是由于操作系统上某个硬件、浏览器或者网页层面发生的错误导致设备无法被访问。

根据浏览器的报错信息处理,并提示用户“暂时无法访问摄像头/麦克风,请确保当前没有其他应用请求访问摄像头/麦克风,并重试”。

OverConstrainedError

cameraId/microphoneId参数的值无效。

确保cameraId/microphoneId传值正确且有效。

AbortError

由于某些未知原因导致设备无法被使用。

-

setAudioProfile

setAudioProfile(profile: string|RTCAudioProfile):  void

功能说明

设置音频流采样率、声道和码率等配置。如果未调用该接口设置,则SDK设置为默认值。

请求参数

profile:必选,string类型或RTCAudioProfile类型。 若为string类型,则相关的采样率、声道数、码率如表3所示。 若为RTCAudioProfile类型,则需要根据实际情况进行配置,推荐使用已定义的profile,输入不合法时,默认使用"low"。
表3 profile对应的采样率、声道数和码率

profile

采样率(千赫兹/KHZ)

声道数

码率(Kbps)

low

16

1

24

standard

48

1

40

high

48

1

128

RTCVideoProfile类型定义为:{

  • sampleRate:可选,number类型,采样率。
  • channelCount:可选,number类型,音轨数。
  • bitrate:可选,number类型,码率,单位为bps。

}

返回参数

该方法需要在调用initialize之前调用。

setVideoProfile

setVideoProfile(profile: string|RTCVideoProfile,resolutionId?:string):  void

功能说明

设置视频主流配置,如分辨率、帧率和码率等。如果未调用该接口设置,则SDK设置默认值。如果该流已经发布,则该流会自动重新发布到远端。

请求参数

  • profile:必选,string类型或RTCVideoProfile类型。 若为string类型,则相关的分辨率、帧率和码率如表4。 若为RTCVideoProfile类型,则需要根据实际情况进行配置,推荐使用已定义的“profile”。输入不合法时,默认使用"360p_2"。
    表4 profile对应的分辨率、帧率和码率

    profile

    分辨率

    帧率

    最小码率(Kbps)

    最大码率(Kbps)

    90p_1

    160 x 90

    15

    64

    110

    90p_2

    120 x 90

    15

    64

    110

    120p_1

    160 x 120

    15

    64

    120

    120p_2

    120 x 120

    15

    64

    110

    180p_1

    320 x 180

    15

    80

    320

    180p_2

    240 x 180

    15

    80

    170

    180p_3

    180 x 180

    15

    64

    130

    240p_1

    320 x 240

    15

    100

    400

    240p_2

    240 x 240

    15

    80

    320

    270p_1

    480 x 270

    15

    160

    600

    300p_1

    400 x 300

    15

    200

    500

    360p_1

    640 x 360

    15

    200

    800

    360p_2

    480 x 360

    15

    200

    700

    360p_3

    360 x 360

    15

    150

    600

    450p_1

    800 x 450

    15

    300

    950

    480p_1

    640 x 480

    15

    250

    900

    480p_2

    480 x 480

    15

    200

    800

    540p_1

    960 x 540

    15

    400

    1000

    630p_1

    1120 x 630

    15

    450

    1150

    720p_1

    1280 x 720

    15

    500

    1500

    720p_2

    960 x 720

    15

    450

    1100

  • resolutionId:可选,string类型。在双流场景下,指定要设置的分辨率id的视频,如果不指定,默认选择最高的分辨率的视频。该参数为1.8.0版本新增。

RTCVideoProfile类型定义为:

{

  • width:必选,number类型,分辨率的宽度,单位为pixel。
  • height:必选,number类型,分辨率的高度,单位为pixel。
  • frameRate:必选,number类型,视频帧率,单位为帧/秒。
  • minBitrate:必选,number类型,视频最小码率,单位为bps。
  • maxBitrate:必选,number类型,视频最大码率,单位为bps。

}

返回参数

setScreenProfile

setScreenProfile(profile: string|RTCScreenProfile):  void

功能说明

设置辅流配置,包括分辨率、帧率和码率等。如果未调用该接口设置,则SDK设置默认值。

请求参数

profile:必选,string类型或RTCScreenProfile类型。若为string类型,则相关分辨率、帧率、码率如表5。如果为RTCScreenProfile,则需要根据实际情况进行配置,推荐使用已定义的“profile”。输入不合法时,默认使用"720p"。

表5 profile对应的分辨率、帧率和码率

profile

分辨率

帧率

码率(Kbps)

720p

1280 x 720

15

1200

1080p

1920 x 1080

15

2000

RTCScreenProfile类型为: {

  • width:可选,number类型,分辨率的宽度,单位为pixel。
  • height:可选,number类型,分辨率的高度,单位为pixel。
  • frameRate:可选,number类型,视频帧率,单位为帧/秒。
  • bitrate:可选,number类型,视频码率,单位为bps。

}

返回参数

该方法需要在调用initialize之前调用。

addResolution

addResolution(profile: string|RTCVideoProfile):  promise<RTCVideoProfileInfo>

功能说明

为已经初始化的本地流对象添加指定分辨率的视频。若该本地流已经被发布,则该流会自动重新发布到远端。该接口为1.8.0版本新增。

请求参数

profile:必选,表示添加的分辨率视频的参数信息。类型说明参考setVideoProfile部分的说明

返回参数

RTCVideoProfileInfo类型。增加成功后resolution的profile信息。RTCVideoProfileInfo定义参考getStreamInfo接口定义。

当前对一个LocalStream最多可支持2个分辨率。

removeResolution

removeResolution(resolutionId: string):  promise<void>

功能说明

对本地流对象删除视频分辨率。若该本地流已经被发布,则该流会自动重新发布到远端。该接口为1.8.0版本新增。

请求参数

resolutionId:必选。string类型,指定要删除的视频的分辨率Id。

返回参数

addTrack

addTrack(track: MediaStreamTrack,resolutionId?:string ):  promise<void>

功能说明

为初始化后的本地流对象添加音视频轨。若该本地流已经被发布,则该流会自动重新发布到远端。

请求参数

  • track:必选,MediaStreamTrack类型。
  • resolutionId:可选,string类型。在双流主流场景下,指定分辨率id的视频,如果不指定,默认选择分辨率最高的视频增加track。该参数为1.8.0版本新增。

返回参数

如果分辨率的视频track已经存在,则不能重复添加。

removeTrack

removeTrack(track: MediaStreamTrack):  promise<void>

功能说明

从本地流对象移除音视频轨。若该本地流已经被发布,则该流会自动重新发布到远端。

请求参数

track:必选,MediaStreamTrack类型。

返回参数

replaceTrack

replaceTrack(track: MediaStreamTrack, type: "audio" | "video",resolutionId?:string):  promise<void>

功能说明

为初始化后的本地流对象替换音视频轨。若该本地流已经被发布,则该流会自动重新发布到远端。

请求参数

  • track:必选,MediaStreamTrack类型。
  • type:必选,string类型,"audio" | "video"。
  • resolutionId:可选,string类型。type为video的时候有效。指定要替换的分辨率id的视频,如果不指定,默认选择分辨率最高的视频。该参数为1.8.0版本新增。

返回参数

switchDevice

switchDevice(deviceType: "audio" | "video", deviceId: string): void

功能说明

切换媒体输入设备。若该本地流已经被发布,则会自动更新发布到远端的音视频流。

请求参数
  • deviceType:必选,string类型,"audio" | "video"。
  • deviceId:必选,string类型, 输入设备的设备ID。

返回参数

startAudioMixing

startAudioMixing(option: AudioMixOption): Promise<void>

功能说明

开始播放在线音频文件。

请求参数

option:必选,音频文件播放参数。参数类型为AudioMixOption。

AudioMixOption定义为: {

  • filePath:必选,类型为string,表示在线音频文件的下载路径。支持音频格式包括MP3、AAC以及浏览器支持的其他音频格式。
  • startTime:可选,类型number,表示音频文件开始播放的时间点,默认值为0。
  • replace:可选,类型为boolean,如果为true表示要用音频文件替换本地音频流,默认值为false。
  • loop:可选,类型为boolean,如果为true表示需要无限循环播放,默认值为false。
  • repeatCount:可选,类型为number,循环播放次数。如果为0,表示不重复播放,默认值为0。

}

loop设置为true时,repeatCount需要设置为0。

混音功能相关接口仅在publish接口调用成功后方可调用。

返回参数

stopAudioMixing

stopAudioMixing(): Promise<void>

功能说明

停止播放在线音频文件。

请求参数

返回参数

pauseAudioMixing

pauseAudioMixing(): Promise<void>

功能说明

暂停播放在线音频文件。

请求参数

返回参数

resumeAudioMixing

resumeAudioMixing(): Promise<void>

功能说明

恢复播放在线音频文件。

请求参数

返回参数

getAudioMixingDuration

getAudioMixingDuration(): number

功能说明

获取在线音频文件时长。单位为毫秒。

请求参数

返回参数

音频文件时长。

setAudioMixingVolume

setAudioMixingVolume(level: number): void

功能说明

设置在线音频音量大小。

请求参数

level:必选,表示音量大小。

返回参数

setAudioMixingPosition

setAudioMixingPosition(position: number): void

功能说明

设置在线音频播放进度。

请求参数

position:必选,表示进度,取值不能大于音频实际时长。单位为毫秒。

返回参数

getAudioMixingCurrentPosition

getAudioMixingCurrentPosition(): number

功能说明

获取在线音频播放进度。

请求参数

返回参数

当前音频播放进度。单位为毫秒。

bindScreenAudio2RelatedStream

bindScreenAudio2RelatedStream(bindStream: LocalStream, muteMainStreamAudio?: boolean): void

功能说明

绑定屏幕共享背景音至关联流对象。

请求参数

  • bindStream:必选,LocalStream类型, 创建并初始化成功的本地主流对象。
  • muteMainStreamAudio:可选,boolean类型, 主流音频是否静音,默认值为false。true表示主流音频静音,false表示主流音频不静音。

返回参数

  • 该接口仅由通过HRTC.createStream创建的辅流对象调用。
  • 屏幕共享背景音需要借助主流的音频通道发送,若想要订阅共享背景音,至少需要订阅主流音频。
  • 弹出的共享选择窗口,需要勾选左下角的共享音频复选框,否则屏幕共享背景音将无法共享。
  • 该功能仅支持Windows平台Chrome浏览器74及以上版本。
分享:

    相关文档

    相关产品