AVFoundation編程指南10-AVAsset解讀(下)

寫在前面

喜歡AVFoundation資料的同學可以關注我的專題:《AVFoundation》專輯
也可以關注我的簡書賬號

正文

AVURLAsset

用于選項字典的鍵 - [AVURLAsset initWithURL:options:]

AVF_EXPORT NSString *const AVURLAssetPreferPreciseDurationAndTimingKey NS_AVAILABLE(10_7, 4_0);
Key名稱 AVURLAssetPreferPreciseDurationAndTimingKey
函數解釋 指示asset是否應準備好指示精確的持續時間并按時間提供精確的隨機訪問。

此鍵的值是布爾類型的NSNumber
備注 如果將nil作為options參數的值傳遞給- [AVURLAsset initWithURL:options:],或者如果傳遞缺少鍵AVURLAssetPreferPreciseDurationAndTimingKey的值的字典,則假定默認值為NO。如果僅打算播放asset,因為當全精度不可用時,AVPlayer將支持按時間進行近似隨機訪問,默認值為NO就足夠了。

如果在需要精確計時的情況下可以接受更長的加載時間,則通過YES。如果要將asset插入AVMutableComposition,通常需要精確的隨機訪問,建議使用YES值。

請注意,根據其容器格式的具體情況,此類精度可能需要在使用其任何部分的操作之前額外解析資源。許多容器格式提供了足夠的摘要信息以便精確計時,并且不需要額外的解析來準備它; QuickTime電影文件和MPEG-4文件是此類格式的示例。其他格式不提供足夠的摘要信息,只有在對文件內容進行初步檢查后才能對它們進行精確的隨機訪問。

如果asset``URL引用的定時媒體資源無法獲得精確的持續時間和時間,則即使通過使用此key請求精確計時,AVAsset.providesPreciseDurationAndTiming也將為NO
AVF_EXPORT NSString *const AVURLAssetReferenceRestrictionsKey NS_AVAILABLE(10_7, 5_0);
Key名稱 AVURLAssetReferenceRestrictionsKey
解釋 指示asset在解析對外部媒體數據的引用時使用的限制。此鍵的值是包含AVAssetReferenceRestrictions枚舉值的NSNumber或多個此類值的邏輯組合。
備注 某些asset可以包含對存儲在asset容器文件外部的媒體數據的引用,例如在另一個文件中。這個key可用于指定遇到這些引用時要使用的策略。如果asset包含一個或多個參考限制禁止的類型的引用,則asset屬性的加載將失敗。此外,此類asset不能與其他AVFoundation模塊一起使用,例如AVPlayerItemAVAssetExportSession
AVF_EXPORT NSString *const AVURLAssetHTTPCookiesKey API_AVAILABLE(ios(8.0), tvos(9.0)) API_UNAVAILABLE(macos) __WATCHOS_PROHIBITED;
Key名稱 AVURLAssetHTTPCookiesKey
解釋 AVURLAsset可以通過HTTP請求發送的HTTP cookie

標準跨站點策略仍然適用:cookie僅發送到它們適用的域。
備注 默認情況下,AVURLAsset只能訪問客戶端默認cookie存儲中的cookie

適用于AVURLAssetURL。你可以補充asset可用的cookie

通過使用此初始化選項

HTTP cookie不適用于非HTTPSURL

HLS中,許多HTTP請求(例如,媒體,密鑰,變體索引)可以被發布到不同的路徑或主機。

在這兩種情況下,HTTP請求都將丟失任何不適用于AVURLAsset URLcookie

init選項允許AVURLAsset為這些HTTPS)請求使用其他HTTP``cookie
AVF_EXPORT NSString *const AVURLAssetAllowsCellularAccessKey API_AVAILABLE(ios(10.0), tvos(10.0)) API_UNAVAILABLE(macos) __WATCHOS_PROHIBITED;
Key名稱 AVURLAssetAllowsCellularAccessKey
解釋 指示是否允許代表此asset的網絡請求使用蜂窩接口。
備注 默認是 YES

AVURLAsset

