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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM