Copyright (c) 2021 Tencent. All rights reserved.
Module: V2TXLivePusherObserver @ TXLiteAVSDK
Function: 腾讯云直播推流的回调通知
功能
腾讯云直播的推流回调通知。
介绍
V2TXLivePusherObserver
V2TXLivePusherObserver
函数列表 | 描述 |
直播推流器错误通知,推流器出现错误时,会回调该通知 | |
直播推流器警告通知 | |
首帧音频采集完成的回调通知 | |
首帧视频采集完成的回调通知 | |
麦克风采集音量值回调 | |
推流器连接状态回调通知 | |
直播推流器统计数据回调 | |
截图回调 | |
本地采集并经过音频模块前处理、音效处理和混 BGM 后的音频数据回调 | |
自定义视频处理回调 | |
SDK 内部的 OpenGL 环境的销毁通知 | |
当屏幕分享开始时,SDK 会通过此回调通知 | |
当屏幕分享停止时,SDK 会通过此回调通知 | |
录制任务开始的事件回调 | |
录制任务正在进行中的进展事件回调 | |
录制任务已经结束的事件回调 | |
调用 enableVoiceActivityDetection 开启人声检测之后,当主播开始或结束说话时,会收到这个回调通知。 |
onError:message:extraInfo:
onError:message:extraInfo:
- (void)onError: | |
message: | (NSString *)msg |
extraInfo: | (NSDictionary *)extraInfo |
直播推流器错误通知,推流器出现错误时,会回调该通知
参数 | 描述 |
code | |
extraInfo | 扩展信息。 |
msg | 错误信息。 |
onWarning:message:extraInfo:
onWarning:message:extraInfo:
- (void)onWarning: | |
message: | (NSString *)msg |
extraInfo: | (NSDictionary *)extraInfo |
直播推流器警告通知
参数 | 描述 |
code | |
extraInfo | 扩展信息。 |
msg | 警告信息。 |
onCaptureFirstAudioFrame
onCaptureFirstAudioFrame
首帧音频采集完成的回调通知
onCaptureFirstVideoFrame
onCaptureFirstVideoFrame
首帧视频采集完成的回调通知
onMicrophoneVolumeUpdate:
onMicrophoneVolumeUpdate:
- (void)onMicrophoneVolumeUpdate: | (NSInteger)volume |
onPushStatusUpdate:message:extraInfo:
onPushStatusUpdate:message:extraInfo:
- (void)onPushStatusUpdate: | |
message: | (NSString *)msg |
extraInfo: | (NSDictionary *)extraInfo |
推流器连接状态回调通知
参数 | 描述 |
extraInfo | 扩展信息。 |
msg | 连接状态信息。 |
status |
onStatisticsUpdate:
onStatisticsUpdate:
- (void)onStatisticsUpdate: |
直播推流器统计数据回调
参数 | 描述 |
statistics |
onSnapshotComplete:
onSnapshotComplete:
- (void)onSnapshotComplete: | (nullable TXImage *)image |
onProcessAudioFrame:
onProcessAudioFrame:
- (void) onProcessAudioFrame: |
本地采集并经过音频模块前处理、音效处理和混 BGM 后的音频数据回调
当您设置完音频数据自定义回调之后,SDK 内部会把刚采集到并经过前处理、音效处理和混 BGM 之后的数据,在最终进行网络编码之前,以 PCM 格式的形式通过本接口回调给您。
此接口回调出的音频时间帧长固定为 0.02s,格式为 PCM 格式。
由时间帧长转化为字节帧长的公式为
采样率 × 时间帧长 × 声道数 × 采样点位宽
。 以 SDK 默认的音频录制格式 48000 采样率、单声道、16采样点位宽为例,字节帧长为
48000 × 0.02s × 1 × 16bit = 15360bit = 1920字节
。参数 | 描述 |
frame | PCM 格式的音频数据帧。 |
注意
1. 请不要在此回调函数中做任何耗时操作,由于 SDK 每隔 20ms 就要处理一帧音频数据,如果您的处理时间超过 20ms,就会导致声音异常。
2. 此接口回调出的音频数据是可读写的,也就是说您可以在回调函数中同步修改音频数据,但请保证处理耗时。
onProcessVideoFrame:dstFrame:
onProcessVideoFrame:dstFrame:
- (void)onProcessVideoFrame: | |
dstFrame: |
自定义视频处理回调
参数 | 描述 |
dstFrame | 用于承载处理过的视频画面。 |
srcFrame | 用于承载未处理的视频画面。 |
注意
【情况一】美颜组件会产生新的纹理
如果您使用的美颜组件会在处理图像的过程中产生一帧全新的纹理(用于承载处理后的图像),那请您在回调函数中将 dstFrame.textureId 设置为新纹理的 ID。
`ObjectiveC (void) onProcessVideoFrame:(V2TXLiveVideoFrame * _Nonnull)srcFrame dstFrame:(V2TXLiveVideoFrame * _Nonnull)dstFrame
{
GLuint dstTextureId = renderItemWithTexture(srcFrame.textureId, srcFrame.width, srcFrame.height);
dstFrame.textureId = dstTextureId;
return 0;
}
`【情况二】美颜组件并不自身产生新纹理
如果您使用的第三方美颜模块并不生成新的纹理,而是需要您设置给该模块一个输入纹理和一个输出纹理,则可以考虑如下方案:
`ObjectiveC (void) onProcessVideoFrame:(V2TXLiveVideoFrame * _Nonnull)srcFrame dstFrame:(V2TXLiveVideoFrame * _Nonnull)dstFrame
{
thirdparty_process(srcFrame.textureId, srcFrame.width, srcFrame.height, dstFrame.textureId);
return 0;
}
`onGLContextDestroyed
onGLContextDestroyed
SDK 内部的 OpenGL 环境的销毁通知
onSetMixTranscodingConfig:message:
onSetMixTranscodingConfig:message:
- (void)onSetMixTranscodingConfig: | |
message: | (NSString *)msg |
设置云端的混流转码参数的回调,对应于 {@link setMixTranscodingConfig} 接口
参数 | 描述 |
code | 0表示成功,其余值表示失败。 |
msg | 具体错误原因。 |
onScreenCaptureStarted
onScreenCaptureStarted
当屏幕分享开始时,SDK 会通过此回调通知
onScreenCaptureStopped:
onScreenCaptureStopped:
- (void)onScreenCaptureStopped: | (int)reason |
当屏幕分享停止时,SDK 会通过此回调通知
参数 | 描述 |
reason | 停止原因 0:表示用户主动停止。 1:iOS 表示录屏被系统中断;Mac、Windows 表示屏幕分享窗口被关闭。 2:Windows 表示屏幕分享的显示屏状态变更(如接口被拔出、投影模式变更等);其他平台不抛出。 |
onLocalRecordBegin:storagePath:
onLocalRecordBegin:storagePath:
- (void)onLocalRecordBegin: | (NSInteger)errCode |
storagePath: | (NSString *)storagePath |
录制任务开始的事件回调
参数 | 描述 |
code | 状态码。 0:录制任务启动成功。 -1:内部错误导致录制任务启动失败。 -2:文件后缀名有误(比如不支持的录制格式)。 -6:录制已经启动,需要先停止录制。 -7:录制文件已存在,需要先删除文件。 -8:录制目录无写入权限,请检查目录权限问题。 |
storagePath | 录制的文件地址。 |
onLocalRecording:storagePath:
onLocalRecording:storagePath:
- (void)onLocalRecording: | (NSInteger)durationMs |
storagePath: | (NSString *)storagePath |
录制任务正在进行中的进展事件回调
参数 | 描述 |
durationMs | 录制时长。 |
storagePath | 录制的文件地址。 |
onLocalRecordComplete:storagePath:
onLocalRecordComplete:storagePath:
- (void)onLocalRecordComplete: | (NSInteger)errCode |
storagePath: | (NSString *)storagePath |
录制任务已经结束的事件回调
参数 | 描述 |
code | 状态码。 0:结束录制任务成功。 -1:录制失败。 -2:切换分辨率或横竖屏导致录制结束。 -3:录制时间太短,或未采集到任何视频或音频数据,请检查录制时长,或是否已开启音、视频采集。 |
storagePath | 录制的文件地址。 |
onVoiceActivityDetectionUpdate:
onVoiceActivityDetectionUpdate:
- (void)onVoiceActivityDetectionUpdate: | (BOOL)active |
调用 {@link enableVoiceActivityDetection} 开启人声检测之后,当主播开始或结束说话时,会收到这个回调通知。
参数 | 描述 |
active | 人声开始或停止。 |