+ (NSArray<AVFileType> *)audiovisualTypes NS_AVAILABLE(10_7, 5_0);
函數名 audiovisualTypes
函數解釋 提供AVURLAsset類可以理解的文件類型。
返回值 UTINSArray標識AVURLAsset類可以理解的文件類型。
+ (NSArray<NSString *> *)audiovisualMIMETypes NS_AVAILABLE(10_7, 5_0);
函數名 audiovisualMIMETypes
解釋 提供AVURLAsset類可以理解的MIME類型。
返回值 返回一個包含NSString類型的NSArray數組,其包含了MIME類型的AVURLAsset
+ (BOOL)isPlayableExtendedMIMEType: (NSString *)extendedMIMEType NS_AVAILABLE(10_7, 5_0);
函數名 isPlayableExtendedMIMEType:
函數解釋 如果asset可以使用extendedMIMEType中指定的編解碼器和容器類型播放,則返回YES。否則返回NO
參數 extendedMIMEType
返回值 YES 或者是 NO
+ (instancetype)URLAssetWithURL:(NSURL *)URL options:(nullable NSDictionary<NSString *, id> *)options;
函數名 URLAssetWithURL:options:
解釋 返回AVURLAsset的實例以檢查媒體資源。
參數 URL
一個NSURL的實例,它引用媒體資源。

options:
一個NSDictionary的實例,包含用于指定AVURLAsset初始化選項的鍵。請參閱上面的AVURLAssetPreferPreciseDurationAndTimingKeyAVURLAssetReferenceRestrictionsKey
返回值 返回一個AVURLAsset的實例。
- (instancetype)initWithURL:(NSURL *)URL options:(nullable NSDictionary<NSString *, id> *)options NS_DESIGNATED_INITIALIZER;
函數名 initWithURL:options:
解釋 初始化AVURLAsset的實例以檢查媒體資源。
參數 URL:
一個NSURL的實例,它引用媒體資源。

options:
一個NSDictionary的實例,包含用于指定AVURLAsset初始化選項的鍵。請參閱上面的AVURLAssetPreferPreciseDurationAndTimingKeyAVURLAssetReferenceRestrictionsKey
返回值 一個AVURLAsset的實例。
@property (nonatomic, readonly, copy) NSURL *URL;

表示初始化AVURLAsset實例的URL

AVURLAssetURLHandling

@property (nonatomic, readonly) AVAssetResourceLoader *resourceLoader NS_AVAILABLE(10_9, 6_0);

提供對AVAssetResourceLoader實例的訪問,該實例提供對在asset上執行操作(例如playback)過程中可能加載的URL處理的有限控制。

無法通過使用AVAssetResourceLoader來調解文件URL的加載。

請注意,AVAsset的副本將提供相同的AVAssetResourceLoader實例。

AVURLAssetCache

@property (nonatomic, readonly, nullable) AVAssetCache *assetCache NS_AVAILABLE(10_12, 10_0);

提供對AVAssetCache實例的訪問,以用于檢查本地緩存的媒體數據。如果asset尚未配置為存儲或訪問磁盤中的媒體數據,則為nil

AVAssetCompositionUtility

 - (nullable AVAssetTrack *)compatibleTrackForCompositionTrack:(AVCompositionTrack *)compositionTrack;
函數名 compatibleTrackForCompositionTrack:
解釋 提供對任何timeRange的目標的AVAssetTrack的引用。

可以插入到可變組合track中(通過 - [AVMutableCompositionTrack insertTimeRange:ofTrack:atTime:error:])。
參數 compositionTrack:
要求兼容的AVAssetTrack的合成track
返回值 返回一個AVAssetTrack的實例
備注 查找具有指定合成軌跡可容納的內容的目標track

- [AVMutableComposition mutableTrackCompatibleWithTrack:]的邏輯補充。

AVAsset change notifications

