菊风已发布实时音视频2.0升级版(2.0版本说明),当前您正在访问1.0旧版本,点击此处可进入2.0升级版

# 修改原始视频数据

# 简介

原始视频数据,又称视频裸数据,是指音视频传输过程中获取到的纯视频数据。常见的原始视频数据格式为 RGB 和 YUV420。这些视频采样数据经过视频编码压缩成为视频码流,从而降低视频的数据量,便于存储和传输。

菊风提供修改原始视频数据的功能。当有自行处理视频数据的需求时,您可以在将采集到的视频数据进行处理;也可以将即将渲染的数据进行处理。

# 前提条件

在修改原始视频数据前,确保已经初始化了 JCMediaDevice 模块。

# 集成步骤

  1. 创建 JCVideoFrameCallbackImpl 遵守 JCVideoFrameCallback 协议。重写 onVideoCaptureFrame, onVideoRenderFrame 接口。
  2. 在开始通话前调用 registerVideoFrameCallback (opens new window) 。在该函数中实例化回调接口 JCVideoFrameCallback。
  3. 发起通话或者加入频道。
  4. 在收到 onLeave (opens new window) 或 onStop (opens new window) 或 onCallItemRemove (opens new window) 后调用 registerVideoFrameCallback (opens new window) ,传入 null 来释放语音观测器对象。

# 示例代码

// 创建 JCVideoFrameCallbackImpl 遵守 JCVideoFrameCallback 协议。
// 实现 onVideoCaptureFrame, onVideoRenderFrame 接口。
@interface JCVideoFrameCallbackImpl : NSObject <JCVideoFrameCallback>
@end
/**
 * 获得采集的视频
 *
 * @param captureId     采集源id
 * @param face      镜头朝向
 * - JCMediaDeviceCameraTypeFront 前置摄像头
 * - JCMediaDeviceCameraTypeBack  后置摄像头
 * @param imageAngle    图像正立所需角度
 * @param captureOrient     镜头固定角度
 * @param width     图像宽
 * @param height    图像高
 * @param buf       图像数据
 */
- (void)onVideoCaptureFrame:(NSString *_Nonnull)captureId 
					   face:(JCMediaDeviceCameraType)face 
                 imageAngle:(int)imageAngle 
              captureOrient:(int)captureOrient 
              		  width:(int*_Nonnull)width 
                     height:(int*_Nonnull)height 
                     	buf:(unsigned char *_Nonnull)buf;
/**
 * 获得播放的视频
 *
 * @param renderId      渲染id
 * @param sourceType    视频源类型
 * - JCMediaDeviceVideoSourcePeer  用户
 * - JCMediaDeviceVideoSourceCapture  采集设备
 * - JCMediaDeviceVideoSourceFile  文件
 * @param angle     图像正立所需角度
 * @param mirror    镜像类型
 * - JCMediaDeviceMirrorNone  不镜像
 * - JCMediaDeviceMirrorHorizontal  水平方向镜像
 * - JCMediaDeviceMirrorVertical  竖直方向镜像
 * - JCMediaDeviceMirrorAuto  自动选择
 * - JCMediaDeviceMirrorFromLeft  转场动画,从左侧翻转
 * - JCMediaDeviceMirrorFromTop  转场动画,从上侧翻转
 * @param width     图像宽
 * @param height    图像高
 * @param buf     图像数据
 * @param timeStamp    渲染时间戳
 */
- (void)onVideoRenderFrame:(NSString *_Nonnull)renderId 
				sourceType:(JCMediaDeviceVideoSource)sourceType
                	 angle:(int)angle 
                    mirror:(JCMediaDeviceMirror)mirror 
                     width:(int*_Nonnull)width 
                    height:(int*_Nonnull)height 
                       buf:(unsigned char *_Nonnull)buf 
                 timeStamp:(unsigned long)timeStamp;

// 创建 JCVideoFrameCallbackImpl 实例对象
JCVideoFrameCallbackImpl *callback = [[JCVideoFrameCallbackImpl alloc] init];
// 设置视频数据监听
[_mediaDevice registerVideoFrameCallback:callback];
// 取消视频数据监听
[_mediaDevice registerVideoFrameCallback:nil];
最后更新时间: 4/1/2021, 4:54:25 PM