当前位置: 首页 > news >正文

中陕核建设集团网站seo文章关键词怎么优化

中陕核建设集团网站,seo文章关键词怎么优化,摄影网页制作,辽宁建设工程信息网招标软件WebRTC音视频通话-实现GPUImage视频美颜滤镜效果 在WebRTC音视频通话的GPUImage美颜效果图如下 可以看下 之前搭建ossrs服务#xff0c;可以查看#xff1a;https://blog.csdn.net/gloryFlow/article/details/132257196 之前实现iOS端调用ossrs音视频通话#xff0c;可以查…WebRTC音视频通话-实现GPUImage视频美颜滤镜效果 在WebRTC音视频通话的GPUImage美颜效果图如下 可以看下 之前搭建ossrs服务可以查看https://blog.csdn.net/gloryFlow/article/details/132257196 之前实现iOS端调用ossrs音视频通话可以查看https://blog.csdn.net/gloryFlow/article/details/132262724 之前WebRTC音视频通话高分辨率不显示画面问题可以查看https://blog.csdn.net/gloryFlow/article/details/132262724 修改SDP中的码率Bitrate可以查看https://blog.csdn.net/gloryFlow/article/details/132263021 一、GPUImage是什么 GPUImage是iOS上一个基于OpenGL进行图像处理的开源框架,内置大量滤镜,架构灵活,可以在其基础上很轻松地实现各种图像处理功能。 GPUImage中包含各种滤镜这里我不会使用那么多使用的是GPUImageLookupFilter及GPUImagePicture GPUImage中有一个专门针对lookup table进行处理的滤镜函数GPUImageLookupFilter使用这个函数就可以直接对图片进行滤镜添加操作了。代码如下 /**GPUImage中有一个专门针对lookup table进行处理的滤镜函数GPUImageLookupFilter使用这个函数就可以直接对图片进行滤镜添加操作了。originalImg是你希望添加滤镜的原始图片param image 原图return 处理后的图片*/(UIImage *)applyLookupFilter:(UIImage *)image lookUpImage:(UIImage *)lookUpImage {if (lookUpImage nil) {return image;}UIImage *inputImage image;UIImage *outputImage nil;GPUImagePicture *stillImageSource [[GPUImagePicture alloc] initWithImage:inputImage];//添加滤镜GPUImageLookupFilter *lookUpFilter [[GPUImageLookupFilter alloc] init];//导入之前保存的NewLookupTable.png文件GPUImagePicture *lookupImg [[GPUImagePicture alloc] initWithImage:lookUpImage];[lookupImg addTarget:lookUpFilter atTextureLocation:1];[stillImageSource addTarget:lookUpFilter atTextureLocation:0];[lookUpFilter useNextFrameForImageCapture];if([lookupImg processImageWithCompletionHandler:nil] [stillImageSource processImageWithCompletionHandler:nil]) {outputImage [lookUpFilter imageFromCurrentFramebuffer];}return outputImage; }这个需要lookUpImage图列表如下 由于暂时没有整理demo的git 这里在使用applyLomofiFilter再试下效果 SDApplyFilter.m中的几个方法 (UIImage *)applyBeautyFilter:(UIImage *)image {GPUImageBeautifyFilter *filter [[GPUImageBeautifyFilter alloc] init];[filter forceProcessingAtSize:image.size];GPUImagePicture *pic [[GPUImagePicture alloc] initWithImage:image];[pic addTarget:filter];[pic processImage];[filter useNextFrameForImageCapture];return [filter imageFromCurrentFramebuffer]; }/**Amatorka滤镜 Rise滤镜,可以使人像皮肤得到很好的调整param image imagereturn 处理后的图片*/(UIImage *)applyAmatorkaFilter:(UIImage *)image {GPUImageAmatorkaFilter *filter [[GPUImageAmatorkaFilter alloc] init];[filter forceProcessingAtSize:image.size];GPUImagePicture *pic [[GPUImagePicture alloc] initWithImage:image];[pic addTarget:filter];[pic processImage];[filter useNextFrameForImageCapture];return [filter imageFromCurrentFramebuffer]; }/**复古型滤镜,感觉像旧上海滩param image imagereturn 处理后的图片*/(UIImage *)applySoftEleganceFilter:(UIImage *)image {GPUImageSoftEleganceFilter *filter [[GPUImageSoftEleganceFilter alloc] init];[filter forceProcessingAtSize:image.size];GPUImagePicture *pic [[GPUImagePicture alloc] initWithImage:image];[pic addTarget:filter];[pic processImage];[filter useNextFrameForImageCapture];return [filter imageFromCurrentFramebuffer]; }/**图像黑白化并有大量噪点param image 原图return 处理后的图片*/(UIImage *)applyLocalBinaryPatternFilter:(UIImage *)image {GPUImageLocalBinaryPatternFilter *filter [[GPUImageLocalBinaryPatternFilter alloc] init];[filter forceProcessingAtSize:image.size];GPUImagePicture *pic [[GPUImagePicture alloc] initWithImage:image];[pic addTarget:filter];[pic processImage];[filter useNextFrameForImageCapture];return [filter imageFromCurrentFramebuffer]; }/**单色滤镜param image 原图return 处理后的图片*/(UIImage *)applyMonochromeFilter:(UIImage *)image {GPUImageMonochromeFilter *filter [[GPUImageMonochromeFilter alloc] init];[filter forceProcessingAtSize:image.size];GPUImagePicture *pic [[GPUImagePicture alloc] initWithImage:image];[pic addTarget:filter];[pic processImage];[filter useNextFrameForImageCapture];return [filter imageFromCurrentFramebuffer]; }使用GPUImageSoftEleganceFilter复古型滤镜,感觉像旧上海滩效果图如下 使用GPUImageLocalBinaryPatternFilter图像黑白化效果图如下 使用GPUImageMonochromeFilter 效果图如下 二、WebRTC实现音视频通话中视频滤镜处理 之前实现iOS端调用ossrs音视频通话可以查看https://blog.csdn.net/gloryFlow/article/details/132262724 这个已经有完整的代码了这里暂时做一下调整。 为RTCCameraVideoCapturer的delegate指向代理 - (RTCVideoTrack *)createVideoTrack {RTCVideoSource *videoSource [self.factory videoSource];self.localVideoSource videoSource;// 如果是模拟器if (TARGET_IPHONE_SIMULATOR) {if (available(iOS 10, *)) {self.videoCapturer [[RTCFileVideoCapturer alloc] initWithDelegate:self];} else {// Fallback on earlier versions}} else{self.videoCapturer [[RTCCameraVideoCapturer alloc] initWithDelegate:self];}RTCVideoTrack *videoTrack [self.factory videoTrackWithSource:videoSource trackId:video0];return videoTrack; }实现RTCVideoCapturerDelegate的方法didCaptureVideoFrame #pragma mark - RTCVideoCapturerDelegate处理代理 - (void)capturer:(RTCVideoCapturer *)capturer didCaptureVideoFrame:(RTCVideoFrame *)frame { // DebugLog(capturer:% didCaptureVideoFrame:%, capturer, frame);// 调用SDWebRTCBufferFliter的滤镜处理RTCVideoFrame *aFilterVideoFrame;if (self.delegate [self.delegate respondsToSelector:selector(webRTCClient:didCaptureVideoFrame:)]) {aFilterVideoFrame [self.delegate webRTCClient:self didCaptureVideoFrame:frame];}// 操作C 需要手动释放 否则内存暴涨 // CVPixelBufferRelease(_buffer)// 拿到pixelBuffer // ((RTCCVPixelBuffer*)frame.buffer).pixelBufferif (!aFilterVideoFrame) {aFilterVideoFrame frame;}[self.localVideoSource capturer:capturer didCaptureVideoFrame:frame]; }之后调用SDWebRTCBufferFliter实现滤镜效果。 实现将((RTCCVPixelBuffer *)frame.buffer).pixelBuffer进行渲染这里用到了EAGLContext、CIContext EAGLContext是OpenGL绘制句柄或者上下文在绘制试图之前需要指定使用创建的上下文绘制。 CIContext是用来渲染CIImage,将作用在CIImage上的滤镜链应用到原始的图片数据中。我这里需要将UIImage转换成CIImage。 具体代码实现如下 SDWebRTCBufferFliter.h #import Foundation/Foundation.h #import WebRTCClient.hinterface SDWebRTCBufferFliter : NSObject- (RTCVideoFrame *)webRTCClient:(WebRTCClient *)client didCaptureVideoFrame:(RTCVideoFrame *)frame;endSDWebRTCBufferFliter.m #import SDWebRTCBufferFliter.h #import VideoToolbox/VideoToolbox.h #import SDApplyFilter.hinterface SDWebRTCBufferFliter () // 滤镜 property (nonatomic, strong) EAGLContext *eaglContext;property (nonatomic, strong) CIContext *coreImageContext;property (nonatomic, strong) UIImage *lookUpImage;endimplementation SDWebRTCBufferFliter- (instancetype)init {self [super init];if (self) {self.eaglContext [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES3];self.coreImageContext [CIContext contextWithEAGLContext:self.eaglContext options:nil];self.lookUpImage [UIImage imageNamed:lookup_jiari];}return self; }- (RTCVideoFrame *)webRTCClient:(WebRTCClient *)client didCaptureVideoFrame:(RTCVideoFrame *)frame {CVPixelBufferRef pixelBufferRef ((RTCCVPixelBuffer *)frame.buffer).pixelBuffer;// CFRetain(pixelBufferRef);if (pixelBufferRef) {CIImage *inputImage [CIImage imageWithCVPixelBuffer:pixelBufferRef];CGImageRef imgRef [_coreImageContext createCGImage:inputImage fromRect:[inputImage extent]];UIImage *fromImage nil;if (!fromImage) {fromImage [UIImage imageWithCGImage:imgRef];}UIImage *toImage;toImage [SDApplyFilter applyMonochromeFilter:fromImage]; // // if (toImage nil) { // toImage [SDApplyFilter applyLookupFilter:fromImage lookUpImage:self.lookUpImage]; // } else { // toImage [SDApplyFilter applyLookupFilter:fromImage lookUpImage:self.lookUpImage]; // }if (toImage nil) {toImage fromImage;}CGImageRef toImgRef toImage.CGImage;CIImage *ciimage [CIImage imageWithCGImage:toImgRef];[_coreImageContext render:ciimage toCVPixelBuffer:pixelBufferRef];CGImageRelease(imgRef);//必须释放fromImage nil;toImage nil;ciimage nil;inputImage nil;}RTCCVPixelBuffer *rtcPixelBuffer [[RTCCVPixelBuffer alloc] initWithPixelBuffer:pixelBufferRef];RTCVideoFrame *filteredFrame [[RTCVideoFrame alloc] initWithBuffer:rtcPixelBufferrotation:frame.rotationtimeStampNs:frame.timeStampNs];return filteredFrame; }end至此可以看到在WebRTC音视频通话中GPUImage视频美颜滤镜的具体效果了。 三、小结 WebRTC音视频通话-实现GPUImage视频美颜滤镜效果。主要用到GPUImage处理视频画面CVPixelBufferRef将处理后的CVPixelBufferRef生成RTCVideoFrame通过调用localVideoSource中实现的didCaptureVideoFrame方法。内容较多描述可能不准确请见谅。 本文地址https://blog.csdn.net/gloryFlow/article/details/132265842 学习记录每天不停进步。
http://www.dnsts.com.cn/news/36804.html

