音视频观测器
registerAudioFrameObserver [1/2]
注册一个 IAudioPcmFrameSink 音频帧观察者对象。
virtual int registerAudioFrameObserver(media::IAudioPcmFrameSink* observer) = 0;
你需要实现 IAudioPcmFrameSink 类,并根据业务场景注册回调。注册成功后,每当接收到音频帧时,SDK 会触发对应的回调。
参数
- observer
- 音频帧观察者对象,详见 IAudioPcmFrameSink。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
registerAudioFrameObserver [2/2]
注册音频帧观测器对象。
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
注册媒体播放器观察器。
virtual int registerPlayerSourceObserver(IMediaPlayerSourceObserver* observer) = 0;
用于监听播放过程中的事件。
调用时机
该方法可以在加入频道前或加入频道后调用。
参数
- observer
- 用于监听播放过程中的事件。详见 IMediaPlayerSourceObserver。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
registerVideoFrameObserver
注册视频帧观察器对象。
virtual int registerVideoFrameObserver(media::base::IVideoFrameObserver* observer) = 0;
你需要实现 IVideoFrameObserver 类,并根据你的使用场景注册回调。成功注册视频帧观察器后,SDK 每次接收到视频帧时都会触发已注册的回调。
参数
- observer
- 视频帧观察器。详见 IVideoFrameObserver。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
unregisterAudioFrameObserver
取消注册音频帧观察器。
virtual int unregisterAudioFrameObserver(media::IAudioPcmFrameSink* observer) = 0;
参数
- observer
- 音频帧观察器。详见 IAudioPcmFrameSink。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
unregisterPlayerSourceObserver
释放媒体播放器观察者。
virtual int unregisterPlayerSourceObserver(IMediaPlayerSourceObserver* observer) = 0;
参数
- observer
- 媒体播放器观察者,用于监听播放过程中的事件。详见 IMediaPlayerSourceObserver。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
unregisterVideoFrameObserver
取消注册视频帧观察器。
virtual int unregisterVideoFrameObserver(agora::media::base::IVideoFrameObserver* observer) = 0;
参数
- observer
- 视频帧观察器。详见 IVideoFrameObserver。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
onAudioVolumeIndication
报告媒体播放器音量的回调。
virtual void onAudioVolumeIndication(int volume) = 0;
该回调每 200 毫秒触发一次。
参数
- volume
- 媒体播放器的音量,取值范围为 0 到 255。
onFrame
onFrame 回调。每次播放器接收到音频帧时触发。
virtual void onFrame(agora::media::base::AudioPcmFrame* frame) = 0;
注册音频帧观察器后,每次播放器接收到音频帧时,都会触发该回调,并报告该音频帧的详细信息。
触发时机
每次播放器接收到音频帧时触发。
参数
- frame
- 音频帧信息,详见 AudioPcmFrame。
onMetaData [1/2]
接收到媒体元数据时触发的回调。
virtual void onMetaData(const void* data, int length) = 0;
该回调在播放器接收到媒体元数据时触发。
参数
- data
- 媒体元数据的详细数据。
- length
- 数据长度,单位为字节。
onPlayBufferUpdated
报告缓冲数据可支持的播放时长。
virtual void onPlayBufferUpdated(int64_t playCachedBuffer) = 0;
- 当缓冲数据可支持的播放时长小于阈值(默认值为 0)时,SDK 返回
PLAYER_EVENT_BUFFER_LOW(6)。 - 当缓冲数据可支持的播放时长大于阈值(默认值为 0)时,SDK 返回
PLAYER_EVENT_BUFFER_RECOVER(7)。
触发时机
播放在线媒体资源时,SDK 每两秒触发一次该回调。
参数
- playCachedBuffer
- 缓冲数据可支持的播放时长,单位为毫秒。
onPlayerEvent
播放器事件回调。
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 回调:当媒体播放器信息发生变化时触发。
virtual void onPlayerInfoUpdated(const media::base::PlayerUpdatedInfo& info) = 0;
你可以通过该回调获取媒体播放器信息的变化,用于故障排查。
参数
- info
- 媒体播放器相关信息。详见 PlayerUpdatedInfo。
onPlayerSourceStateChanged
播放状态变化回调。
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
媒体资源视频码率发生变化时触发的回调。
virtual void onPlayerSrcInfoChanged(const media::base::SrcInfo& from, const media::base::SrcInfo& to) = 0;
参数
所属接口类onPositionChanged
播放进度发生变化回调。
virtual void onPositionChanged(int64_t positionMs, int64_t timestampMs) = 0;
该回调在播放媒体文件时每两秒触发一次,用于报告当前播放进度。
参数
- positionMs
- 媒体文件的播放位置,单位为毫秒。
- timestampMs
- 当前播放进度对应的 NTP 时间戳,单位为毫秒。
onPreloadEvent
预加载媒体资源事件回调。
virtual void onPreloadEvent(const char* src, media::base::PLAYER_PRELOAD_EVENT event) = 0;
参数
- src
- 媒体资源的 URL。
- event
- 预加载媒体资源时触发的事件,详见 PLAYER_PRELOAD_EVENT。
onReadData
SDK 读取媒体资源数据时触发的回调。
virtual int onReadData(unsigned char *buffer, int bufferSize) = 0;
当你调用 openWithMediaSource 方法打开媒体资源时,SDK 会触发该回调,并请求你传入媒体资源数据的缓冲区。
参数
- buffer
- 输出参数,表示数据缓冲区(字节)。你需要将 SDK 请求的
bufferSize大小的数据写入该缓冲区。 - bufferSize
- 数据缓冲区的长度(字节)。
返回值
- 如果数据读取成功,返回实际读取的数据长度(字节)。
- 如果读取失败,返回 0。