AVFoundation 學習資源列表
LINK: http://www.jianshu.com/p/1c51f93d54be^-^ 文章內容:
一、它能幹嘛。
二、它裡面由什麼組成。
三、AVFoundation。
-
一、它能幹嘛。
- 官方: 1、Record, edit, and play audio(A) and video(V). 【錄製、編輯、播放音訊和視訊;注,也可以拍攝圖片】 2、AVFoundation is one of several frameworks that you can use to play and create** time-based** audiovisual media. 【AVFoundation 是可以播放和建立基於時間的視聽媒體框架集】
- 結論: AVFoundation 是針對音訊和視訊的處理框架集; 1、音訊:錄製(建立)/編輯/播放 2、視訊:錄製(建立)/編輯/播放 3、圖片:拍攝(建立) 【注:(個人見解,不講格式等等)視訊,本質是沒有聲音的有序圖片集】
-
二、它裡面由什麼組成。
- 官方:(AVFoundation Programming Guide) Link:https://developer.apple.com/library/content/documentation/AudioVideo/Conceptual/AVFoundationPG/Articles/00_Introduction.html#//apple_ref/doc/uid/TP40010188-CH1-SW3
- 解釋:
1)、先看中間灰色圓點虛線上層是檢視層(View)的封裝,簡言之就是可以直接當平時用 UIKit 一樣使用 AVKit;下層是真正的 AV Fonudation 底層內容,主要的學習時間都在這裡;
2)、AV Fonudation 右上角有個 Audio-only classes ,它裡面有很多專門處理聲音的 API 知道就好了;
3)、Core Audio (以下內容,現在瞭解一下就可以了)
link:https://developer.apple.com/library/content/documentation/MusicAudio/Conceptual/CoreAudioOverview/Introduction/Introduction.html
link:https://developer.apple.com/reference/coreaudio?language=objc
4)、Core Media
核心是學習 CMTime/CMTimeRange ,AVFoundation 是基於時間的框架,那麼學習時間的處理,當然非常重要。 【它們都是一些結構體,蘋果專門為了時間的處理而做的處理,以後開發中關於時間的操作都是通過這兩個結構體來完成】 【注:時間處理為什麼重要,視訊是以幀為單位的,一幀就是一張圖片,25幀每秒(25/s),就是一秒內播放連續的25張圖片,就是一秒的視訊;那麼那怕消失了一幀,對於視訊而言是可怕的】 link:https://developer.apple.com/reference/coremedia?language=objc 5)、Core Animation 很重要,內容的渲染者(顯示) Core Audio / Core Media 並沒有提供可以顯示內容的類,Core Animation 裡面有 CALayer (注:1.The CALayer class manages image-based content and allows you to perform animations on that content. ) 可以用於圖片的內容顯示。當然還有更多的功能,也集中在這裡。 link:https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CoreAnimation_guide/Introduction/Introduction.html 【OpenGL 是進於圖片方面的開源庫, ES 是移動裝置版, 進階的時候絕對要學的; link:https://developer.apple.com/library/content/documentation/3DDrawing/Conceptual/OpenGLES_ProgrammingGuide/Introduction/Introduction.html 】 【進階的時候才會深入學習 Core Animation 所以不用太緊張,現在不用太在意它】
-
三、AVFoundation
學習路徑 ( ~> - ~ 貴在堅持 ~ - <~)
- 瞭解 (看上面兩大點)
- 學習上層 AVKit 的使用
- 學習下層 AVFoundation 內容
- 深入學習 Core Animation / OpenGL ES / OpenCV