相关文章:

  • 适合做网站服务器的主机天津做网站好的公司有哪些
  • 网站服务器是指什么在哪里做网站比较好
  • 做响应式网站费用建一个公司网站多少钱
  • 如何创建个人网站模板网站改标题不改版 k
  • 怎么搞自己的网站在线生成短链接网址
  • 购物网站建设网网页设计制作一个网站
  • 社交网站制作南宁网站建设团队
  • dw php网站建设视频教程企业网站pv是什么
  • 全国领先网站制作WaP网站模块
  • 专业做logo的网站微信公众号对接网站如何做
  • 网站上线 串词如何做旅游休闲网站
  • 亿达城市建设官方网站免费做网站推荐
  • 做网站要学什么西安做企业网站排名
  • 宁波网站建设开发长江工程建设局网站
  • 自己怎么在网上做网站王磊网站建设
  • 青岛营销型网站推广定兴网站建设
  • 蓝色网站特点怎样购买起名软件自己做网站
  • 商务网站网络环境设计购买保险的网站
  • 培训网站欣赏wordpress添加自定义导航
  • 学校英语网站栏目名称外面网站怎么做
  • 做网站项目需求分析是什么重庆网站建设价格费用
  • 招商网站建设的必要性有哪些免费的云服务器
  • 北京怎么做网站推广织梦是什么网站
  • 株洲新站seo1688关键词怎么优化
  • 我国大宗商品交易所厦门谷歌seo公司
  • wordpress网站制作app江小白发展过程中采用了哪些网络营销方式
  • 福永网站优化广州网站制作怎样
  • 连云港商城网站开发设计双流县规划建设局网站
  • 洛阳网站建设官网wordpress 创建 rss
  • 淘宝客网站建设方案书如何给网站做关键字