音视频观测器
AgoraRtcMediaPlayerGetVideoPixelFormat
设置媒体播放器输出的原始视频数据格式。
Objective-C
- (AgoraVideoFormat)AgoraRtcMediaPlayerGetVideoPixelFormat NS_SWIFT_NAME(AgoraRtcMediaPlayerGetVideoPixelFormat());
详情
你需要在调用 setVideoFrameDelegate: 方法时注册该回调。成功注册后,媒体播放器会在捕捉到每个视频帧时触发该回调,你需要在该回调的返回值中设置期望的视频数据格式。
返回值
设置媒体播放器输出的原始数据格式。详见 AgoraVideoFormat。
在默认情况下,原始视频像素格式 (AgoraVideoFormatDefault) 可能为 I420 或 CVPixelBufferRef。
AgoraRtcMediaPlayer:didReceivePixelBuffer:
获取视频源的像素缓冲区回调。
Objective-C
- (void)AgoraRtcMediaPlayer:(id<AgoraRtcMediaPlayerProtocol> _Nonnull)playerKit
didReceivePixelBuffer:(CVPixelBufferRef _Nonnull)pixelBuffer NS_SWIFT_NAME(AgoraRtcMediaPlayer(_:didReceivePixelBuffer:));
详情
当媒体播放器获取到视频源的像素缓冲区时会触发此回调,并报告 CVPixelBufferRef 类型的像素缓冲区的详细信息。你可以利用这些数据进行图像处理和分析、自定义渲染等。
参数
- playerKit
- pixelBuffer
- 一个 CVPixelBufferRef 对象,包含了像素缓冲区的详细信息。
rtcEngine:reportAudioVolumeIndicationOfSpeakers:totalVolume:
AgoraRtcMediaPlayer:didReceiveAudioFrame:
已获取音频帧回调。
Objective-C
- (void)AgoraRtcMediaPlayer:(id<AgoraRtcMediaPlayerProtocol> _Nonnull)playerKit
didReceiveAudioFrame:(AgoraAudioFrame* _Nonnull)audioFrame NS_SWIFT_NAME(AgoraRtcMediaPlayer(_:didReceiveAudioFrame:));
详情
注册音频数据观测器后,每次接收到一帧音频帧时,都会触发该回调,报告音频帧信息。
参数
- audioFrame
- 音频帧信息。详见 AgoraAudioFrame。
- playerKit
AgoraRtcMediaPlayer:didReceiveVideoFrame:
已获取视频帧回调。
Objective-C
- (void)AgoraRtcMediaPlayer:(id<AgoraRtcMediaPlayerProtocol> _Nonnull)playerKit
didReceiveVideoFrame:(AgoraOutputVideoFrame * _Nonnull)videoFrame NS_SWIFT_NAME(AgoraRtcMediaPlayer(_:didReceiveVideoFrame:));
详情
注册视频数据观测器后,每次接收到一帧视频帧时,都会触发该回调,报告视频帧信息。
参数
- playerKit
- videoFrame
- 视频帧信息,详见 AgoraOutputVideoFrame。
AgoraRtcMediaPlayer:didReceiveData:length:
AgoraRtcMediaPlayer:didPlayBufferUpdated:
报告当前缓冲数据能播放的时间。
Objective-C
- (void)AgoraRtcMediaPlayer:(id<AgoraRtcMediaPlayerProtocol> _Nonnull)playerKit
didPlayBufferUpdated:(NSInteger)playCachedBuffer NS_SWIFT_NAME(AgoraRtcMediaPlayer(_:didPlayBufferUpdated:));
详情
播放在线媒体资源的过程中,SDK 会每隔 1 秒触发一次该回调,报告当前缓冲的数据能支持的播放时间。
- 当缓冲数据支持的播放时间小于阈值(默认为 0)时,返回 AgoraMediaPlayerEventBufferLow (6)。
- 当缓冲数据支持的播放时间大于阈值(默认为 0)时,返回 AgoraMediaPlayerEventBufferRecover (7)。
参数
- playerKit
- playCachedBuffer
- 当前缓冲的数据能支持的播放时间 (毫秒)。
AgoraRtcMediaPlayer:didOccurEvent:elapsedTime:message:
报告播放器的事件。
Objective-C
(void)AgoraRtcMediaPlayer:(id<AgoraRtcMediaPlayerProtocol> _Nonnull)playerKit
didOccurEvent:(AgoraMediaPlayerEvent)eventCode
elapsedTime:(NSInteger)elapsedTime
message:(NSString *_Nullable)message;
详情
- 调用 seekToPosition: 定位播放后,SDK 会触发该回调,报告定位播放的结果。
参数
- playerKit
- eventCode
- 播放器事件,详见 AgoraMediaPlayerEvent。
- elapsedTime
- 发生事件的时间 (毫秒)。
- message
- 事件的信息。
AgoraRtcMediaPlayer:infoUpdated:
媒体播放器相关信息发生改变回调。
Objective-C
- (void)AgoraRtcMediaPlayer:(id<AgoraRtcMediaPlayerProtocol> _Nonnull)playerKit infoUpdated:(AgoraMediaPlayerUpdatedInfo *_Nonnull)info;
详情
当媒体播放器相关信息发生改变时,SDK 会触发该回调。你可用其进行问题定位和排查。
参数
- playerKit
- info
- 媒体播放器相关信息。详见 AgoraMediaPlayerUpdatedInfo。
AgoraRtcMediaPlayer:didChangedToState:reason:
报告播放器状态改变。
Objective-C
- (void)AgoraRtcMediaPlayer:(id<AgoraRtcMediaPlayerProtocol> _Nonnull)playerKit
didChangedToState:(AgoraMediaPlayerState)state
reason:(AgoraMediaPlayerReason)reason NS_SWIFT_NAME(AgoraRtcMediaPlayer(_:didChangedTo:reason:));
详情
当播放器状态改变时,SDK 会触发该回调,报告新的播放状态。
参数
- playerKit
- state
- 新的播放状态,详见 AgoraMediaPlayerState。
- reason
- 播放器状态改变的原因,详见 AgoraMediaPlayerReason。
AgoraRtcMediaPlayer:playerSrcInfoDidChange:from:
媒体资源视频码率变化回调。
Objective-C
- (void)AgoraRtcMediaPlayer:(id<AgoraRtcMediaPlayerProtocol> _Nonnull)playerKit playerSrcInfoDidChange:(AgoraMediaPlayerSrcInfo *_Nonnull)to from:(AgoraMediaPlayerSrcInfo *_Nonnull)from;
参数
- playerKit
- from
- 变化前,媒体资源播放时的视频码率相关信息。详见 AgoraMediaPlayerSrcInfo。
- to
- 变化后,媒体资源播放时的视频码率相关信息。详见 AgoraMediaPlayerSrcInfo。
AgoraMediaPlayer:didChangedToPosition:atTimestamp:
报告当前媒体资源的播放进度。
Objective-C
- (void)AgoraMediaPlayer:(AgoraMediaPlayer *_Nonnull)playerKit
didChangedToPosition:(NSInteger)positionMs
atTimestamp:(NSTimeInterval)timestampMs NS_SWIFT_NAME(AgoraMediaPlayer(_:didChangedToPosition:atTimestamp:));
详情
播放媒体文件时,SDK 每隔 1 秒会自动触发该回调,报告当前播放进度。
参数
- playerKit
- positionMs
- 当前播放进度,单位为 ms。
- timestampMs
- 当前播放进度的 NTP 时间戳,单位为 ms。
AgoraRtcMediaPlayer:didPreloadEvent:
报告预加载媒体资源的事件。
Objective-C
- (void)AgoraRtcMediaPlayer:(id<AgoraRtcMediaPlayerProtocol> _Nonnull)playerKit
didPreloadEvent:(AgoraMediaPlayerPreloadEvent)event;
参数
- playerKit
- event
- 预加载媒体资源时发生的事件。详见 AgoraMediaPlayerPreloadEvent。
AgoraRtcMediaPlayerCustomSourceOnReadCallback
读取媒体资源数据回调。
Objective-C
typedef int(^AgoraRtcMediaPlayerCustomSourceOnReadCallback)(id<AgoraRtcMediaPlayerProtocol> _Nonnull playerKit, unsigned char * _Nullable buffer, int bufferSize);
详情
使用 openWithMediaSource: 打开媒体资源时,SDK 会触发该回调向你请求传入媒体资源数据的 Buffer。
参数
- playerKit
- 媒体播放器协议。详见 AgoraRtcMediaPlayerProtocol。
- buffer
- 输入参数,数据 Buffer,单位为字节。请将 SDK 报告的 bufferSize 数据写入到此参数中。
- bufferSize
- 数据 Buffer 的长度,单位为字节。
返回值
- 如果读取数据成功,请在返回值中传入你实际读取的数据长度,单位为字节。
- 如果读取数据失败,请在返回值中传入 0。