使用GPUImage 一些坑

1:首先理解了安裝,作者推薦動(dòng)態(tài)庫安裝,好處就是特么的,你看到的source都是輸入源,filters都是濾鏡過程,output就是出口啦

2:GPUImageMovie能接受

1)asset、2)AVPlayItem、3)URL路徑,,,如果你有特殊要求,可以使用GPUImageMovieComposition這個(gè)類,允許你輸入AVFoundation的多音頻輸入、畫質(zhì)動(dòng)作、剪切之后的AVMutableComposition,我就用的這個(gè)

3:GPUImageMovie沒有音頻播放,美拍不知道怎么整的,估計(jì)我覺得就是使用另外一些人提供的思路,對源碼侵入加入播放器

可以參考這個(gè):1):http://blog.csdn.net/personsky/article/details/52992919

2):https://gist.github.com/anonymous/5112961

畢竟音頻播放就是個(gè)形式,,要不然你有沒有美拍的源碼,對了美拍還真就是用GPUImage,用的真是6啊,,偶像

3:如果你沒有用AVMutableComposition修改視頻orientation,其濾鏡里面也有能修改方向的方法setInputRotation

用法如:[sepiaFilter setInputRotation:kGPUImageRotateRight atIndex:0];

4:檢查濾鏡過程使用:filter setFrameProcessingCompletionBlock:^(GPUImageOutput *output,CMTime frameTime)

比如你可以在GPUImageElement里面修改這個(gè)

5:注意檢查輸入濾鏡的pipeline過程有沒有問題

http://blog.csdn.net/u1031/article/details/48712163

這個(gè)大哥的幾張圖挺好的,看了之后對addTarget有更多的理解

6:多視頻輸入我這還好,沒有什么問題,多語音的話,你就考慮使用GPUImageMovieComposition的audiomix,但是沒法控制播放了似乎,

7:NSString*pathToMovie = [self movieSavedPath];

unlink([pathToMovieUTF8String]);// If a file already exists, AVAssetWriter won't let you record new frames, so delete the old movie

可以使用快捷unlink視頻,我特么不知道,仍然在使用filemanager,low逼格

8:附一個(gè)濾鏡表在我國--->China????境內(nèi)的名字翻譯地址

http://blog.csdn.net/qq_27074387/article/details/52221938

9:在多視頻輸入里面,將self.movieFile.playAtActualSpeed=YES;

playAtActualSpeed都寫上,如果視頻不同步,有一個(gè)先完成了,則會(huì)有可能10s視頻變成了4s,有時(shí)前一段視頻播放正常,后一段就視頻畫面不動(dòng)了。

10:forceProcessingAtSize:CGSize

給其定義大小

11:GPUImage ?pipeline

1)、創(chuàng)建圖片處理類GPUImagePicture把圖片傳進(jìn)去stillImage

GPUImagePicture *staticPicture = [[GPUImagePicture alloc] initWithImage:stillImage smoothlyScaleOutput:YES];

2)、把多個(gè)濾鏡對象放到數(shù)組中

NSMutableArray *arrayTemp=[NSMutableArray array];

[arrayTempaddObject:RGBFilter];

3)、創(chuàng)建GPUImageFilterPipeline對象 初始化使用

initWithOrderedFilters:(NSArray*) filters input:(GPUImageOutput*)input output:(id )output;

這個(gè)方法;這個(gè)方法需要三個(gè)參數(shù):

filters:多個(gè)濾鏡的數(shù)組

input:被渲染的圖片(步驟1 的staticPicture 對象)

output:渲染后的圖片的容器(類型是view)

GPUImageFilterPipeline * filterPipeline = [[GPUImageFilterPipeline alloc] initWithOrderedFilters:arrayTempinput:staticPictureoutput:output];

4)、渲染圖片 使用processImage(此方法是GPUImagePicture類下的)和useNextFrameForImageCapture(此方法是GPUImageOutput下也就是單個(gè)濾鏡);

[staticPicture processImage];

[filteruseNextFrameForImageCapture];//這個(gè)filter 可以是RGBFiltertoonFilter等

5)、獲取圖片 使用currentFilteredFrame(此方法是GPUImageFilterPipeline類下的);

UIImage *img = [pipeline currentFilteredFrame];

6)、對于使用GPUImageUIElement沒有給contentView設(shè)置rect則會(huì)出現(xiàn):

: CGContextTranslateCTM: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.

*** Assertion failure in -[GPUImageFramebuffer generateFramebuffer], address/Submodules/framework/Source/GPUImageFramebuffer.m:156

同時(shí)breakpoint跳到


breakpoint
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,355評論 4 61
  • 用家:一個(gè)以物會(huì)友的圖片分享平臺(tái)。 我應(yīng)該重視生活美學(xué)。一進(jìn)入App就看到這句話,讓我無法反駁的同時(shí)又升起一絲感興...
    郭BoBo閱讀 750評論 0 2
  • 2017年6月16日,天氣晴,兒子早上做了一個(gè)夢把他嚇哭了,我問他什么夢,他說夢到爸爸開車讓人家撞到了,他擔(dān)心害怕...
    宋顥然媽媽閱讀 1,436評論 0 2
  • 1)、睡過同一張床; 2)、相識(shí)至少8年以上; 3)、穿過對方的衣服,用過對方的物品 ; 4)、吵過嘴干過仗但依然...
    54譚小姐閱讀 601評論 0 1

友情鏈接更多精彩內(nèi)容