AVAsset

news/2024/11/8 15:12:18/

asset这个词大家肯定看的很多.在Xcode工程中可以用asset特殊文件夹放一些资源文件.类似图片等.AVAsset也是表示和资源有关的.不过是和音视频资源有关的.

首先呢,这个AVAsset是一个类似NSOpeation的类,当然,我的意思不是说他是多线程的,而是说这个类是虚类

方法

+ (instancetype)assetWithURL:(NSURL *)URL;

一般该方法创建出来的实例都是AVAsset的子类.类似AVURLAsset这种类.

属性

/// 资源的时长(可以理解为音乐一首歌的长度)
@property (nonatomic, readonly) CMTime duration;/// AVAsset播放的自然速率.一般都为1.0.
@property (nonatomic, readonly) float preferredRate;/// 表示AVAsset的首选音量.一般是1.0.
@property (nonatomic, readonly) float preferredVolume;/// 音轨和视频轨道的方向
@property (nonatomic, readonly) CGAffineTransform preferredTransform;/// 视频大小,已废弃
@property (nonatomic, readonly) CGSize naturalSize API_DEPRECATED("No longer supported", macos(10.7, 10.8), ios(4.0, 5.0), tvos(9.0, 9.0)) API_UNAVAILABLE(watchos);/// 显示标准,AVAsset最佳显示模式
@property (nonatomic, readonly) AVDisplayCriteria *preferredDisplayCriteria API_AVAILABLE(tvos(11.2)) API_UNAVAILABLE(ios) API_UNAVAILABLE(macos, watchos);/// 流资源的实时偏移程度
@property (nonatomic, readonly) CMTime minimumTimeOffsetFromLive API_AVAILABLE(macos(10.15), ios(13.0), tvos(13.0), watchos(6.0));

注:duration想要精确值的话,创建的时候传入AVURLAssetPreferPreciseDurationAndTimingKey设置为YES是精确值.NO是估计值

分类属性

AVAssetReferenceRestrictions (访问限制)

/// 对外部媒体数据的引用的解析有关
typedef NS_OPTIONS(NSUInteger, AVAssetReferenceRestrictions) {/// 不禁止AVAssetReferenceRestrictionForbidNone = 0UL,/// 禁止下载AVAssetReferenceRestrictionForbidRemoteReferenceToLocal = (1UL << 0),/// 禁止上传AVAssetReferenceRestrictionForbidLocalReferenceToRemote = (1UL << 1),/// 禁止远程跨站点引用AVAssetReferenceRestrictionForbidCrossSiteReference = (1UL << 2),/// 禁止除了存储在asset容器文件以外的本地引用AVAssetReferenceRestrictionForbidLocalReferenceToLocal = (1UL << 3),/// 禁止所有,只允许引用存储在asset容器文件中的媒体数据AVAssetReferenceRestrictionForbidAll = 0xFFFFUL,AVAssetReferenceRestrictionDefaultPolicy = AVAssetReferenceRestrictionForbidLocalReferenceToRemote
};/// 默认为`AVAssetReferenceRestrictionForbidNone`
@property (nonatomic, readonly) AVAssetReferenceRestrictions referenceRestrictions API_AVAILABLE(macos(10.7), ios(5.0), tvos(9.0)) API_UNAVAILABLE(watchos);

AVAssetTrackInspection (track)

/// AVAsset对象包含的AVAssetTracks数组
@property (nonatomic, readonly) NSArray<AVAssetTrack *> *tracks;/// 返回指定trackid的track.不存在就返回nil
- (nullable AVAssetTrack *)trackWithTrackID:(CMPersistentTrackID)trackID;/// 返回指定媒体格式的tracks数组
- (NSArray<AVAssetTrack *> *)tracksWithMediaType:(AVMediaType)mediaType;/// 返回指定特征的tracks数组
- (NSArray<AVAssetTrack *> *)tracksWithMediaCharacteristic:(AVMediaCharacteristic)mediaCharacteristic;/// 返回AVAsset对象中的所有track组
@property (nonatomic, readonly) NSArray<AVAssetTrackGroup *> *trackGroups API_AVAILABLE(macos(10.9), ios(7.0), tvos(9.0), watchos(1.0));

说明一下.tracks(AVAssetTrack)是AVAsset的组成部分.可以理解为由多个AVAssetTrack组成的.

AVAssetMetadataReading (读取元数据)

