在iOS中,apple提供了AVFoundation 用來處理音視頻,基本能滿足一些常用的音視頻處理需求,而且能調用的硬體編解碼介面,能提高不少效率,這是其它庫所不能達到的。最近做過的Recnow SDK中已經集成了這些功能,像一些視頻長度剪輯、視頻插入、視頻轉場、添加配音、添加動畫效果等,還有一些...
在iOS中,apple提供了AVFoundation 用來處理音視頻,基本能滿足一些常用的音視頻處理需求,而且能調用的硬體編解碼介面,能提高不少效率,這是其它庫所不能達到的。最近做過的Recnow SDK中已經集成了這些功能,像一些視頻長度剪輯、視頻插入、視頻轉場、添加配音、添加動畫效果等,還有一些視頻參數的改變,都可以使用AVFoundation比較輕鬆的實現。具體可以參照一下:https://developer.apple.com/library/ios/documentation/AudioVideo/Conceptual/AVFoundationPG/Articles/00_Introduction.html#//apple_ref/doc/uid/TP40010188 在對視頻添加特效方面,就不得不提一下GPUImage了,作者是個牛人,github上star上萬。 因為視頻最終也是通過GPU,一幀一幀渲染到屏幕上的,所以我們可以利用opengl es,對視頻幀進行各種加工,從而視頻各種不同的效果,現在的各種美顏和視頻添加特效的app都是這樣實現的。 GPUImage實現了很多種濾鏡功能,而且效率號稱比apple 自己的CoreImage還要高一點,不過有一點不足的是這個庫對音頻的處理基本是捉襟見肘。 下麵主要寫一點對GPUImage的一些理解: 該庫對視頻採用的是一種鏈式的處理模式,如圖所示 就好像一個水龍頭流出的水,經過若幹節管道,然後流向不同的目標。 該庫定義了GPUImageOutput 作為視頻源頭進行輸出,這是一個抽象父類,具體的一些類像GPUImageVideoCamera,GPUImageMovie等都是繼承自它,這個類就好比水源。 定義了協議GPUImageInput,凡事遵守這個協議的類,都能處理視頻流。GPUimageFilter 繼承自GPUImageOutput,並且遵守GPUImageInput協議,它相當與一個管道,既能流進,又能流出。 這種設計模式很好的體現了面向協議編程,而不是面向實現,這樣設計,方便更好的擴展性,在apple新發佈的Swift中,協議變得可以擴展,更加速食麵向協議編程。 經過的處理的視頻流,定向到不同的target,可以渲染到屏幕或者生成視頻文件,比如:GPUImageView。具體可以嘗試一下自帶的幾個demo。GPUImageContext管理OpenGL ES上下文(該部分暫時略過)