iOS視頻處理

jopen 8年前發布 | 10K 次閱讀 iOS開發 移動開發

在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上下文(該部分暫時略過)

來自: http://www.cnblogs.com/song-jw/p/5116811.html

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!