/// 返回asset的创建日期,可能为nil.如果asset可以转换为NSDate的形式存储创建日期.则通过[creationDate dateValue]获取.否则通过[creationDate stringValue]获取.
@property (nonatomic, readonly, nullable) AVMetadataItem *creationDate API_AVAILABLE(macos(10.8), ios(5.0), tvos(9.0), watchos(1.0));/// 当前歌词
@property (nonatomic, readonly, nullable) NSString *lyrics;/// 当前asset公共元数据
@property (nonatomic, readonly) NSArray<AVMetadataItem *> *commonMetadata;/// 所有元数据
@property (nonatomic, readonly) NSArray<AVMetadataItem *> *metadata API_AVAILABLE(macos(10.10), ios(8.0), tvos(9.0), watchos(1.0));/// 可用元数据格式字符串数组
@property (nonatomic, readonly) NSArray<AVMetadataFormat> *availableMetadataFormats;/// 所有元数据格式字符串数组
- (NSArray<AVMetadataItem *> *)metadataForFormat:(AVMetadataFormat)format;

AVAssetChapterInspection (章节有关)

/// 可用章节区域
@property (readonly) NSArray<NSLocale *> *availableChapterLocales API_AVAILABLE(macos(10.7), ios(4.3), tvos(9.0), watchos(1.0));/// 每个章节以AVMetadaItem包含章节标题和时间范围的形式返回
- (NSArray<AVTimedMetadataGroup *> *)chapterMetadataGroupsWithTitleLocale:(NSLocale *)locale containingItemsWithCommonKeys:(nullable NSArray<AVMetadataKey> *)commonKeys API_AVAILABLE(macos(10.7), ios(4.3), tvos(9.0), watchos(1.0));/// 每个章节以系统默认语言返回
- (NSArray<AVTimedMetadataGroup *> *)chapterMetadataGroupsBestMatchingPreferredLanguages:(NSArray<NSString *> *)preferredLanguages API_AVAILABLE(macos(10.8), ios(6.0), tvos(9.0), watchos(1.0));

AVAssetMediaSelection

/// 会返回一个可用的媒体特征选项.(包括:AVMediaCharacteristicLegible字幕,AVMediaCharacteristicAudible音轨,AVMediaCharacteristicVisual视频)
@property (nonatomic, readonly) NSArray<AVMediaCharacteristic> *availableMediaCharacteristicsWithMediaSelectionOptions API_AVAILABLE(macos(10.8), ios(5.0), tvos(9.0), watchos(1.0));/// 通过`AVMediaCharacteristic `来获取不同的选项组(音频,字幕,视频)
- (nullable AVMediaSelectionGroup *)mediaSelectionGroupForMediaCharacteristic:(AVMediaCharacteristic)mediaCharacteristic API_AVAILABLE(macos(10.8), ios(5.0), tvos(9.0), watchos(1.0));/// 所有媒体特诊的选项
@property (nonatomic, readonly) NSArray <AVMediaSelection *> *allMediaSelections API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0));

AVAssetProtectedContent (保护内容)

/// asset是否有受保护的内容,有的话未经授权可能无法播放(即是playable的属性为YES也是这样)
@property (nonatomic, readonly) BOOL hasProtectedContent API_AVAILABLE(macos(10.7), ios(4.2), tvos(9.0)) API_UNAVAILABLE(watchos);@end

AVAssetFragments

/// asset能否通过片段进行拓展
@property (nonatomic, readonly) BOOL canContainFragments API_AVAILABLE(macos(10.11), ios(9.0), tvos(9.0)) API_UNAVAILABLE(watchos);/*!@property		containsFragments@abstract		Indicates whether the asset is extended by at least one fragment.@discussion	For QuickTime movie files and MPEG-4 files, the value of this property is YES if canContainFragments is YES and at least one 'moof' box is present after the 'moov' box.
*/
/// 是否包含碎片.
@property (nonatomic, readonly) BOOL containsFragments API_AVAILABLE(macos(10.11), ios(9.0), tvos(9.0)) API_UNAVAILABLE(watchos);/// 碎片的总持续时间.如果没有该属性的值为`overallDurationHint `
@property (nonatomic, readonly) CMTime overallDurationHint API_AVAILABLE(macos(10.12.2), ios(10.2), tvos(10.2), watchos(3.2));

AVAssetUsability (可用性)

/// 是否能播放,当为NO的时候可以尝试播放,但是播放体验可能不符合预期.(AVAsset或者其URL能否用于初始化AVPlayerItem)
@property (nonatomic, readonly, getter=isPlayable) BOOL playable API_AVAILABLE(macos(10.7), ios(4.3), tvos(9.0), watchos(1.0));/// 能否导出(通过AVAssetExportSession)
@property (nonatomic, readonly, getter=isExportable) BOOL exportable API_AVAILABLE(macos(10.7), ios(4.3), tvos(9.0)) API_UNAVAILABLE(watchos);/// 能否提取其中信息(通过`AVAssetReader`)
@property (nonatomic, readonly, getter=isReadable) BOOL readable API_AVAILABLE(macos(10.7), ios(4.3), tvos(9.0)) API_UNAVAILABLE(watchos);/// 资源能否在AVCompositionTrack实例的一个段中使用
@property (nonatomic, readonly, getter=isComposable) BOOL composable API_AVAILABLE(macos(10.7), ios(4.3), tvos(9.0), watchos(1.0));/// 能否将AVAsset写入相册
@property (nonatomic, readonly, getter=isCompatibleWithSavedPhotosAlbum) BOOL compatibleWithSavedPhotosAlbum API_AVAILABLE(ios(5.0), tvos(9.0)) API_UNAVAILABLE(watchos) API_UNAVAILABLE(macos);/// asset是否可以使用`AirPlay Video`在外部设备播放.
@property (nonatomic, readonly, getter=isCompatibleWithAirPlayVideo) BOOL compatibleWithAirPlayVideo API_AVAILABLE(macos(10.11), ios(9.0), tvos(9.0)) API_UNAVAILABLE(watchos);

http://www.ppmy.cn/news/428333.html

相关文章

AV1的实时模式

不久前&#xff0c;Google Duo宣布将全面转向AV1。相比于VP9&#xff0c;AV1能够带来更好的编码效率&#xff0c;为用户提供更好的视频体验。本文来自Google软件工程师 姜健在LiveVideoStack线上分享的内容。 文 / 姜健 整理 / LiveVideoStack 视频回放&#xff1a; https://w…

Bilibili支持了AV1编码,关于AV1编码你知道吗?

Bilibili支持了AV1编码&#xff0c;关于AV1编码你知道吗&#xff1f; AV1编码是一种新的视频编码标准&#xff0c;由联合开发的开源编码器&#xff0c;它由英特尔、微软、谷歌、苹果、Netflix、AMD、ARM、NVIDIA和其他一些公司共同开发&#xff0c;旨在替代H.264和HEVC等现有的…

av1 学习资料

1.技术简介&#xff0c;博客地址&#xff1a;AV1编码技术详解_FeelTouch Labs的博客-CSDN博客_av1编码

iOS】AVPlayer 播放音视频

1、常见的音视频播放器 iOS开发中不可避免地会遇到音视频播放方面的需求。 常用的音频播放器有 AVAudioPlayer、AVPlayer 等。不同的是&#xff0c;AVAudioPlayer 只支持本地音频的播放&#xff0c;而 AVPlayer 既支持本地音频播放&#xff0c;也支持网络音频播放。 常用的视频…

AVAudioPlayer音频播放器—IOS开发

IOS中有三种播放音频的方式&#xff1a;AVAudioPlayer、音频服务、音频队列。 此文主要讲AVAudioPlayer&#xff0c;其他两个请见相关文章。 AVAudioPlayer在AVFoundation框架下&#xff0c;所以我们要导入AVFoundation.framework。 AVAudioPlayer类封装了播放单个声音的能力…

【iOS】AVPlayer 视频播放

视频播放器的类别 iOS开发中不可避免地会遇到音视频播放方面的需求。 常用的音频播放器有 AVAudioPlayer、AVPlayer 等。不同的是&#xff0c;AVAudioPlayer 只支持本地音频的播放&#xff0c;而 AVPlayer 既支持本地音频播放&#xff0c;也支持网络音频播放。 常用的视频播放…

AVB简介--第三篇:AVTP简介

转自&#xff1a;AVB简介--第三篇&#xff1a;AVTP简介 本文是AVB系列文章的第三篇&#xff0c;主要介绍AVB协议族中的音视频传输协议AVTP(IEEE Std 1722-2016)。 AVTP是个链路层传输协议&#xff0c;其主要作用有两个&#xff1a; 音视频数据封装&#xff1a;将音视频数据封…

AVFoundation(一)

AVFoundation是可用于播放和创建基于时间的视听媒体的几种框架之一。它提供了一个Objective-C接口&#xff0c;您可以使用该接口详细处理基于时间的视听数据。例如&#xff0c;您可以使用它来检查、创建、编辑或重新编码媒体文件。您还可以从设备中获取输入流&#xff0c;并在实…