最近看了下官方文檔,簡單了解了下AVFoundation。
AVFoundation是iOS的幾個架構之一,您可以用來播放和建立基于時間的視聽媒體。 它提供了一個Objective-C接口,用于在詳細級别上處理基于時間的視聽資料。 例如,您可以使用它來檢查,建立,編輯或重新編碼媒體檔案。 您還可以從裝置擷取輸入流,并在實時捕獲和播放過程中操作視訊。
AV Foundation架構用來表示媒體的主要類是AVAsset。架構的設計主要由這種表示法指導。了解其結構将幫助您了解架構的工作原理。 AVAsset執行個體是一個或多個媒體資料(音頻和視訊軌道)的集合的聚合表示。它提供關于作為整體的集合的資訊,例如其标題,持續時間,自然呈現大小等。 AVAsset不綁定到特定的資料格式。 AVAsset是用于通過URL和媒體建立asset執行個體并建立新合成的其他類的超類
Asset中的各個媒體資料片段是統一類型并稱為軌道。在典型的簡單情況下,一個軌道表示音頻分量,另一個軌道表示視訊分量;然而,在複雜的構成中,可能存在音頻和視訊的多個重疊軌道。Asset也可以具有中繼資料。
AV Foundation的一個重要概念是,初始化Asset或軌道并不一定意味着它已準備就緒。可能需要一些時間來計算項目的持續時間(例如,MP3檔案可能不包含摘要資訊)。在計算值時,不要阻塞目前線程,而是要求值并通過使用block的回調異步擷取答案。
要建立視訊示範的縮略圖,您可以使用要從中生成縮略圖的Asset來初始化AVAssetImageGenerator的執行個體。 AVAssetImageGenerator使用預設啟用的視訊軌道生成圖像。
iOS 8之前提供了MPMoviePlayerController和MPMoviePlayerViewController兩個類,它們提供了一種簡單的方法将完整視訊播放功能整合到應用中,相比較與AVKit, MPMoviePlayerController定義了一些标準播放控件,供我們選擇,但是同時它将所有基礎功能隐藏,讓開發者無法使用AVPlayer層的更進階的基礎功能.是以iOS9之後被易用.
而新的AVKit提供了一種動态播放控件,自動為使用者提供最好的體驗. 并且AVPlayerViewController也支援開發者使用AVPlayer更進階的功能.