AVAssetWriterInput
Вы используете AVAssetWriterInput добавлять выборки носителей, упакованные как объекты CMSampleBuffer (см. CMSampleBufferRef), или наборы метаданных, к одноколейному пути выходного файла AVAssetWriter объект.
Когда существуют многократные вводы, AVAssetWriter попытки записать данные носителей в идеальном образце чередования для эффективности в хранении и воспроизведении. Каждый из его вводов сигнализирует свою готовность получить данные носителей для записи согласно тому образцу через значение readyForMoreMediaData. Если readyForMoreMediaData YEStrue, ввод может принять дополнительные данные носителей при поддержании надлежащего чередования. Можно только добавить данные носителей к вводу в то время как readyForMoreMediaData свойство YEStrue.
Если Вы пишете данные носителей из источника нев реальном времени, такого как экземпляр
AVAssetReader, необходимо удержать при генерации или получении большего количества данных носителей для добавления к вводу когда значениеreadyForMoreMediaDataNOfalse. Для помощи с управлением предоставления данных носителей нев реальном времени можно использоватьrequestMediaDataWhenReadyOnQueue:usingBlock:указать блок, который должен вызвать ввод каждый раз, когда это готово к вводу быть добавленным.Если Вы пишете данные носителей из источника в реальном времени такой как
AVCaptureOutputобъект, необходимо установить вводexpectsMediaDataInRealTimeсвойство кYEStrueгарантировать что значениеreadyForMoreMediaDataвычисляется соответственно. КогдаexpectsMediaDataInRealTimeYEStrue,readyForMoreMediaDataстанетNOfalseтолько, когда ввод не может обработать выборки носителей так быстро, как им предоставлен клиент. ЕслиreadyForMoreMediaDataстановитсяNOfalseдля источника в реальном времени клиент, возможно, должен отбросить выборки или рассмотреть сокращение скорости передачи данных добавленных выборок.
Значение readyForMoreMediaData будет часто изменяться от NOfalse к YEStrue асинхронно, поскольку ранее предоставленные данные носителей обработаны и записаны в вывод. Для всего актива вводы писателя временно возможно возвратиться NOfalse для readyForMoreMediaData.
Оператор импорта
Swift
import AVFoundation
Objective C
@import AVFoundation;
Доступность
Доступный в OS X v10.7 и позже.
-
Возвращает новый входной объект писателя, инициализированный с указанным типом среды и выходными настройками.
Объявление
Objective C
+ (AVAssetWriterInput *)assetWriterInputWithMediaType:(NSString *)mediaTypeoutputSettings:(NSDictionary *)outputSettingsПараметры
mediaTypeТип выборок, которые будут приняты входным объектом. Для списка типов среды см. Ссылку Констант Основы AV.
outputSettingsНастройки, используемые для кодирования носителей, добавленных к выводу. Передача
nilуказать, что не должны быть повторно закодированы добавленные выборки.Ключи настроек аудиовыхода определяются в Константах Параметров звука Основы AV. Ключи настроек видеовыхода определяются в Ссылке Констант Основы AV. Настройки видеовыхода с ключами от
<CoreVideo/CVPixelBuffer.h>в настоящее время не поддерживаются.Возвращаемое значение
Новый входной объект писателя, который может принять выборки указанного типа среды и записать им в выходной файл.
Обсуждение
Каждый новый ввод принимает данные для новой дорожки выходного файла писателя актива. Вы добавляете ввод к писателю актива, использующему
AVAssetWriterметодaddInput:.Передача
nilдляoutputSettingsдает вводу команду проходить через добавленные выборки, не делая никакой обработки, прежде чем они будут записаны в выходной файл. Это полезно, например, при добавлении буферов, которые уже находятся в желательном сжатом формате.Оператор импорта
Objective C
@import AVFoundation;Доступность
Доступный в OS X v10.7 и позже.
-
assetWriterInputWithMediaType:outputSettings:sourceFormatHint: + assetWriterInputWithMediaType:outputSettings:sourceFormatHint:Возвращает новый входной объект писателя, инициализированный с указанным типом среды, выходными настройками и подсказкой исходного формата.
Объявление
Objective C
+ (AVAssetWriterInput *)assetWriterInputWithMediaType:(NSString *)mediaTypeoutputSettings:(NSDictionary *)outputSettingssourceFormatHint:(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;Доступность
Доступный в OS X v10.8 и позже.
-
Инициализируйте входной объект писателя с указанным типом среды и выведите настройки.
Объявление
Objective C
- (instancetype)initWithMediaType:(NSString *)mediaTypeoutputSettings:(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Доступность
Доступный в OS X v10.7 и позже.
-
init (mediaType:outputSettings:sourceFormatHint:) - initWithMediaType:outputSettings:sourceFormatHint:Инициализируйте входной объект писателя с указанным типом среды, выведите настройки и исходную подсказку.
Объявление
Swift
init!(mediaTypemediaType: String!, outputSettingsoutputSettings: [NSObject : AnyObject]!, sourceFormatHintsourceFormatHint: CMFormatDescription!)Objective C
- (instancetype)initWithMediaType:(NSString *)mediaTypeoutputSettings:(NSDictionary *)outputSettingssourceFormatHint:(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Доступность
Доступный в OS X v10.8 и позже.
-
Добавляет выборки к получателю.
Объявление
Swift
func appendSampleBuffer(_sampleBuffer: CMSampleBuffer!) -> BoolObjective C
- (BOOL)appendSampleBuffer:(CMSampleBufferRef)sampleBufferПараметры
sampleBufferCMSampleBuffer, который будет добавлен.
Возвращаемое значение
YEStrueесли sampleBuffer, как добавлено успешно, иначеNOfalse.Обсуждение
Информация синхронизации в демонстрационном буфере, который рассматривают относительно времени, передала писателю актива
startSessionAtSourceTime:будет использоваться для определения синхронизации тех выборок в выходном файле.Если
NOfalseвозвращается, клиенты могут проверить значениеAVAssetWriterсостояниесвойство, чтобы определить, была ли отменена работа записи, завершенная, неработающая, или. ЕслиstatusAVAssetWriterStatusFailed,AVAssetWriterошибкасвойство будет содержать экземплярNSErrorß, который описывает отказ.Не изменять
sampleBufferили его содержание после передачи его этому методу.Оператор импорта
Objective C
@import AVFoundation;Swift
import AVFoundationДоступность
Доступный в OS X v10.7 и позже.
-
Булево значение, указывающее готовность ввода принять больше данных носителей. (только для чтения)
Объявление
Swift
var readyForMoreMediaData: Bool { get }Objective C
@property(nonatomic, readonly, getter=isReadyForMoreMediaData) BOOL readyForMoreMediaDataОбсуждение
Это свойство является заметным наблюдением значения ключа использования (см., что Значение ключа Наблюдает Руководство по программированию). Наблюдатели не должны предполагать, что они будут уведомлены относительно изменений на определенном потоке.
Оператор импорта
Objective C
@import AVFoundation;Swift
import AVFoundationДоступность
Доступный в OS X v10.7 и позже.
-
Говорит писателю, что больше буферов не будет добавлено к этому вводу.
Объявление
Swift
func markAsFinished()Objective C
- (void)markAsFinishedОбсуждение
Если Вы контролируете каждый ввод
expectsMediaDataInRealTimeкогда Вы закончили добавлять буферы к дорожке, значение для хранения выходного файла хорошо чередованным важно вызвать этот метод. Это необходимо, чтобы препятствовать тому, чтобы другие вводы остановились, поскольку они могут иначе ожидать навсегда данных носителей того ввода, пытаясь завершить идеальный образец чередования.Оператор импорта
Objective C
@import AVFoundation;Swift
import AVFoundationДоступность
Доступный в OS X v10.7 и позже.
-
Дает получателю команду неоднократно вызывать блок, в его удобстве, для сбора данных носителей для записи в вывод.
Объявление
Swift
func requestMediaDataWhenReadyOnQueue(_queue: dispatch_queue_t!, usingBlockblock: (() -> Void)!)Objective C
- (void)requestMediaDataWhenReadyOnQueue:(dispatch_queue_t)queueusingBlock:(void (^)(void))blockПараметры
queueОчередь та, на который
blockдолжен быть вызван.blockБлок ввод должен вызвать для получения данных носителей.
Обсуждение
Блок должен добавить данные носителей к вводу любой до ввода
readyForMoreMediaDataсвойство становитсяNOfalseили до больше нет данных носителей для предоставления (в которой точке они могут принять решение отметить ввод как законченное использование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кYEStrue.Оператор импорта
Objective C
@import AVFoundation;Swift
import AVFoundationДоступность
Доступный в OS X v10.7 и позже.
См. также
-
метаданные метаданныеСвойствоНабор метаданных уровня дорожки для связи с активом и для каретки в выходном файле.
Объявление
Swift
var metadata: [AnyObject]!Objective C
@property(nonatomic, copy) NSArray *metadataОбсуждение
Массив содержит
AVMetadataItemобъекты, представляющие набор метаданных уровня дорожки, которые будут записаны в выходном файле.Вы не можете установить это свойство после того, как запустилась запись.
Оператор импорта
Objective C
@import AVFoundation;Swift
import AVFoundationДоступность
Доступный в OS X v10.7 и позже.
-
преобразовать преобразоватьСвойствоПреобразование, указанное в выходном файле как предпочтительная трансформация визуальных данных носителей в целях дисплея.
Объявление
Swift
var transform: CGAffineTransformObjective C
@property(nonatomic) CGAffineTransform transformОбсуждение
Если никакое значение не указано, преобразование идентификационных данных используется.
Оператор импорта
Objective C
@import AVFoundation;Swift
import AVFoundationДоступность
Доступный в OS X v10.7 и позже.
-
mediaTimeScale mediaTimeScaleСвойствоУказывает масштаб времени носителей, который будет использоваться
Объявление
Swift
var mediaTimeScale: CMTimeScaleObjective C
@property(nonatomic) CMTimeScale mediaTimeScaleОбсуждение
Для типов файлов, поддерживающих масштабы времени носителей, такие как файлы фильма в формате QuickTime, указывает масштаб времени носителей, который будет использоваться. Значение по умолчанию этого свойства
0, который указывает, что входной объект писателя должен выбрать надлежащее значение.Это - ошибка присвоить значение кроме
0к этому свойству, если объектmediaTypeсвойство установлено в кAVMediaTypeAudio.Вы не можете установить это свойство после того, как запустилась запись.
Во избежание несоответствий между масштабом времени носителей дорожки и масштабом времени носителей результата (см.
AVAssetWriterсвойствоmovieTimeScale) оба должны быть установлены равняться или совместимые значения.Оператор импорта
Objective C
@import AVFoundation;Swift
import AVFoundationДоступность
Доступный в OS X v10.7 и позже.
-
Указывает, должен ли ввод адаптировать свою обработку данных носителей для источников в реальном времени.
Объявление
Swift
var expectsMediaDataInRealTime: BoolObjective C
@property(nonatomic) BOOL expectsMediaDataInRealTimeОбсуждение
Если Вы добавляете данные носителей к вводу из источника в реальном времени, такой как
AVCaptureOutput, необходимо установитьexpectsMediaDataInRealTimeкYEStrue. Это гарантирует этоreadyForMoreMediaDataвычисляется соответственно для использования в реальном времени.Вы не можете установить это свойство после того, как запустилась запись.
Оператор импорта
Objective C
@import AVFoundation;Swift
import AVFoundationДоступность
Доступный в OS X v10.7 и позже.
-
Возвраты, включена ли дорожка получателя.
Объявление
Swift
var marksOutputTrackAsEnabled: BoolObjective C
@property(nonatomic) BOOL marksOutputTrackAsEnabledОбсуждение
Для типов файлов, поддерживающих включенный и отключенные дорожки, такие как файлы фильма в формате QuickTime, указывает, должна ли дорожка, соответствующая получателю, быть включена по умолчанию для воспроизведения и обработки.
Значение по умолчанию
YEStrue.Оператор импорта
Objective C
@import AVFoundation;Swift
import AVFoundationДоступность
Доступный в OS X v10.9 и позже.
-
naturalSize naturalSizeСвойствоРазмер, указанный в выходном файле как естественные размерности визуальных данных носителей для дисплея.
Обсуждение
Если значение по умолчанию,
CGSizeZero, указан,naturalSizeиз дорожки, соответствующей получателю, установлен согласно размерностям, обозначенным описаниями формата, в конечном счете записанными в выходную дорожку.Оператор импорта
Objective C
@import AVFoundation;Swift
import AVFoundationДоступность
Доступный в OS X v10.9 и позже.
-
preferredVolume preferredVolumeСвойствоПредпочтительный уровень громкости, который будет сохранен в выходном файле.
Объявление
Swift
var preferredVolume: FloatObjective C
@property(nonatomic) float preferredVolumeОбсуждение
Значение для этого свойства должно обычно быть в диапазоне
0.0к1.0.Значение по умолчанию
1.0, который эквивалентен «нормальному» уровню громкости.Оператор импорта
Objective C
@import AVFoundation;Swift
import AVFoundationДоступность
Доступный в OS X v10.9 и позже.
-
Связывает дорожку, соответствующую указанному вводу с дорожкой, соответствующей с получателем.
Объявление
Swift
func addTrackAssociationWithTrackOfInput(_input: AVAssetWriterInput!, typetrackAssociationType: String!)Objective C
- (void)addTrackAssociationWithTrackOfInput:(AVAssetWriterInput *)inputtype:(NSString *)trackAssociationTypeПараметры
inputЭкземпляр
AVAssetWriterInputс соответствующей дорожкой для соединения с дорожкой, соответствующей с получателем.trackAssociationTypeТип ассоциации дорожки для добавления. Общие типы ассоциации дорожки, такой как
AVTrackAssociationTypeTimecodeопределяются вTrack Association Types.Обсуждение
Если тип ассоциации требует дорожек определенных типов среды, не соответствующих типы среды вводов, или если тип выходного файла не поддерживает ассоциации дорожки,
NSInvalidArgumentExceptionповышен.Оператор импорта
Objective C
@import AVFoundation;Swift
import AVFoundationДоступность
Доступный в OS X v10.9 и позже.
-
Допустима ли ассоциация между дорожками, соответствующими паре вводов.
Объявление
Swift
func canAddTrackAssociationWithTrackOfInput(_input: AVAssetWriterInput!, typetrackAssociationType: String!) -> BoolObjective C
- (BOOL)canAddTrackAssociationWithTrackOfInput:(AVAssetWriterInput *)inputtype:(NSString *)trackAssociationTypeПараметры
inputЭкземпляр
AVAssetWriterInputс соответствующей дорожкой для соединения с дорожкой, соответствующей с получателем.trackAssociationTypeТип ассоциации дорожки для тестирования. Общие типы ассоциации дорожки, такой как
AVTrackAssociationTypeTimecodeопределяются вTrack Association Types.Возвращаемое значение
YEStrueесли может быть добавлена ассоциация дорожки; иначеNOfalse.Обсуждение
Если тип ассоциации требует дорожек определенных типов среды, не соответствующих типы среды вводов, или если тип выходного файла не поддерживает ассоциации дорожки, возвраты
NOfalse.Оператор импорта
Objective C
@import AVFoundation;Swift
import AVFoundationДоступность
Доступный в OS X v10.9 и позже.
-
Тип среды выборок, которые могут быть добавлены к вводу. (только для чтения)
Объявление
Swift
var mediaType: String! { get }Objective C
@property(nonatomic, readonly) NSString *mediaTypeОбсуждение
Значение этого свойства является одной из строк типа среды, определенных в Ссылке Констант Основы AV.
Оператор импорта
Objective C
@import AVFoundation;Swift
import AVFoundationДоступность
Доступный в OS X v10.7 и позже.
-
outputSettings outputSettingsСвойствоНастройки, используемые для кодирования носителей, добавленных к выводу. (только для чтения)
Объявление
Swift
var outputSettings: [NSObject : AnyObject]! { get }Objective C
@property(nonatomic, readonly) NSDictionary *outputSettingsОбсуждение
Значение
nilуказывает, что не должны быть повторно закодированы добавленные выборки.Оператор импорта
Objective C
@import AVFoundation;Swift
import AVFoundationДоступность
Доступный в OS X v10.7 и позже.
-
sourceFormatHint sourceFormatHintСвойствоПодсказка о формате буферов, которые будут добавлены. (только для чтения)
Объявление
Swift
var sourceFormatHint: CMFormatDescription! { get }Objective C
@property(nonatomic, readonly) CMFormatDescriptionRef sourceFormatHintОбсуждение
AVAssetWriterInputобъект может быть в состоянии использовать эту подсказку, чтобы заполнить без вести пропавших выходных настроек или выполнить больше первичной проверки.Оператор импорта
Objective C
@import AVFoundation;Swift
import AVFoundationДоступность
Доступный в OS X v10.8 и позже.
См. также
-
Для типов файлов, поддерживающих пишущие демонстрационные ссылки, такие как файлы фильма в формате 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Доступность
Доступный в OS X v10.10 и позже.
-
extendedLanguageTag 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Доступность
Доступный в OS X v10.9 и позже.
См. также
-
languageCode languageCodeСвойствоЯзык для соединения с дорожкой, соответствующей получателю.
Объявление
Swift
var languageCode: String!Objective C
@property(nonatomic, copy) NSString *languageCodeОбсуждение
Значение указано как ISO 6392/t код языка; может быть
nilкогда никакой код языка не записан в дорожку..Оператор импорта
Objective C
@import AVFoundation;Swift
import AVFoundationДоступность
Доступный в OS X v10.9 и позже.
См. также
-
Булево значение, указывающее, мог ли бы ввод выполнить многократные передачи по добавленным данным носителей. (только для чтения)
Объявление
Swift
var canPerformMultiplePasses: Bool { get }Objective C
@property(nonatomic, readonly) BOOL canPerformMultiplePassesОбсуждение
Когда значение для этого свойства
YEStrue, Ваш источник для данных носителей должен быть сконфигурирован для произвольного доступа. После добавления всех данных носителей для текущей передачи, как указаноcurrentPassDescriptionсвойство, вызватьmarkCurrentPassAsFinishedзапустить процесс определения, необходимы ли дополнительные передачи. Обратите внимание на то, что для ввода все еще возможно в этом случае выполнить только начальную передачу, если это решает, что не будет никакого преимущества к выполнению многократных передач.Когда значение для этого свойства
NOfalse, Ваш источник для данных носителей только должен поддерживать последовательный доступ. В этом случае добавьте все исходные носители один раз и вызовmarkAsFinished.В конфигурации по умолчанию
AVAssetWriterInput, значение для этого свойства будетNOfalse. В настоящее время единственный путь к этому свойству для становленияYEStrueкогдаperformsMultiPassEncodingIfSupportedбыл установлен вYEStrue. Окончательное значение будет доступно послеstartWritingкогда определенный кодер был выбран, вызывается.Это свойство поддерживает наблюдение значения ключа.
Оператор импорта
Objective C
@import AVFoundation;Swift
import AVFoundationДоступность
Доступный в OS X v10.10 и позже.
-
Обеспечивает объект, описывающий требования, такие как исходные диапазоны времени, чтобы добавить или повторно добавить, для текущей передачи. (только для чтения)
Объявление
Swift
var currentPassDescription: AVAssetWriterInputPassDescription! { get }Objective C
@property(readonly) AVAssetWriterInputPassDescription *currentPassDescriptionОбсуждение
Если значение этого свойства
nil, нет никакого запроса, который будет выполнен иmarkAsFinishedдолжен быть вызван на вводе писателя актива.Во время первой передачи запрос будет содержать единственный диапазон времени от нуля до положительной бесконечности, указывая, что должны быть добавлены все носители из источника. Это также будет истиной когда
canPerformMultiplePassesNOfalse, когда будет выполняться только одна передача.Значение этого свойства будет
nilпреждеstartWritingвызывается на присоединенном писателе актива. Это перейдет к начальной букве не -nilзначение во время вызова кstartWriting. После этого значение этого свойства изменится только после вызова кmarkCurrentPassAsFinished.respondToEachPassDescriptionOnQueue:usingBlock:метод допускает уведомление в начале каждой передачи.Это свойство поддерживает наблюдение значения ключа. Наблюдатели не должны предполагать, что они будут уведомлены относительно изменений на определенном потоке.
Оператор импорта
Objective C
@import AVFoundation;Swift
import AVFoundationДоступность
Доступный в OS X v10.10 и позже.
-
Дает получателю команду анализировать данные носителей, добавленные и определяющие, могли ли бы результаты быть улучшены путем перекодирования определенных сегментов.
Объявление
Swift
func markCurrentPassAsFinished()Objective C
- (void)markCurrentPassAsFinishedОбсуждение
Когда значение
canPerformMultiplePassesYEStrue, вызовите этот метод после добавления всех данных носителей. После того, как получатель анализирует, гарантирована ли дополнительная передача, значениеcurrentPassDescriptionизменится (обычно асинхронно), чтобы описать, как установить для следующей передачи. Несмотря на то, что возможно использовать наблюдение значения ключа для определения когда значениеcurrentPassDescriptionизменился, обычно более удобно вызватьrespondToEachPassDescriptionOnQueue:usingBlock:для запуска работы для каждой передачи.После передобавления данных носителей для всех диапазонов времени новой передачи вызовите этот метод снова, чтобы определить, должны ли дополнительные сегменты быть повторно добавлены в другой передаче.
Вызов этого метода эффективно отменяет любой предыдущий вызов
requestMediaDataWhenReadyOnQueue:usingBlock:, значение этогоrequestMediaDataWhenReadyOnQueue:usingBlock:может быть вызван снова для каждой новой передачи.respondToEachPassDescriptionOnQueue:usingBlock:метод обеспечивает удобный способ консолидировать эти вызовы в Вашем коде.После каждой передачи у Вас есть опция хранения новых результатов путем вызова
markAsFinishedвместо этого метода. Если значениеcurrentPassDescriptionnilв начале передачи вызватьmarkAsFinishedсказать получателю не ожидать дальнейшие данные носителей.Если значение
canPerformMultiplePassesNOfalse, значениеcurrentPassDescriptionсразу станетnilпосле вызова этого метода.Прежде, чем вызвать этот метод, необходимо гарантировать, что получатель присоединен
AVAssetWriterэкземпляр через предшествующий вызов кaddInput:и этоstartWritingбыл вызван на писателе актива.Оператор импорта
Objective C
@import AVFoundation;Swift
import AVFoundationДоступность
Доступный в OS X v10.10 и позже.
-
Булево значение, указывающее, должен ли ввод попытаться закодировать исходные данные носителей с помощью многократных передач.
Объявление
Swift
var performsMultiPassEncodingIfSupported: BoolObjective C
@property(nonatomic) BOOL performsMultiPassEncodingIfSupportedОбсуждение
Писатель актива ввел, может быть в состоянии достигнуть более высокого качества и/или понизить скорость передачи данных путем выполнения многократных передач по исходным носителям. Это делает это путем анализа данных носителей, добавленных и перекодирование определенных сегментов с различными параметрами. Чтобы сделать это перекодирование, данные носителей для этих сегментов должны быть добавлены снова. Посмотрите
markCurrentPassAsFinishedи свойствоcurrentPassDescriptionдля механизма, которым ввод назначает сегменты на передобавление.Когда значение этого свойства
YEStrue, значениеreadyForMoreMediaDataдля других вводов, присоединенных к тому жеAVAssetWriterможет бытьNOfalseчаще и/или в течение более длительных промежутков времени. В частности значениеreadyForMoreMediaDataдля вводов, не делающих (или не может) выполняют многократные передачи, может начаться какNOfalseпослеAVAssetWriterметодstartWritingбыл вызван и может не измениться наYEStrueпока все многопроходные вводы не завершили свою заключительную передачу.Когда значение этого свойства
YEStrue, ввод может хранить данные в одном или более временных файлах прежде, чем записать сжатые выборки в выходной файл. ИспользуйтеAVAssetWriterсвойствоdirectoryForTemporaryFilesесли необходимо управлять расположением временной записи файла.Значение по умолчанию
NOfalse, подразумевать, что никакой дополнительный анализ не произойдет и никакие сегменты, будет повторно закодировано. Не весь писатель актива ввел конфигурации (например, вводы, сконфигурированные с определенными типами среды или использовать определенные кодеры), может получить преимущества от выполнения многократных передач по исходным носителям. Чтобы определить, может ли выбранный кодер выполнить многократные передачи, запросите значениеcanPerformMultiplePassesпосле вызоваstartWriting.Это - ошибка установить это свойство в
YEStrueкогда значение дляexpectsMediaDataInRealTimeYEStrue. Это - также ошибка для писателя актива содержать ввод с этим набором свойств кYEStrueкогда любой из его других вводов имеет значениеYEStrueдляexpectsMediaDataInRealTime.Это свойство не может быть установлено после записи на получателе
AVAssetWriterзапустился.Оператор импорта
Objective C
@import AVFoundation;Swift
import AVFoundationДоступность
Доступный в OS X v10.10 и позже.
-
Для типов файлов, поддерживающих выравнивание блока носителей, такое как файлы фильма в формате QuickTime, указывает, что граница для носителей разделяет выравнивание на блоки в байтах.
Объявление
Swift
var preferredMediaChunkAlignment: IntObjective C
@property(nonatomic) NSInteger preferredMediaChunkAlignmentОбсуждение
Значение по умолчанию
0, что означает, что получатель выберет надлежащее значение по умолчанию. Значение1подразумевает, что никакое дополнение не должно использоваться для достижения определенного выравнивания блока. Это - ошибка установить отрицательную величину для выравнивания блока.Это свойство не может быть установлено после
startWritingбыл вызван для получателя.Оператор импорта
Objective C
@import AVFoundation;Swift
import AVFoundationДоступность
Доступный в OS X v10.10 и позже.
-
Для типов файлов, поддерживающих продолжительность блока носителей, такую как файлы фильма в формате QuickTime, указывает продолжительность, которая будет использоваться для каждого блока демонстрационных данных в выходном файле.
Объявление
Swift
var preferredMediaChunkDuration: CMTimeObjective C
@property(nonatomic) CMTime preferredMediaChunkDurationОбсуждение
Продолжительность блока может влиять на гранулярность I/O, выполняемого при чтении медиа-файла, например, во время воспроизведения. Большая продолжительность блока может привести к меньшему количеству чтений от диска за потенциальный счет более высокого объема потребляемой памяти.
«Блок» содержит одну или более выборок. Если продолжительность выборки больше, чем эта предпочтительная продолжительность блока, общая продолжительность выборок в блоке не больше, чем эта предпочтительная продолжительность блока или продолжительность единственной выборки.
Значение по умолчанию
kCMTimeInvalid, что означает, что получатель выберет надлежащее значение по умолчанию. Это - ошибка установить продолжительность блока, которая является отрицательной или нечисловой.Это свойство не может быть установлено после
startWritingбыл вызван для получателя.Оператор импорта
Objective C
@import AVFoundation;Swift
import AVFoundationДоступность
Доступный в OS X v10.10 и позже.
-
respondToEachPassDescriptionOnQueue (_: usingBlock:) - respondToEachPassDescriptionOnQueue:usingBlock:Дает получателю команду вызывать предоставленный клиентами блок каждый раз, когда началась новая передача.
Объявление
Swift
func respondToEachPassDescriptionOnQueue(_queue: dispatch_queue_t!, usingBlockblock: dispatch_block_t!)Objective C
- (void)respondToEachPassDescriptionOnQueue:(dispatch_queue_t)queueusingBlock:(dispatch_block_t)blockПараметры
queueОчередь, на которую должен быть вызван блок.
blockБлок, который должен вызвать получатель каждый раз, когда началась новая передача.
Обсуждение
Типичный блок, переданный этому методу, выполнит следующие шаги:
Запросите значение получателя
currentPassDescriptionсвойство и реконфигурировало источник данных носителей, например, экземпляра AVAssetReader, соответственно.Вызвать
requestMediaDataWhenReadyOnQueue:usingBlock:начать добавлять данные для текущей передачи.
Когда все данные носителей будут добавлены для текущего запроса, вызвать
markCurrentPassAsFinishedначать процесс определения, гарантирована ли дополнительная передача. Если дополнительная передача будет гарантирована, то блок, переданный этому методу, будет вызван для начала следующей передачи. Если никакие дополнительные передачи не будут необходимы, то блок, переданный этому методу, будет вызван одно заключительное время, таким образом, клиент сможет вызватьmarkAsFinishedв ответ на значениеcurrentPassDescriptionстановлениеnil.Прежде, чем вызвать этот метод, необходимо гарантировать, что получатель присоединен
AVAssetWriterэкземпляр через предшествующий вызов кaddInput:и этоstartWritingбыл вызван на писателе актива.Оператор импорта
Objective C
@import AVFoundation;Swift
import AVFoundationДоступность
Доступный в OS X v10.10 и позже.