AVF_EXPORT NSString *const AVAssetDurationDidChangeNotification NS_AVAILABLE(10_11, 9_0);
通知名稱 AVAssetDurationDidChangeNotification
解釋 AVFragmentedAsset的持續時間在被AVFragmentedAssetMinder調整時發生變化時發布,但僅適用于@“duration”的狀態達到AVKeyValueStatusLoaded后發生的更改。
AVF_EXPORT NSString *const AVAssetContainsFragmentsDidChangeNotification API_AVAILABLE(macos(10.11), ios(12.0), tvos(12.0)) API_UNAVAILABLE(watchos);
通知名稱 AVAssetContainsFragmentsDidChangeNotification
解釋 @“containsFragments”的值已經被加載并且AVFragmentedAsset被添加到AVFragmentedAssetMinder之后發布,或者當值為1的時候)在磁盤上的asset中檢測到片段之后它沒有被檢測到或者當值為2的時候)沒有檢測到片段時之前包含一個或多個asset的磁盤上的asset
AVF_EXPORT NSString *const AVAssetWasDefragmentedNotification API_AVAILABLE(macos(10.11), ios(12.0), tvos(12.0)) API_UNAVAILABLE(watchos);
通知名稱 AVAssetWasDefragmentedNotification
解釋 AVFragmentedAssetMinder正在調整AVFragmentedAsset時對磁盤上的asset進行碎片整理時發布,但僅在@“canContainFragments”的值狀態達到AVKeyValueStatusLoaded之后進行碎片整理時才會發布。
備注 發布此通知后,asset屬性canContainFragmentscontainsFragments的值都將為NO
AVF_EXPORT NSString *const AVAssetChapterMetadataGroupsDidChangeNotification NS_AVAILABLE(10_11, 9_0);
通知名稱 AVAssetChapterMetadataGroupsDidChangeNotification
解釋 當表示AVAsset``capture的定時元數據組數組的集合發生更改以及定時元數據組的任何內容發生更改時發布,但僅適用于@“availableChapterLocales”值的狀態達到AVKeyValueStatusLoaded后發生的更改。
AVF_EXPORT NSString *const AVAssetMediaSelectionGroupsDidChangeNotification NS_AVAILABLE(10_11, 9_0);
通知名稱 AVAssetMediaSelectionGroupsDidChangeNotification
解釋 AVAsset提供的媒體選擇組集合發生更改以及其媒體選擇組的任何內容發生更改時發布,但僅適用于@“availableMediaCharacteristicsWithMediaSelectionOptions”值的狀態達到AVKeyValueStatusLoaded后發生的更改。

AVFragmentMinding代理方法

@property (nonatomic, readonly, getter=isAssociatedWithFragmentMinder) BOOL associatedWithFragmentMinder API_AVAILABLE(macos(10.11), ios(12.0), tvos(12.0)) API_UNAVAILABLE(watchos);
代理名稱 associatedWithFragmentMinder
解釋 指示支持片段管理的AVAsset當前是否與片段管理器相關聯,例如, AVFragmentedAssetMinder的一個實例。
備注 支持片段管理的AVAssets僅在與片段管理器關聯時發布更改通知。

AVFragmentedAsset

+ (instancetype)fragmentedAssetWithURL:(NSURL *)URL options:(nullable NSDictionary<NSString *, id> *)options;
函數名稱 fragmentedAssetWithURL:options:
解釋 返回AVFragmentedAsset的實例,以檢查碎片化的媒體資源。
參數 URL:
一個NSURL的實例,它用來引用媒體資源。

options:
一個NSDictionary的實例,包含用于指定AVFragmentedAsset初始化選項的鍵。請參閱上面的AVURLAssetPreferPreciseDurationAndTimingKeyAVURLAssetReferenceRestrictionsKey
返回值 一個AVFragmentedAsset的實例。
@property (nonatomic, readonly) NSArray<AVFragmentedAssetTrack *> *tracks;
屬性名稱 tracks
解釋 asset中的track
備注 此屬性的值是asset包含的track數組;track的類型為AVFragmentedAssetTrack

AVFragmentedAssetTrackInspection

