使用GPUImage 一些坑

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

2:GPUImageMovie能接受

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

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

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

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

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

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

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

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

比如你可以在GPUImageElement里面修改這個

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

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

這個大哥的幾張圖挺好的,看了之后對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:附一個濾鏡表在我國--->China????境內的名字翻譯地址

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

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

playAtActualSpeed都寫上,如果視頻不同步,有一個先完成了,則會有可能10s視頻變成了4s,有時前一段視頻播放正常,后一段就視頻畫面不動了。

10:forceProcessingAtSize:CGSize

給其定義大小

11:GPUImage ?pipeline

1)、創建圖片處理類GPUImagePicture把圖片傳進去stillImage

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

2)、把多個濾鏡對象放到數組中

NSMutableArray *arrayTemp=[NSMutableArray array];

[arrayTempaddObject:RGBFilter];

3)、創建GPUImageFilterPipeline對象 初始化使用

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

這個方法;這個方法需要三個參數:

filters:多個濾鏡的數組

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

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

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

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

[staticPicture processImage];

[filteruseNextFrameForImageCapture];//這個filter 可以是RGBFiltertoonFilter等

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

UIImage *img = [pipeline currentFilteredFrame];

6)、對于使用GPUImageUIElement沒有給contentView設置rect則會出現:

: 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

同時breakpoint跳到


breakpoint
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

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