功能描述
视频传输过程中,我们可以对采集到的视频数据进行前处理和后处理,获取想要的播放效果。
对于有自行处理视频数据需求的场景,SDK 提供原始数据功能,你可以在将数据发送给编码器前进行前处理,对捕捉到的视频帧进行修改;也可以在将数据发送给解码器后进行后处理,对接收到的视频帧进行修改。
接口描述
@interface QttChannelEngine : NSObject /* * 注册原始视频数据观测器 * 成功注册原始视频数据观测器后,SDK 会在捕捉到每个视频帧时,触发在 VideoFrameObserver 接口中实现的回调 * 该方法须要在加入频道前调用 * 通过观测器获取的视频宽高可能会因网络情况变差和用户自行调整分辨率而变化 * @param observer 原始视频数据观测器。详见 VideoFrameObserver。传空表示取消注册原始视频数据观测器。 * @return - 0(ERR_SUCCESS): 成功. - < 0: 失败. */ - (int)registerVideoFrameObserver:(id<VideoFrameObserver> _Nullable) observer; @protocol VideoFrameObserver <NSObject> @required //获取本地采集的视频数据 - (bool)onCaptureVideoFrame:(VideoFrame *)videoFrame; //获取接收到的远端视频数据 - (bool)onRenderVideoFrame:(uint32_t) uid videoFrame:(VideoFrame *) videoFrame;
@optional //设置 SDK 输出的原始视频数据格式 - (VIDEO_FRAME_TYPE)getVideoFormatPreference; //是否旋转 SDK 输出的原始视频数据 - (bool)getRotationApplied; //设置是否镜像 SDK 输出的原始视频数据 - (bool)getMirrorApplied; @end @end
|
注:registerVideoFrameObserver方法要在加入频道前调用。有关registerVideoFrameObserver详细介绍,请点击registerVideoFrameObserver
示例代码
@interface VideoFrameObserverImpl : NSObject<VideoFrameObserver> - (bool)onCaptureVideoFrame:(VideoFrame *)videoFrame; - (bool)onRenderVideoFrame:(uint32_t) uid videoFrame:(VideoFrame *) videoFrame; @end
@implementation VideoFrameObserverImpl - (bool)onCaptureVideoFrame:(VideoFrame *)videoFrame { return false; } - (bool)onRenderVideoFrame:(uint32_t) uid videoFrame:(VideoFrame *) videoFrame; { return false; }
@end VideoFrameObserverImpl *observer = [[VideoFrameObserverImpl alloc]init]; [engine registerVideoFrameObserver:observer];
|