iOS 云信视频通话 +滤镜效果
2017-12-29 17:26
246 查看
云信SDK会把采集数据 回调出来
NIMNetCallVideoCaptureParam *param = [[NIMNetCallVideoCaptureParamalloc]init];
param.videoHandler = ^(CMSampleBufferRef _Nonnull sampleBuffer) {
//1- 添加回调
};
[selffillVideoCaptureSetting:param];
option.videoCaptureParam = param;
//以上回调 添加以下方法
- (void)processVideoSampleBuffer:(CMSampleBufferRef)sampleBuffer
{
CVPixelBufferRef pixelBuffer =CMSampleBufferGetImageBuffer(sampleBuffer);
size_t bufferWidth =
0;
size_t bufferHeight =
0;
if (CVPixelBufferIsPlanar(pixelBuffer)) {
bufferHeight = CVPixelBufferGetHeightOfPlane(pixelBuffer,0);
bufferWidth = CVPixelBufferGetWidthOfPlane(pixelBuffer,0);
} else {
bufferWidth = CVPixelBufferGetWidth(pixelBuffer);
bufferHeight = CVPixelBufferGetHeight(pixelBuffer);
}
//加滤镜代码 测试
CFAbsoluteTime elapsedTime, startTime =CFAbsoluteTimeGetCurrent();
CIImage *inputImage = [CIImage imageWithCVPixelBuffer:pixelBuffer];
// 创建滤镜
CIFilter *fiter = [CIFilter filterWithName:@"CIPhotoEffectInstant"];
[fiter setValue:inputImage
forKey:@"inputImage"];
CIImage *outputImage = [fiter
outputImage];
elapsedTime = CFAbsoluteTimeGetCurrent() - startTime;
NSLog(@"Core Image frame time: %f", elapsedTime *1000.0);
EAGLContext *openglCtx = [[EAGLContext alloc]initWithAPI:kEAGLRenderingAPIOpenGLES2];
CIContext *ctx = [CIContext contextWithEAGLContext:openglCtx];
[ctx render:outputImage
toCVPixelBuffer:pixelBuffer];
// 处理完的数据 塞回云信
[[NIMAVChatSDKsharedSDK].netCallManagersendVideoSampleBuffer:sampleBuffer];
}
NIMNetCallVideoCaptureParam *param = [[NIMNetCallVideoCaptureParamalloc]init];
param.videoHandler = ^(CMSampleBufferRef _Nonnull sampleBuffer) {
//1- 添加回调
};
[selffillVideoCaptureSetting:param];
option.videoCaptureParam = param;
//以上回调 添加以下方法
- (void)processVideoSampleBuffer:(CMSampleBufferRef)sampleBuffer
{
CVPixelBufferRef pixelBuffer =CMSampleBufferGetImageBuffer(sampleBuffer);
size_t bufferWidth =
0;
size_t bufferHeight =
0;
if (CVPixelBufferIsPlanar(pixelBuffer)) {
bufferHeight = CVPixelBufferGetHeightOfPlane(pixelBuffer,0);
bufferWidth = CVPixelBufferGetWidthOfPlane(pixelBuffer,0);
} else {
bufferWidth = CVPixelBufferGetWidth(pixelBuffer);
bufferHeight = CVPixelBufferGetHeight(pixelBuffer);
}
//加滤镜代码 测试
CFAbsoluteTime elapsedTime, startTime =CFAbsoluteTimeGetCurrent();
CIImage *inputImage = [CIImage imageWithCVPixelBuffer:pixelBuffer];
// 创建滤镜
CIFilter *fiter = [CIFilter filterWithName:@"CIPhotoEffectInstant"];
[fiter setValue:inputImage
forKey:@"inputImage"];
CIImage *outputImage = [fiter
outputImage];
elapsedTime = CFAbsoluteTimeGetCurrent() - startTime;
NSLog(@"Core Image frame time: %f", elapsedTime *1000.0);
EAGLContext *openglCtx = [[EAGLContext alloc]initWithAPI:kEAGLRenderingAPIOpenGLES2];
CIContext *ctx = [CIContext contextWithEAGLContext:openglCtx];
[ctx render:outputImage
toCVPixelBuffer:pixelBuffer];
// 处理完的数据 塞回云信
[[NIMAVChatSDKsharedSDK].netCallManagersendVideoSampleBuffer:sampleBuffer];
}
相关文章推荐
- iOS中实现模糊效果(附带多种滤镜探索,你值得转载)
- iOS --- 通过CoreImage实现的简单滤镜效果
- iOS纯Autolayout实现微信朋友圈和通讯录另附App启动页短视频效果
- iOS 使用自带的CIFilter完成滤镜效果
- Android IOS WebRTC 音视频开发总结(六九)-- qq视频通话都是p2p,我们还怕啥?
- iOS Swift3.0实现视频播放横竖屏切换效果
- iOS 滤镜效果
- iOS GPUImage之GPUImageMovie视频滤镜(2)
- 基于Android/IOS视频语音通话商业产品源码转让
- iOS开发 滤镜效果
- iOS GPUImage研究五:短视频拍摄(滤镜、文件写入)
- iOS放大镜、调试工具、图片滤镜、导航渐变、动画效果等源码
- [iOS Swift3.0/Oc] 摄像头实时获取视频流效果 简单记录
- camera2 opengl实现滤镜效果录制视频 一 相机预览
- iOS下WebRTC音视频通话(三)-音视频通话
- iOS下WebRTC音视频通话(三)-音视频通话
- iOS GPUImage之GPUImageMovie视频滤镜(1)
- iOS自定义相机界面,实现微信小视频UI效果
- 基于Android/IOS视频语音通话商业产品源码转让
- iOS 图像的滤镜效果实现