- (nullable AVFragmentedAssetTrack *)trackWithTrackID:(CMPersistentTrackID)trackID;
函數名稱 trackWithTrackID:
解釋 提供AVFragmentedAssetTrack的實例,該實例表示指定trackIDtrack
參數 trackID:
請求的AVFragmentedAssetTracktrackID
返回值 AVFragmentedAssetTrack的一個實例;如果沒有指定trackID的跟蹤可用,則可以為nil
備注 當加載了key``@“tracks”時,變為可調用而不會阻塞狀態
- (NSArray<AVFragmentedAssetTrack *> *)tracksWithMediaType:(AVMediaType)mediaType;
函數名 tracksWithMediaType:
解釋 提供assetAVFragmentedAssetTracks數組,以呈現指定媒體類型的媒體。
參數 mediaType:
接收器過濾其AVFragmentedAssetTracks的媒體類型。 (媒體類型在AVMediaFormat.h中定義)
返回值 AVFragmentedAssetTracksNSArray;如果沒有指定媒體類型的曲目可用,則可能為nil
備注 當加載了key``@“tracks”時,變為可調用而不會阻塞狀態
- (NSArray<AVFragmentedAssetTrack *> *)tracksWithMediaCharacteristic:(AVMediaCharacteristic)mediaCharacteristic;
函數名 tracksWithMediaCharacteristic:
解釋 提供assetAVFragmentedAssetTracks數組,以呈現具有指定特征的媒體。
參數 mediaCharacteristic:
接收器過濾其AVFragmentedAssetTracks的媒體特性。 (媒體特征在AVMediaFormat.h中定義)
返回值 AVFragmentedAssetTracksNSArray;如果沒有具有指定特征的曲目可用,則可能為空。
備注 當加載了key``@“tracks”時,變為可調用而不會阻塞狀態

AVFragmentedAssetMinder

+ (instancetype)fragmentedAssetMinderWithAsset:(AVAsset<AVFragmentMinding> *)asset mindingInterval:(NSTimeInterval)mindingInterval;
函數名稱 fragmentedAssetMinderWithAsset:mindingInterval:
解釋 創建AVFragmentedAssetMinder,將指定的asset添加到其中,并將mindingInterval設置為指定的值。
參數 asset:
要添加到AVFragmentedAssetMinderAVFragmentedAsset實例

mindingInterval:
AVFragmentedAssetMinder的初始調度間隔。
返回值 返回一個AVFragmentedAssetMinder的新實例。
- (instancetype)initWithAsset:(AVAsset<AVFragmentMinding> *)asset mindingInterval:(NSTimeInterval)mindingInterval;
函數名稱 initWithAsset:mindingInterval:
解釋 創建AVFragmentedAssetMinder,將指定的asset添加到其中,并將mindingInterval設置為指定的值。
參數 asset:
要添加到AVFragmentedAssetMinderAVFragmentedAsset實例

mindingInterval:AVFragmentedAssetMinder的初始調度間隔。
返回值 返回一個AVFragmentedAssetMinder的新實例。
@property (nonatomic) NSTimeInterval mindingInterval;

NSTimeInterval,指示應檢查其他片段的頻率。默認時間間隔為10.0

@property (nonatomic, readonly) NSArray<AVAsset<AVFragmentMinding> *> *assets;

成為minded AVFragmentedAsset對象的NSArray

- (void)addFragmentedAsset:(AVAsset<AVFragmentMinding> *)asset;
函數名稱 addFragmentedAsset:
解釋 將碎片asset添加到正在構建的asset數組中。
參數 asset:
要添加到minder的碎片asset
- (void)removeFragmentedAsset:(AVAsset<AVFragmentMinding> *)asset;
函數名稱 removeFragmentedAsset:
解釋 從成為mindedasset數組中刪除碎片asset
參數 asset:
minder中刪除的零碎asset

AVURLAssetContentKeyEligibility

@property (nonatomic, readonly) BOOL mayRequireContentKeysForMediaDataProcessing API_AVAILABLE(macos(10.12.4), ios(10.3), tvos(10.2), watchos(3.3));

允許將AVURLAsset作為內容key recipient添加到AVContentKeySession

上一章 目錄 下一章
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,622評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,716評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,746評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,991評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,706評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,036評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,029評論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,203評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,725評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,451評論 3 361
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,677評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,161評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,857評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,266評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,606評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,407評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,643評論 2 380

推薦閱讀更多精彩內容