音视频观测器

  • C++

更新时间不可用

registerAudioFrameObserver [1/2]

注册一个 IAudioPcmFrameSink 音频帧观察者对象。

C++
virtual int registerAudioFrameObserver(media::IAudioPcmFrameSink* observer) = 0;

你需要实现 IAudioPcmFrameSink 类,并根据业务场景注册回调。注册成功后,每当接收到音频帧时,SDK 会触发对应的回调。

参数

参数名描述
observer

音频帧观察者对象,详见 IAudioPcmFrameSink。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。
  • < 0:方法调用失败。详见错误码了解详情和解决建议。

所属接口类

registerAudioFrameObserver [2/2]

注册音频帧观测器对象。

C++
virtual int registerAudioFrameObserver(media::IAudioPcmFrameSink* observer, RAW_AUDIO_FRAME_OP_MODE_TYPE mode) = 0;

参数

参数名描述
observer

音频帧观测器对象。详见 IAudioPcmFrameSink。

mode

音频帧的使用模式。详见 RAW_AUDIO_FRAME_OP_MODE_TYPE。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。
  • < 0:方法调用失败。详见错误码了解详情和解决建议。

所属接口类

registerPlayerSourceObserver

注册媒体播放器观察器。

C++
virtual int registerPlayerSourceObserver(IMediaPlayerSourceObserver* observer) = 0;

用于监听播放过程中的事件。

调用时机

该方法可以在加入频道前或加入频道后调用。

参数

参数名描述
observer

用于监听播放过程中的事件。详见 IMediaPlayerSourceObserver。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。
  • < 0:方法调用失败。详见错误码了解详情和解决建议。

所属接口类

registerVideoFrameObserver

注册视频帧观察器对象。

C++
virtual int registerVideoFrameObserver(media::base::IVideoFrameObserver* observer) = 0;

你需要实现 IVideoFrameObserver 类,并根据你的使用场景注册回调。成功注册视频帧观察器后,SDK 每次接收到视频帧时都会触发已注册的回调。

参数

参数名描述
observer

视频帧观察器。详见 IVideoFrameObserver。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。
  • < 0:方法调用失败。详见错误码了解详情和解决建议。

所属接口类

unregisterAudioFrameObserver

取消注册音频帧观察器。

C++
virtual int unregisterAudioFrameObserver(media::IAudioPcmFrameSink* observer) = 0;

参数

参数名描述
observer

音频帧观察器。详见 IAudioPcmFrameSink。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。
  • < 0:方法调用失败。详见错误码了解详情和解决建议。

所属接口类

unregisterPlayerSourceObserver

释放媒体播放器观察者。

C++
virtual int unregisterPlayerSourceObserver(IMediaPlayerSourceObserver* observer) = 0;

参数

参数名描述
observer

媒体播放器观察者,用于监听播放过程中的事件。详见 IMediaPlayerSourceObserver。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。
  • < 0:方法调用失败。详见错误码了解详情和解决建议。

所属接口类

unregisterVideoFrameObserver

取消注册视频帧观察器。

C++
virtual int unregisterVideoFrameObserver(agora::media::base::IVideoFrameObserver* observer) = 0;

参数

参数名描述
observer

视频帧观察器。详见 IVideoFrameObserver。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。
  • < 0:方法调用失败。详见错误码了解详情和解决建议。

所属接口类

onAudioVolumeIndication

报告媒体播放器音量的回调。

C++
virtual void onAudioVolumeIndication(int volume) = 0;

该回调每 200 毫秒触发一次。

参数

参数名描述
volume

媒体播放器的音量,取值范围为 0 到 255。

表格内容超出当前宽度,可横向滚动查看更多列。

所属接口类

onFrame

onFrame 回调。每次播放器接收到音频帧时触发。

C++
virtual void onFrame(agora::media::base::AudioPcmFrame* frame) = 0;

注册音频帧观察器后,每次播放器接收到音频帧时,都会触发该回调,并报告该音频帧的详细信息。

触发时机

每次播放器接收到音频帧时触发。

参数

参数名描述
frame

音频帧信息,详见 AudioPcmFrame。

表格内容超出当前宽度,可横向滚动查看更多列。

所属接口类

onMetaData [1/2]

接收到媒体元数据时触发的回调。

C++
virtual void onMetaData(const void* data, int length) = 0;

该回调在播放器接收到媒体元数据时触发。

参数

参数名描述
data

媒体元数据的详细数据。

length

数据长度,单位为字节。

表格内容超出当前宽度,可横向滚动查看更多列。

所属接口类

