AVAssetWriterInput
Оператор импорта
Swift
import AVFoundation
Objective C
@import AVFoundation;
Доступность
Доступный в iOS 4.1 и позже.
Вы используете AVAssetWriterInput
добавлять выборки носителей, упакованные как объекты CMSampleBuffer (см. CMSampleBufferRef
), или наборы метаданных, к одноколейному пути выходного файла AVAssetWriter
объект.
Когда существуют многократные вводы, AVAssetWriter
попытки записать данные носителей в идеальном образце чередования для эффективности в хранении и воспроизведении. Каждый из его вводов сигнализирует свою готовность получить данные носителей для записи согласно тому образцу через значение readyForMoreMediaData
. Если readyForMoreMediaData
YES
true
, ввод может принять дополнительные данные носителей при поддержании надлежащего чередования. Можно только добавить данные носителей к вводу в то время как readyForMoreMediaData
свойство YES
true
.
Если Вы пишете данные носителей из источника нев реальном времени, такого как экземпляр
AVAssetReader
, необходимо удержать при генерации или получении большего количества данных носителей для добавления к вводу когда значениеreadyForMoreMediaData
NO
false
. Для помощи с управлением предоставления данных носителей нев реальном времени можно использоватьrequestMediaDataWhenReadyOnQueue:usingBlock:
указать блок, который должен вызвать ввод каждый раз, когда это готово к вводу быть добавленным.Если Вы пишете данные носителей из источника в реальном времени такой как
AVCaptureOutput
объект, необходимо установить вводexpectsMediaDataInRealTime
свойство кYES
true
гарантировать что значениеreadyForMoreMediaData
вычисляется соответственно. КогдаexpectsMediaDataInRealTime
YES
true
,readyForMoreMediaData
станетNO
false
только, когда ввод не может обработать выборки носителей так быстро, как им предоставлен клиент. ЕслиreadyForMoreMediaData
становитсяNO
false
для источника в реальном времени клиент, возможно, должен отбросить выборки или рассмотреть сокращение скорости передачи данных добавленных выборок.
Значение readyForMoreMediaData
будет часто изменяться от NO
false
к YES
true
асинхронно, поскольку ранее предоставленные данные носителей обработаны и записаны в вывод. Для всего актива вводы писателя временно возможно возвратиться NO
false
для readyForMoreMediaData
.
-
Возвращает новый входной объект писателя, инициализированный с указанным типом среды и выходными настройками.
Объявление
Objective C
+ (AVAssetWriterInput *)assetWriterInputWithMediaType:(NSString *)
mediaType
outputSettings:(NSDictionary *)outputSettings
Параметры
mediaType
Тип выборок, которые будут приняты входным объектом. Для списка типов среды см. Ссылку Констант Основы AV.
outputSettings
Настройки, используемые для кодирования носителей, добавленных к выводу. Передача
nil
указать, что не должны быть повторно закодированы добавленные выборки.Ключи настроек аудиовыхода определяются в Константах Параметров звука Основы AV. Ключи настроек видеовыхода определяются в Ссылке Констант Основы AV. Настройки видеовыхода с ключами от
<CoreVideo/CVPixelBuffer.h>
в настоящее время не поддерживаются.Возвращаемое значение
Новый входной объект писателя, который может принять выборки указанного типа среды и записать им в выходной файл.
Обсуждение
Каждый новый ввод принимает данные для новой дорожки выходного файла писателя актива. Вы добавляете ввод к писателю актива, использующему
AVAssetWriter
методaddInput:
.Передача
nil
дляoutputSettings
дает вводу команду проходить через добавленные выборки, не делая никакой обработки, прежде чем они будут записаны в выходной файл. Это полезно, например, при добавлении буферов, которые уже находятся в желательном сжатом формате.Оператор импорта
Objective C
@import AVFoundation;
Доступность
Доступный в iOS 4.1 и позже.
-
Возвращает новый входной объект писателя, инициализированный с указанным типом среды, выходными настройками и подсказкой исходного формата.
Объявление
Objective C
+ (AVAssetWriterInput *)assetWriterInputWithMediaType:(NSString *)
mediaType
outputSettings:(NSDictionary *)outputSettings
sourceFormatHint:(CMFormatDescriptionRef)sourceFormatHint
Параметры
mediaType
Тип среды выборок, которые будут приняты входным объектом. Для списка типов среды см. Ссылку Констант Основы AV.
outputSettings
Укажите словарь, содержащий настройки, используемые для кодирования носителей, добавленных к выводу. Можно передать
nil
если Вы не хотите, чтобы были повторно закодированы добавленные выборки.Ключи настроек аудиовыхода определяются в Константах Параметров звука Основы AV. Ключи настроек видеовыхода определяются в Ссылке Констант Основы AV. Настройки видеовыхода с ключами от
<CoreVideo/CVPixelBuffer.h>
в настоящее время не поддерживаются.sourceFormatHint
Этот параметр содержит подсказку типа буферов формата, которые будут добавлены. При указании значения для этого параметра входной объект писателя может быть в состоянии заполнить без вести пропавших выходных настроек или выполнить больше первичной проверки. При указании значения для этого свойства необходимо удостовериться, что буферы, которые Вы добавляете, имеют обозначенный тип.
Возвращаемое значение
Новый входной объект писателя, который может принять выборки указанного типа среды и записать им в выходной файл.
Обсуждение
Каждый новый ввод принимает данные для новой дорожки выходного файла писателя актива. Вы добавляете ввод к писателю актива, использующему
AVAssetWriter
методaddInput:
.Передача
nil
для вывода настройки дает вводу команду проходить через добавленные выборки, не делая никакой обработки, прежде чем они будут записаны в выходной файл. Это полезно, например, при добавлении буферов, которые уже находятся в желательном сжатом формате. Однако пишущий в файл фильма в формате QuickTime (т.е.AVAssetWriter
был инициализирован с типом файла кромеAVFileTypeQuickTimeMovie
),AVAssetWriter
только поддержки, проходящие через ограниченный набор типов среды и подтипов. Для прохождения через данные носителей к файлам кромеAVFileTypeQuickTimeMovie
, не -NULL
подсказка формата должна быть предоставлена.Оператор импорта
Objective C
@import AVFoundation;
Доступность
Доступный в iOS 6.0 и позже.
-
Инициализируйте входной объект писателя с указанным типом среды и выведите настройки.
Объявление
Objective C
- (instancetype)initWithMediaType:(NSString *)
mediaType
outputSettings:(NSDictionary *)outputSettings
Параметры
mediaType
Тип среды выборок, которые будут приняты входным объектом. Для списка типов среды см. Ссылку Констант Основы AV.
outputSettings
Укажите словарь, содержащий настройки, используемые для кодирования носителей, добавленных к выводу. Можно передать
nil
для этого параметра, если Вы не хотите, чтобы были повторно закодированы добавленные выборки.Ключи настроек аудиовыхода определяются в Константах Параметров звука Основы AV. Ключи настроек видеовыхода определяются в Ссылке Констант Основы AV. Настройки видеовыхода с ключами от
CVPixelBufferRef
в настоящее время не поддерживаются.Возвращаемое значение
Инициализированный входной объект писателя, который может принять выборки указанного типа среды и записать им в выходной файл.
Обсуждение
Каждый новый ввод принимает данные для новой дорожки выходного файла писателя актива. Вы добавляете ввод к писателю актива, использующему
AVAssetWriter
методaddInput:
.Передача
nil
для вывода настройки дает вводу команду проходить через добавленные выборки, не делая никакой обработки, прежде чем они будут записаны в выходной файл. Это полезно, например, при добавлении буферов, которые уже находятся в желательном сжатом формате. Однако пишущий в файл фильма в формате QuickTime (т.е.AVAssetWriter
был инициализирован с типом файла кромеAVFileTypeQuickTimeMovie
),AVAssetWriter
только поддержки, проходящие через ограниченный набор типов среды и подтипов. Для прохождения через данные носителей к файлам кромеAVFileTypeQuickTimeMovie
, не -NULL
с помощью подсказка формата нужно быть предоставленыinitWithMediaType:outputSettings:sourceFormatHint:
вместо этого метода.Когда
mediaType
параметрAVMediaTypeAudio
,outputSettings
словарь не поддерживаетAVEncoderAudioQualityKey
иAVSampleRateConverterAudioQualityKey
ключи. При использовании этого метода словарь параметров звука должен быть полностью указан, означая, что это должно содержатьAVFormatIDKey
,AVSampleRateKey
, иAVNumberOfChannelsKey
ключи. Если никакая другая информация макета канала не доступна, значение1
дляAVNumberOfChannelsKey
ключевые результаты в моно выводе и значении2
результаты в выводе стерео. ЕслиAVNumberOfChannelsKey
ключ указывает значение, больше, чем 2, словарь должен также указать значение дляAVChannelLayoutKey
ключ. Для аудио с помощьюkAudioFormatLinearPCM
отформатируйте, включайте всех релевантныхAVLinearPCM
*Key
ключи. ДляkAudioFormatAppleLossless
отформатируйте, включайтеAVEncoderBitDepthHintKey
ключи. Чтобы избежать указывать значения для каждого из тех ключей, используйтеinitWithMediaType:outputSettings:sourceFormatHint:
метод вместо этого.Когда
mediaType
параметрAVMediaTypeVideo
,outputSettings
словарь должен запросить сжатый формат видео. Это означает, что значения, указанные в словаре, должны соблюсти правила для сжатого видеовыхода, как описано вAVVideoSettings.h
. При использовании этого инициализатора словарь параметров видео должен быть полностью указан, означая, что это должно содержать следующие ключи:AVVideoCodecKey
,AVVideoWidthKey
, иAVVideoHeightKey
. Чтобы избежать указывать значения для каждого из тех ключей, используйтеinitWithMediaType:outputSettings:sourceFormatHint:
метод.Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в iOS 4.1 и позже.
-
init (mediaType:outputSettings:sourceFormatHint:) - initWithMediaType:outputSettings:sourceFormatHint:
Инициализируйте входной объект писателя с указанным типом среды, выведите настройки и исходную подсказку.
Объявление
Swift
init!(mediaType
mediaType
: String!, outputSettingsoutputSettings
: [NSObject : AnyObject]!, sourceFormatHintsourceFormatHint
: CMFormatDescription!)Objective C
- (instancetype)initWithMediaType:(NSString *)
mediaType
outputSettings:(NSDictionary *)outputSettings
sourceFormatHint:(CMFormatDescriptionRef)sourceFormatHint
Параметры
mediaType
Тип среды выборок, которые будут приняты входным объектом. Для списка типов среды см. Ссылку Констант Основы AV.
outputSettings
Укажите словарь, содержащий настройки, используемые для кодирования носителей, добавленных к выводу. Можно передать
nil
для этого параметра, если Вы не хотите, чтобы были повторно закодированы добавленные выборки.Ключи настроек аудиовыхода определяются в Константах Параметров звука Основы AV. Ключи настроек видеовыхода определяются в Ссылке Констант Основы AV. Настройки видеовыхода с ключами от
<CoreVideo/CVPixelBuffer.h>
в настоящее время не поддерживаются.sourceFormatHint
Этот параметр содержит подсказку типа буферов формата, которые будут добавлены. При указании значения для этого параметра входной объект писателя может быть в состоянии заполнить без вести пропавших выходных настроек или выполнить больше первичной проверки. При указании значения для этого свойства необходимо удостовериться, что буферы, которые Вы добавляете, имеют обозначенный тип.
Возвращаемое значение
Инициализированный входной объект писателя, который может принять выборки указанного типа среды и записать им в выходной файл.
Обсуждение
Каждый новый ввод принимает данные для новой дорожки выходного файла писателя актива. Вы добавляете ввод к писателю актива, использующему
AVAssetWriter
методaddInput:
.Передача
nil
для вывода настройки дает вводу команду проходить через добавленные выборки, не делая никакой обработки, прежде чем они будут записаны в выходной файл. Это полезно, например, при добавлении буферов, которые уже находятся в желательном сжатом формате. Однако пишущий в файл фильма в формате QuickTime (т.е.AVAssetWriter
был инициализирован с типом файла кромеAVFileTypeQuickTimeMovie
),AVAssetWriter
только поддержки, проходящие через ограниченный набор типов среды и подтипов. Для прохождения через данные носителей к файлам кромеAVFileTypeQuickTimeMovie
, не -NULL
подсказка формата должна быть предоставлена.Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в iOS 6.0 и позже.
-
Добавляет выборки к получателю.
Объявление
Swift
func appendSampleBuffer(_
sampleBuffer
: CMSampleBuffer!) -> BoolObjective C
- (BOOL)appendSampleBuffer:(CMSampleBufferRef)
sampleBuffer
Параметры
sampleBuffer
CMSampleBuffer, который будет добавлен.
Возвращаемое значение
YES
true
если sampleBuffer, как добавлено успешно, иначеNO
false
.Обсуждение
Информация синхронизации в демонстрационном буфере, который рассматривают относительно времени, передала писателю актива
startSessionAtSourceTime:
будет использоваться для определения синхронизации тех выборок в выходном файле.Если
NO
false
возвращается, клиенты могут проверить значениеAVAssetWriter
состояние
свойство, чтобы определить, была ли отменена работа записи, завершенная, неработающая, или. Еслиstatus
AVAssetWriterStatusFailed
,AVAssetWriter
ошибка
свойство будет содержать экземплярNSError
ß, который описывает отказ.Не изменять
sampleBuffer
или его содержание после передачи его этому методу.Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в iOS 4.1 и позже.
-
readyForMoreMediaData
СвойствоБулево значение, указывающее готовность ввода принять больше данных носителей. (только для чтения)
Объявление
Swift
var readyForMoreMediaData: Bool { get }
Objective C
@property(nonatomic, readonly, getter=isReadyForMoreMediaData) BOOL readyForMoreMediaData
Обсуждение
Это свойство является заметным наблюдением значения ключа использования (см., что Значение ключа Наблюдает Руководство по программированию). Наблюдатели не должны предполагать, что они будут уведомлены относительно изменений на определенном потоке.
Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в iOS 4.1 и позже.
-
Говорит писателю, что больше буферов не будет добавлено к этому вводу.
Объявление
Swift
func markAsFinished()
Objective C
- (void)markAsFinished
Обсуждение
Если Вы контролируете каждый ввод
expectsMediaDataInRealTime
когда Вы закончили добавлять буферы к дорожке, значение для хранения выходного файла хорошо чередованным важно вызвать этот метод. Это необходимо, чтобы препятствовать тому, чтобы другие вводы остановились, поскольку они могут иначе ожидать навсегда данных носителей того ввода, пытаясь завершить идеальный образец чередования.Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в iOS 4.1 и позже.
-
Дает получателю команду неоднократно вызывать блок, в его удобстве, для сбора данных носителей для записи в вывод.
Объявление
Swift
func requestMediaDataWhenReadyOnQueue(_
queue
: dispatch_queue_t!, usingBlockblock
: (() -> Void)!)Objective C
- (void)requestMediaDataWhenReadyOnQueue:(dispatch_queue_t)
queue
usingBlock:(void (^)(void))block
Параметры
queue
Очередь та, на который
block
должен быть вызван.block
Блок ввод должен вызвать для получения данных носителей.
Обсуждение
Блок должен добавить данные носителей к вводу любой до ввода
readyForMoreMediaData
свойство становитсяNO
false
или до больше нет данных носителей для предоставления (в которой точке они могут принять решение отметить ввод как законченное использованиеmarkAsFinished
). Блок должен тогда выйти. После блочных выходов, если ввод не был отмечен, как закончено, как только ввод обработал данные носителей, которые это получило и становится готовым к большему количеству данных носителей снова, это вызовет блок снова для получения больше.Типичное использование этого метода, с блоком, снабжающим данными носителей к вводу при уважении ввода
readyForMoreMediaData
свойство, мог бы быть похожим на это:[myAVAssetWriterInput requestMediaDataWhenReadyOnQueue:myInputSerialQueue usingBlock:^{
while ([myAVAssetWriterInput isReadyForMoreMediaData])
{
CMSampleBufferRef nextSampleBuffer = [self copyNextSampleBufferToWrite];
if (nextSampleBuffer)
{
[myAVAssetWriterInput appendSampleBuffer:nextSampleBuffer];
CFRelease(nextSampleBuffer);
}
else
{
[myAVAssetWriterInput markAsFinished];
break;
}
}
}];
Вы не должны использовать этот метод с буферным источником стиля нажатия, такой как
AVCaptureAudioDataOutput
илиAVCaptureVideoDataOutput
, потому что такая комбинация будет обычно требовать промежуточной организации очередей буферов. Вместо этого этот метод лучше подходит для буферного источника стиля получения по запросу такой какAVAssetReaderOutput
объект.При использовании буферного источника стиля нажатия обычно лучше сразу добавить каждый буфер к вводу писателя актива, непосредственно поскольку это получено с помощью
appendSampleBuffer:
. Используя эту стратегию, часто возможно избежать иметь необходимость стоять в очереди буферы, промежуточные, буферный источник и писатель актива вводят. Обратите внимание на то, что многие из этих буферных источников стиля нажатия также производят буферы в режиме реального времени, когда необходимо установитьexpectsMediaDataInRealTime
кYES
true
.Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в iOS 4.1 и позже.
См. также
-
metadata
СвойствоНабор метаданных уровня дорожки для связи с активом и для каретки в выходном файле.
Объявление
Swift
var metadata: [AnyObject]!
Objective C
@property(nonatomic, copy) NSArray *metadata
Обсуждение
Массив содержит
AVMetadataItem
объекты, представляющие набор метаданных уровня дорожки, которые будут записаны в выходном файле.Вы не можете установить это свойство после того, как запустилась запись.
Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в iOS 4.1 и позже.
-
transform
СвойствоПреобразование, указанное в выходном файле как предпочтительная трансформация визуальных данных носителей в целях дисплея.
Объявление
Swift
var transform: CGAffineTransform
Objective C
@property(nonatomic) CGAffineTransform transform
Обсуждение
Если никакое значение не указано, преобразование идентификационных данных используется.
Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в iOS 4.1 и позже.
-
mediaTimeScale
СвойствоУказывает масштаб времени носителей, который будет использоваться
Объявление
Swift
var mediaTimeScale: CMTimeScale
Objective C
@property(nonatomic) CMTimeScale mediaTimeScale
Обсуждение
Для типов файлов, поддерживающих масштабы времени носителей, такие как файлы фильма в формате QuickTime, указывает масштаб времени носителей, который будет использоваться. Значение по умолчанию этого свойства
0
, который указывает, что входной объект писателя должен выбрать надлежащее значение.Это - ошибка присвоить значение кроме
0
к этому свойству, если объектmediaType
свойство установлено в кAVMediaTypeAudio
.Вы не можете установить это свойство после того, как запустилась запись.
Во избежание несоответствий между масштабом времени носителей дорожки и масштабом времени носителей результата (см.
AVAssetWriter
свойствоmovieTimeScale
) оба должны быть установлены равняться или совместимые значения.Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в iOS 4.3 и позже.
-
expectsMediaDataInRealTime
СвойствоУказывает, должен ли ввод адаптировать свою обработку данных носителей для источников в реальном времени.
Объявление
Swift
var expectsMediaDataInRealTime: Bool
Objective C
@property(nonatomic) BOOL expectsMediaDataInRealTime
Обсуждение
Если Вы добавляете данные носителей к вводу из источника в реальном времени, такой как
AVCaptureOutput
, необходимо установитьexpectsMediaDataInRealTime
кYES
true
. Это гарантирует этоreadyForMoreMediaData
вычисляется соответственно для использования в реальном времени.Вы не можете установить это свойство после того, как запустилась запись.
Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в iOS 4.1 и позже.
-
marksOutputTrackAsEnabled
СвойствоВозвраты, включена ли дорожка получателя.
Объявление
Swift
var marksOutputTrackAsEnabled: Bool
Objective C
@property(nonatomic) BOOL marksOutputTrackAsEnabled
Обсуждение
Для типов файлов, поддерживающих включенный и отключенные дорожки, такие как файлы фильма в формате QuickTime, указывает, должна ли дорожка, соответствующая получателю, быть включена по умолчанию для воспроизведения и обработки.
Значение по умолчанию
YES
true
.Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в iOS 7.0 и позже.
-
naturalSize
СвойствоРазмер, указанный в выходном файле как естественные размерности визуальных данных носителей для дисплея.
Обсуждение
Если значение по умолчанию,
CGSizeZero
, указан,naturalSize
из дорожки, соответствующей получателю, установлен согласно размерностям, обозначенным описаниями формата, в конечном счете записанными в выходную дорожку.Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в iOS 7.0 и позже.
-
preferredVolume
СвойствоПредпочтительный уровень громкости, который будет сохранен в выходном файле.
Объявление
Swift
var preferredVolume: Float
Objective C
@property(nonatomic) float preferredVolume
Обсуждение
Значение для этого свойства должно обычно быть в диапазоне
0.0
к1.0
.Значение по умолчанию
1.0
, который эквивалентен «нормальному» уровню громкости.Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в iOS 7.0 и позже.
-
Связывает дорожку, соответствующую указанному вводу с дорожкой, соответствующей с получателем.
Объявление
Swift
func addTrackAssociationWithTrackOfInput(_
input
: AVAssetWriterInput!, typetrackAssociationType
: String!)Objective C
- (void)addTrackAssociationWithTrackOfInput:(AVAssetWriterInput *)
input
type:(NSString *)trackAssociationType
Параметры
input
Экземпляр
AVAssetWriterInput
с соответствующей дорожкой для соединения с дорожкой, соответствующей с получателем.trackAssociationType
Тип ассоциации дорожки для добавления. Общие типы ассоциации дорожки, такой как
AVTrackAssociationTypeTimecode
определяются вTrack Association Types
.Обсуждение
Если тип ассоциации требует дорожек определенных типов среды, не соответствующих типы среды вводов, или если тип выходного файла не поддерживает ассоциации дорожки,
NSInvalidArgumentException
повышен.Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в iOS 7.0 и позже.
-
Допустима ли ассоциация между дорожками, соответствующими паре вводов.
Объявление
Swift
func canAddTrackAssociationWithTrackOfInput(_
input
: AVAssetWriterInput!, typetrackAssociationType
: String!) -> BoolObjective C
- (BOOL)canAddTrackAssociationWithTrackOfInput:(AVAssetWriterInput *)
input
type:(NSString *)trackAssociationType
Параметры
input
Экземпляр
AVAssetWriterInput
с соответствующей дорожкой для соединения с дорожкой, соответствующей с получателем.trackAssociationType
Тип ассоциации дорожки для тестирования. Общие типы ассоциации дорожки, такой как
AVTrackAssociationTypeTimecode
определяются вTrack Association Types
.Возвращаемое значение
YES
true
если может быть добавлена ассоциация дорожки; иначеNO
false
.Обсуждение
Если тип ассоциации требует дорожек определенных типов среды, не соответствующих типы среды вводов, или если тип выходного файла не поддерживает ассоциации дорожки, возвраты
NO
false
.Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в iOS 7.0 и позже.
-
mediaType
СвойствоТип среды выборок, которые могут быть добавлены к вводу. (только для чтения)
Объявление
Swift
var mediaType: String! { get }
Objective C
@property(nonatomic, readonly) NSString *mediaType
Обсуждение
Значение этого свойства является одной из строк типа среды, определенных в Ссылке Констант Основы AV.
Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в iOS 4.1 и позже.
-
outputSettings
СвойствоНастройки, используемые для кодирования носителей, добавленных к выводу. (только для чтения)
Объявление
Swift
var outputSettings: [NSObject : AnyObject]! { get }
Objective C
@property(nonatomic, readonly) NSDictionary *outputSettings
Обсуждение
Значение
nil
указывает, что не должны быть повторно закодированы добавленные выборки.Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в iOS 4.1 и позже.
-
sourceFormatHint
СвойствоПодсказка о формате буферов, которые будут добавлены. (только для чтения)
Объявление
Swift
var sourceFormatHint: CMFormatDescription! { get }
Objective C
@property(nonatomic, readonly) CMFormatDescriptionRef sourceFormatHint
Обсуждение
AVAssetWriterInput
объект может быть в состоянии использовать эту подсказку, чтобы заполнить без вести пропавших выходных настроек или выполнить больше первичной проверки.Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в iOS 6.0 и позже.
См. также
-
sampleReferenceBaseURL
СвойствоДля типов файлов, поддерживающих пишущие демонстрационные ссылки, такие как файлы фильма в формате QuickTime, указывает, что демонстрационные ссылки базового URL относительно.
Объявление
Swift
@NSCopying var sampleReferenceBaseURL: NSURL!
Objective C
@property(nonatomic, copy) NSURL *sampleReferenceBaseURL
Обсуждение
Когда добавление демонстрационных ссылок будет относительно этого URL, если значение этого свойства может быть разрешено как абсолютный URL, демонстрационные расположения, записанные в файл. URL должен указать на расположение, которое находится в каталоге, который является родителем демонстрационного ссылочного расположения.
Например: установка
sampleReferenceBaseURL
свойство кfile:///User/johnappleseed/Movies/
и добавление выборки буферизует сkCMSampleBufferAttachmentKey_SampleReferenceURL
присоединяемый набор кfile:///User/johnappleseed/Movies/data/movie1.mov
вызовет демонстрационную ссылкуdata/movie1.mov
быть записанным в фильм.Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в iOS 8.0 и позже.
-
extendedLanguageTag
СвойствоЯзыковой тег для соединения с дорожкой, соответствующей получателю
Объявление
Swift
var extendedLanguageTag: String!
Objective C
@property(nonatomic, copy) NSString *extendedLanguageTag
Обсуждение
Значение указано как языковой тег RFC 4646; может быть
nil
когда никакой тег не записан в дорожку.Расширенные языковые теги обычно устанавливаются только, когда ISO, 6392/t код языка отдельно неоднозначен, как в случаях, в которых данные носителей должен отличить не только язык, но также и региональным диалектом в использовании или используемой системе письменности.
Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в iOS 7.0 и позже.
См. также
-
languageCode
СвойствоЯзык для соединения с дорожкой, соответствующей получателю.
Объявление
Swift
var languageCode: String!
Objective C
@property(nonatomic, copy) NSString *languageCode
Обсуждение
Значение указано как ISO 6392/t код языка; может быть
nil
когда никакой код языка не записан в дорожку..Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в iOS 7.0 и позже.
См. также
-
canPerformMultiplePasses
СвойствоБулево значение, указывающее, мог ли бы ввод выполнить многократные передачи по добавленным данным носителей. (только для чтения)
Объявление
Swift
var canPerformMultiplePasses: Bool { get }
Objective C
@property(nonatomic, readonly) BOOL canPerformMultiplePasses
Обсуждение
Когда значение для этого свойства
YES
true
, Ваш источник для данных носителей должен быть сконфигурирован для произвольного доступа. После добавления всех данных носителей для текущей передачи, как указаноcurrentPassDescription
свойство, вызватьmarkCurrentPassAsFinished
запустить процесс определения, необходимы ли дополнительные передачи. Обратите внимание на то, что для ввода все еще возможно в этом случае выполнить только начальную передачу, если это решает, что не будет никакого преимущества к выполнению многократных передач.Когда значение для этого свойства
NO
false
, Ваш источник для данных носителей только должен поддерживать последовательный доступ. В этом случае добавьте все исходные носители один раз и вызовmarkAsFinished
.В конфигурации по умолчанию
AVAssetWriterInput
, значение для этого свойства будетNO
false
. В настоящее время единственный путь к этому свойству для становленияYES
true
когдаperformsMultiPassEncodingIfSupported
был установлен вYES
true
. Окончательное значение будет доступно послеstartWriting
когда определенный кодер был выбран, вызывается.Это свойство поддерживает наблюдение значения ключа.
Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в iOS 8.0 и позже.
-
currentPassDescription
СвойствоОбеспечивает объект, описывающий требования, такие как исходные диапазоны времени, чтобы добавить или повторно добавить, для текущей передачи. (только для чтения)
Объявление
Swift
var currentPassDescription: AVAssetWriterInputPassDescription! { get }
Objective C
@property(readonly) AVAssetWriterInputPassDescription *currentPassDescription
Обсуждение
Если значение этого свойства
nil
, нет никакого запроса, который будет выполнен иmarkAsFinished
должен быть вызван на вводе писателя актива.Во время первой передачи запрос будет содержать единственный диапазон времени от нуля до положительной бесконечности, указывая, что должны быть добавлены все носители из источника. Это также будет истиной когда
canPerformMultiplePasses
NO
false
, когда будет выполняться только одна передача.Значение этого свойства будет
nil
преждеstartWriting
вызывается на присоединенном писателе актива. Это перейдет к начальной букве не -nil
значение во время вызова кstartWriting
. После этого значение этого свойства изменится только после вызова кmarkCurrentPassAsFinished
.respondToEachPassDescriptionOnQueue:usingBlock:
метод допускает уведомление в начале каждой передачи.Это свойство поддерживает наблюдение значения ключа. Наблюдатели не должны предполагать, что они будут уведомлены относительно изменений на определенном потоке.
Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в iOS 8.0 и позже.
-
Дает получателю команду анализировать данные носителей, добавленные и определяющие, могли ли бы результаты быть улучшены путем перекодирования определенных сегментов.
Объявление
Swift
func markCurrentPassAsFinished()
Objective C
- (void)markCurrentPassAsFinished
Обсуждение
Когда значение
canPerformMultiplePasses
YES
true
, вызовите этот метод после добавления всех данных носителей. После того, как получатель анализирует, гарантирована ли дополнительная передача, значениеcurrentPassDescription
изменится (обычно асинхронно), чтобы описать, как установить для следующей передачи. Несмотря на то, что возможно использовать наблюдение значения ключа для определения когда значениеcurrentPassDescription
изменился, обычно более удобно вызватьrespondToEachPassDescriptionOnQueue:usingBlock:
для запуска работы для каждой передачи.После передобавления данных носителей для всех диапазонов времени новой передачи вызовите этот метод снова, чтобы определить, должны ли дополнительные сегменты быть повторно добавлены в другой передаче.
Вызов этого метода эффективно отменяет любой предыдущий вызов
requestMediaDataWhenReadyOnQueue:usingBlock:
, значение этогоrequestMediaDataWhenReadyOnQueue:usingBlock:
может быть вызван снова для каждой новой передачи.respondToEachPassDescriptionOnQueue:usingBlock:
метод обеспечивает удобный способ консолидировать эти вызовы в Вашем коде.После каждой передачи у Вас есть опция хранения новых результатов путем вызова
markAsFinished
вместо этого метода. Если значениеcurrentPassDescription
nil
в начале передачи вызватьmarkAsFinished
сказать получателю не ожидать дальнейшие данные носителей.Если значение
canPerformMultiplePasses
NO
false
, значениеcurrentPassDescription
сразу станетnil
после вызова этого метода.Прежде, чем вызвать этот метод, необходимо гарантировать, что получатель присоединен
AVAssetWriter
экземпляр через предшествующий вызов кaddInput:
и этоstartWriting
был вызван на писателе актива.Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в iOS 8.0 и позже.
-
performsMultiPassEncodingIfSupported
СвойствоБулево значение, указывающее, должен ли ввод попытаться закодировать исходные данные носителей с помощью многократных передач.
Объявление
Swift
var performsMultiPassEncodingIfSupported: Bool
Objective C
@property(nonatomic) BOOL performsMultiPassEncodingIfSupported
Обсуждение
Писатель актива ввел, может быть в состоянии достигнуть более высокого качества и/или понизить скорость передачи данных путем выполнения многократных передач по исходным носителям. Это делает это путем анализа данных носителей, добавленных и перекодирование определенных сегментов с различными параметрами. Чтобы сделать это перекодирование, данные носителей для этих сегментов должны быть добавлены снова. Посмотрите
markCurrentPassAsFinished
и свойствоcurrentPassDescription
для механизма, которым ввод назначает сегменты на передобавление.Когда значение этого свойства
YES
true
, значениеreadyForMoreMediaData
для других вводов, присоединенных к тому жеAVAssetWriter
может бытьNO
false
чаще и/или в течение более длительных промежутков времени. В частности значениеreadyForMoreMediaData
для вводов, не делающих (или не может) выполняют многократные передачи, может начаться какNO
false
послеAVAssetWriter
методstartWriting
был вызван и может не измениться наYES
true
пока все многопроходные вводы не завершили свою заключительную передачу.Когда значение этого свойства
YES
true
, ввод может хранить данные в одном или более временных файлах прежде, чем записать сжатые выборки в выходной файл. ИспользуйтеAVAssetWriter
свойствоdirectoryForTemporaryFiles
если необходимо управлять расположением временной записи файла.Значение по умолчанию
NO
false
, подразумевать, что никакой дополнительный анализ не произойдет и никакие сегменты, будет повторно закодировано. Не весь писатель актива ввел конфигурации (например, вводы, сконфигурированные с определенными типами среды или использовать определенные кодеры), может получить преимущества от выполнения многократных передач по исходным носителям. Чтобы определить, может ли выбранный кодер выполнить многократные передачи, запросите значениеcanPerformMultiplePasses
после вызоваstartWriting
.Это - ошибка установить это свойство в
YES
true
когда значение дляexpectsMediaDataInRealTime
YES
true
. Это - также ошибка для писателя актива содержать ввод с этим набором свойств кYES
true
когда любой из его других вводов имеет значениеYES
true
дляexpectsMediaDataInRealTime
.Это свойство не может быть установлено после записи на получателе
AVAssetWriter
запустился.Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в iOS 8.0 и позже.
-
preferredMediaChunkAlignment
СвойствоДля типов файлов, поддерживающих выравнивание блока носителей, такое как файлы фильма в формате QuickTime, указывает, что граница для носителей разделяет выравнивание на блоки в байтах.
Объявление
Swift
var preferredMediaChunkAlignment: Int
Objective C
@property(nonatomic) NSInteger preferredMediaChunkAlignment
Обсуждение
Значение по умолчанию
0
, что означает, что получатель выберет надлежащее значение по умолчанию. Значение1
подразумевает, что никакое дополнение не должно использоваться для достижения определенного выравнивания блока. Это - ошибка установить отрицательную величину для выравнивания блока.Это свойство не может быть установлено после
startWriting
был вызван для получателя.Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в iOS 8.0 и позже.
-
preferredMediaChunkDuration
СвойствоДля типов файлов, поддерживающих продолжительность блока носителей, такую как файлы фильма в формате QuickTime, указывает продолжительность, которая будет использоваться для каждого блока демонстрационных данных в выходном файле.
Объявление
Swift
var preferredMediaChunkDuration: CMTime
Objective C
@property(nonatomic) CMTime preferredMediaChunkDuration
Обсуждение
Продолжительность блока может влиять на гранулярность I/O, выполняемого при чтении медиа-файла, например, во время воспроизведения. Большая продолжительность блока может привести к меньшему количеству чтений от диска за потенциальный счет более высокого объема потребляемой памяти.
«Блок» содержит одну или более выборок. Если продолжительность выборки больше, чем эта предпочтительная продолжительность блока, общая продолжительность выборок в блоке не больше, чем эта предпочтительная продолжительность блока или продолжительность единственной выборки.
Значение по умолчанию
kCMTimeInvalid
, что означает, что получатель выберет надлежащее значение по умолчанию. Это - ошибка установить продолжительность блока, которая является отрицательной или нечисловой.Это свойство не может быть установлено после
startWriting
был вызван для получателя.Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в iOS 8.0 и позже.
-
respondToEachPassDescriptionOnQueue (_: usingBlock:) - respondToEachPassDescriptionOnQueue:usingBlock:
Дает получателю команду вызывать предоставленный клиентами блок каждый раз, когда началась новая передача.
Объявление
Swift
func respondToEachPassDescriptionOnQueue(_
queue
: dispatch_queue_t!, usingBlockblock
: dispatch_block_t!)Objective C
- (void)respondToEachPassDescriptionOnQueue:(dispatch_queue_t)
queue
usingBlock:(dispatch_block_t)block
Параметры
queue
Очередь, на которую должен быть вызван блок.
block
Блок, который должен вызвать получатель каждый раз, когда началась новая передача.
Обсуждение
Типичный блок, переданный этому методу, выполнит следующие шаги:
Запросите значение получателя
currentPassDescription
свойство и реконфигурировало источник данных носителей, например, экземпляра AVAssetReader, соответственно.Вызвать
requestMediaDataWhenReadyOnQueue:usingBlock:
начать добавлять данные для текущей передачи.
Когда все данные носителей будут добавлены для текущего запроса, вызвать
markCurrentPassAsFinished
начать процесс определения, гарантирована ли дополнительная передача. Если дополнительная передача будет гарантирована, то блок, переданный этому методу, будет вызван для начала следующей передачи. Если никакие дополнительные передачи не будут необходимы, то блок, переданный этому методу, будет вызван одно заключительное время, таким образом, клиент сможет вызватьmarkAsFinished
в ответ на значениеcurrentPassDescription
становлениеnil
.Прежде, чем вызвать этот метод, необходимо гарантировать, что получатель присоединен
AVAssetWriter
экземпляр через предшествующий вызов кaddInput:
и этоstartWriting
был вызван на писателе актива.Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в iOS 8.0 и позже.