Public 成员函数

virtual ~IMediaEngine ()
 
virtual void release ()=0
 
virtual int registerAudioFrameObserver (IAudioFrameObserver *observer)=0
 
virtual int registerVideoFrameObserver (IVideoFrameObserver *observer)=0
 
virtual int registerVideoRenderFactory (IExternalVideoRenderFactory *factory)=0
 
virtual int pushAudioFrame (MEDIA_SOURCE_TYPE type, IAudioFrameObserver::AudioFrame *frame, bool wrap)=0
 
virtual int pushAudioFrame (IAudioFrameObserver::AudioFrame *frame)=0
 
virtual int pullAudioFrame (IAudioFrameObserver::AudioFrame *frame)=0
 
virtual int setExternalVideoSource (bool enable, bool useTexture)=0
 
virtual int pushVideoFrame (ExternalVideoFrame *frame)=0
 

构造及析构函数说明

◆ ~IMediaEngine()

virtual agora::media::IMediaEngine::~IMediaEngine ( )
inlinevirtual

成员函数说明

◆ release()

virtual void agora::media::IMediaEngine::release ( )
pure virtual

◆ registerAudioFrameObserver()

virtual int agora::media::IMediaEngine::registerAudioFrameObserver ( IAudioFrameObserver observer)
pure virtual

注册语音观测器对象

该方法用于注册语音观测器对象,即注册回调。当需要引擎给出 onRecordAudioFrameonPlaybackAudioFrame 回调时,需要使用该方法注册回调。

参数
observer接口对象实例。详见 IAudioFrameObserver。如果传入 NULL,则表示取消注册, 我们建议在收到 onLeaveChannel 后调用,来释放语音观测器对象。

◆ registerVideoFrameObserver()

virtual int agora::media::IMediaEngine::registerVideoFrameObserver ( IVideoFrameObserver observer)
pure virtual

注册视频观测器对象

你需要在该方法中实现一个 IVideoFrameObserver 类,并根据场景需要,注册该类的回调。 成功注册视频观测器后,SDK 会在捕捉到每个视频帧时,触发你所注册的上述回调。

注解
在处理回调时,你需要考虑视频帧中 widthheight 参数的变化,因为观测得到的视频帧可能会随以下情况变化:
  • 当网络状况差时,分辨率会阶梯式下降。
  • 当用户自行调整分辨率时,回调中报告的分辨率也会变化。
参数
observer接口对象实例。如果传入 NULL,则取消注册。详见 IVideoFrameObserver

◆ registerVideoRenderFactory()

virtual int agora::media::IMediaEngine::registerVideoRenderFactory ( IExternalVideoRenderFactory factory)
pure virtual

◆ pushAudioFrame() [1/2]

virtual int agora::media::IMediaEngine::pushAudioFrame ( MEDIA_SOURCE_TYPE  type,
IAudioFrameObserver::AudioFrame frame,
bool  wrap 
)
pure virtual
弃用:
已被 pushAudioFrame2 代替。

推送外部音频帧

参数
type音频采集设备类型。详见: MEDIA_SOURCE_TYPE
frame音频帧指针。详见: AudioFrame
wrap设置是否占位使用。声网建议用户使用默认值即可。
  • true: 占位使用;
  • false:(默认)不占位使用。
返回
  • 0:方法调用成功
  • < 0:方法调用失败

◆ pushAudioFrame() [2/2]

virtual int agora::media::IMediaEngine::pushAudioFrame ( IAudioFrameObserver::AudioFrame frame)
pure virtual

推送外部音频帧

参数
frame音频帧指针。详见: AudioFrame
返回
  • 0:方法调用成功
  • < 0:方法调用失败

◆ pullAudioFrame()

virtual int agora::media::IMediaEngine::pullAudioFrame ( IAudioFrameObserver::AudioFrame frame)
pure virtual

拉取远端音频数据。

使用该方法前,你需要调用 setExternalAudioSink(enabled: true) 方法通知 App 开启并设置外部渲染。

调用该方法后,App 会采取主动拉取的方式获取远端已解码和混音后的音频数据,用于音频播放。

注解
  • 使用该方法后,App 会无法从 onPlaybackAudioFrame 回调中获得数据。
  • 该方法和 onPlaybackAudioFrame 回调相比,区别在于:
    • onPlaybackAudioFrame:SDK 通过该回调将音频数据传输给 app。如果 app 处理延时,可能会导致音频播放抖动。 如果 App 处理延时,可能会导致音频播放抖动。
    • pullAudioFrame:App 主动拉取音频数据。通过设置音频数据, SDK 可以调整缓存,帮助 App 处理延时,从而有效避免音频播放抖动。
参数
frame指向 AudioFrame 的指针。
返回
  • 0:方法调用成功。
  • < 0:方法调用失败。

◆ setExternalVideoSource()

virtual int agora::media::IMediaEngine::setExternalVideoSource ( bool  enable,
bool  useTexture 
)
pure virtual

配置外部视频源

参数
enable是否使用外部视频源:
  • true:使用外部视频源
  • false:(默认)不使用外部视频源
useTexture是否使用 Texture 作为输入:
  • true:使用 texture 作为输入
  • false:(默认)不使用 texture 作为输入
返回
  • 0:方法调用成功
  • < 0:方法调用失败

◆ pushVideoFrame()

virtual int agora::media::IMediaEngine::pushVideoFrame ( ExternalVideoFrame frame)
pure virtual

使用 ExternalVideoFrame 将视频帧数据传递给 Agora SDK

注解
通信场景下,不支持 Texture 格式的视频帧,只支持非 Texture 格式的视频帧
参数
frame待传输的视频帧。详见 ExternalVideoFrame
返回
  • 0:方法调用成功
  • < 0:方法调用失败