onPlayBufferUpdated

报告缓冲数据可支持的播放时长。

C++
virtual void onPlayBufferUpdated(int64_t playCachedBuffer) = 0;

当播放在线媒体资源时,SDK 每两秒触发一次该回调,用于报告当前缓冲数据可支持的播放时长。

  • 当缓冲数据可支持的播放时长小于阈值(默认值为 0)时,SDK 返回 PLAYER_EVENT_BUFFER_LOW(6)。
  • 当缓冲数据可支持的播放时长大于阈值(默认值为 0)时,SDK 返回 PLAYER_EVENT_BUFFER_RECOVER(7)。

触发时机

播放在线媒体资源时,SDK 每两秒触发一次该回调。

参数

参数名描述
playCachedBuffer

缓冲数据可支持的播放时长,单位为毫秒。

表格内容超出当前宽度,可横向滚动查看更多列。

所属接口类

onPlayerEvent

播放器事件回调。

C++
virtual void onPlayerEvent(media::base::MEDIA_PLAYER_EVENT eventCode, int64_t elapsedTime, const char* message) = 0;

调用 seek 方法后,SDK 会触发该回调报告 seek 操作的结果。

参数

参数名描述
eventCode

播放器事件,详见 MEDIA_PLAYER_EVENT。

elapsedTime

事件发生的时间,单位为毫秒。

message

事件的相关信息。

表格内容超出当前宽度,可横向滚动查看更多列。

所属接口类

onPlayerInfoUpdated [1/2]

onPlayerInfoUpdated 回调:当媒体播放器信息发生变化时触发。

C++
virtual void onPlayerInfoUpdated(const media::base::PlayerUpdatedInfo& info) = 0;

你可以通过该回调获取媒体播放器信息的变化,用于故障排查。

参数

参数名描述
info

媒体播放器相关信息。详见 PlayerUpdatedInfo。

表格内容超出当前宽度,可横向滚动查看更多列。

所属接口类

onPlayerSourceStateChanged

播放状态变化回调。

C++
virtual void onPlayerSourceStateChanged(media::base::MEDIA_PLAYER_STATE state, media::base::MEDIA_PLAYER_REASON reason) = 0;

当媒体播放器状态发生变化时,SDK 会触发该回调报告当前播放状态。

参数

参数名描述
state

播放状态。详见 MEDIA_PLAYER_STATE。

reason

播放状态变化的原因。详见 MEDIA_PLAYER_REASON。

表格内容超出当前宽度,可横向滚动查看更多列。

所属接口类

onPlayerSrcInfoChanged

媒体资源视频码率发生变化时触发的回调。

C++
virtual void onPlayerSrcInfoChanged(const media::base::SrcInfo& from, const media::base::SrcInfo& to) = 0;

参数

参数名描述
from

正在播放的媒体资源的视频码率信息。详见 SrcInfo。

to

变更后的视频码率信息。详见 SrcInfo。

表格内容超出当前宽度,可横向滚动查看更多列。

所属接口类

onPositionChanged

播放进度发生变化回调。

C++
virtual void onPositionChanged(int64_t positionMs, int64_t timestampMs) = 0;

该回调在播放媒体文件时每两秒触发一次,用于报告当前播放进度。

参数

参数名描述
positionMs

媒体文件的播放位置,单位为毫秒。

timestampMs

当前播放进度对应的 NTP 时间戳,单位为毫秒。

注: 该参数仅在频道内生效。

表格内容超出当前宽度,可横向滚动查看更多列。

所属接口类

onPreloadEvent

预加载媒体资源事件回调。

C++
virtual void onPreloadEvent(const char* src, media::base::PLAYER_PRELOAD_EVENT event) = 0;

参数

参数名描述
src

媒体资源的 URL。

event

预加载媒体资源时触发的事件,详见 PLAYER_PRELOAD_EVENT。

表格内容超出当前宽度,可横向滚动查看更多列。

所属接口类

onReadData

SDK 读取媒体资源数据时触发的回调。

C++
virtual int onReadData(unsigned char *buffer, int bufferSize) = 0;

当你调用 openWithMediaSource 方法打开媒体资源时,SDK 会触发该回调,并请求你传入媒体资源数据的缓冲区。

参数

参数名描述
buffer

输出参数,表示数据缓冲区(字节)。你需要将 SDK 请求的 bufferSize 大小的数据写入该缓冲区。

bufferSize

数据缓冲区的长度(字节)。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 如果数据读取成功,返回实际读取的数据长度(字节)。
  • 如果读取失败,返回 0。

所属接口类