SnappyCam 如何做到讓 iPhone 5 每秒鐘拍攝 20 張全解析度相片?
11-28
謝邀。
SnappyLabs - Blog他們軟體的解釋里,就有詳細的說明了。
簡單而言,他們從底層開始,把iPhone的拍攝-原始數據-JPEG這一路徑重塑了。尤其是原始數據-JPEG這一段,他們重寫了DCT離散餘弦變換和LHC無損霍夫曼壓縮的代碼,並且繞開了GPU的限制,使用NEON引擎(ARM Cortex-A系列處理器的SIMD架構擴展技術),令CPU全速並行處理8個同步算術運算(默認調用GPU的話,只有2個並行渲染器,而且被鎖定在較低的CPU時鐘頻率)。
技術宅拯救世界。數碼照片生成,包括元數據的採集(感光器件,這裡也有複雜的問題,不展開);數據流傳輸(要有足夠的帶寬);圖像處理及壓縮(消耗圖像處理器或CPU)。SnappyCam主要解決最後一步的演算法和執行,使得效率大大提升,這樣就可以挖盡前2步的硬體潛力。
按照這說法,SnappyCam應該也可以用在所有帶NEON的設備上,提升他們的連拍速度。
經過一天的分析,SnappyCam是用了videoDataOutput輸出視頻,然後保存Frame,拍照的聲音是snappyCam自己播放的(可以解壓ipa後在App文件夾里看到shutter聲音文件),而不是因為調用系統的stillImageOutput的拍照函數產生的。但是iOS的默認videoDataOutput是不支持輸出full sensor frame的,而snappyCam竟然拍出的照片是full sensor 的。作者在博客里沒有提及他是怎麼獲取full sensor frame的,估計他要是公布了就上不了App Store了。我研究的結果是snappyCam調用了私有的api,使videoDataOutput輸出full sensor frame。不過SnappyCam的作者還是挺厲害的,竟然通過重寫壓縮演算法優化了保存JPEG格式照片的效率,看來以後App拼的是演算法了。(對使videoDataOutput輸出full sensor frame 的私有API 感興趣的朋友可以私信我)
//////////////////////////////////////////////////////////////////////////////////////////////
這個軟體現在已經被蘋果收購了。蘋果收購高清連拍應用SnappyCam_IT新聞
Sandrock兄說得沒錯,其實就是優化了從拍攝數據到出片的這個過程,並且做到了出片效果接近Apple官方應用的效果還能處理得那麼快。要知道從物理像素200多萬插值到800萬,還是很考驗演算法水平的…
至於200多萬物理像素這個說法,我沒有reference,是一個搞電子的朋友跟我說的,現在行業內的普遍做法而已。自己用網格線條圖仔細測試iPhone 5的照片細節,也驗證了這個說法……
推薦閱讀:
※用獎學金給女朋友買 iPhone 6 合適么?
※除了被調戲,Siri還可以做什麼有意義的事情?
※詢問 Siri「你有朋友嗎」時,Siri 的回答為什麼這麼奇怪?
※在街頭碰到小偷兜售手機怎麼做?
※如何看待」為提升iPhone X產量,蘋果降低了Face ID零部件技術要求」的報道?