AVAssetWriter
Вы используете AVAssetWriter
возразите для записи данных носителей в новый файл указанного аудиовизуального контейнерного типа, такого как файл фильма в формате QuickTime или файл MPEG 4, с поддержкой автоматического чередования данных носителей для многократных параллельных дорожек.
Можно получить данные носителей для одного или более активов от экземпляров AVAssetReader
или даже извне Основы AV API установлен. Данные носителей представлены AVAssetWriter
для записи в форме CMSampleBuffers (см. Ссылку CMSampleBuffer). Последовательности демонстрационных данных, добавленных к вводам писателя актива, как полагают, находятся в пределах “пишущих выборку сеансов”. Необходимо вызвать startSessionAtSourceTime:
начать один из этих сеансов.
Используя AVAssetWriter
, можно дополнительно повторно закодировать выборки носителей, поскольку они записаны. Можно также дополнительно записать наборы метаданных в выходной файл.
Можно только использовать приведенный пример AVAssetWriter
один раз для записи в единственный файл. Если Вы хотите записать в файлы многократно, необходимо использовать новый экземпляр AVAssetWriter
каждый раз.
Оператор импорта
Swift
import AVFoundation
Objective C
@import AVFoundation;
Доступность
Доступный в OS X v10.7 и позже.
-
Возвращает писателя актива для записи в файл, идентифицированный данным URL в формате, указанном данным UTI.
Объявление
Параметры
outputURL
Расположение файла, который будет записан. URL должен быть файлом URL.
outputFileType
UTI-идентифицированный формат файла, который будет записан. Посмотрите
File_Format_UTIs
для значений.Например,
AVFileTypeQuickTimeMovie
для файла фильма в формате QuickTime,AVFileTypeMPEG4
для файла MPEG 4, иAVFileTypeAMR
для адаптивного файла формата аудио мультиуровня.outError
Если инициализация сбоев писателя актива, по возврату содержит ошибочный объект, описывающий проблему.
Возвращаемое значение
Писатель актива для записи в файл, идентифицированный
URL
в формате, указанномoutputFileType
, илиnil
если не мог бы быть инициализирован писатель.Обсуждение
Если файл уже будет существовать в, запись перестанет работать
URL
.Оператор импорта
Objective C
@import AVFoundation;
Доступность
Доступный в OS X v10.7 и позже.
-
Инициализирует писателя актива для записи в файл, идентифицированный данным URL в формате, указанном данным UTI.
Объявление
Параметры
outputURL
Расположение файла, который будет записан. URL должен быть файлом URL.
outputFileType
UTI-идентифицированный формат файла, который будет записан.
Например,
AVFileTypeQuickTimeMovie
для файла фильма в формате QuickTime,AVFileTypeMPEG4
для файла MPEG 4, иAVFileTypeAMR
для адаптивного файла формата аудио мультиуровня.outError
Если инициализация сбоев писателя актива, по возврату содержит ошибочный объект, описывающий проблему.
Возвращаемое значение
Писатель актива для записи в файл, идентифицированный
URL
в формате, указанномoutputFileType
, илиnil
если не мог бы быть инициализирован писатель.Обсуждение
Если файл уже будет существовать в, запись перестанет работать
URL
. UTIs для форматов контейнера, которые могут быть записаны, объявляются вFile Format UTIs
.Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в OS X v10.7 и позже.
-
availableMediaTypes availableMediaTypes
СвойствоТипы среды, для которых вводы могут быть добавлены (только для чтения)
Объявление
Swift
var availableMediaTypes: [AnyObject]! { get }
Objective C
@property(nonatomic, readonly) NSArray *availableMediaTypes
Обсуждение
Массив значений, указанных в
Media_Types
.Некоторые типы среды не могут быть приняты в типе файла, с которым был инициализирован писатель.
Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в OS X v10.7 и позже.
-
Говорит писателю начинать писать его вывод.
Объявление
Swift
func startWriting() -> Bool
Objective C
- (BOOL)startWriting
Возвращаемое значение
YES
true
если запись может быть запущена, иначеNO
false
.Обсуждение
Необходимо вызвать этот метод после того, как все вводы добавили, и другие свойства конфигурации были установлены сказать получателю подготавливаться к записи. После вызова этого метода можно начать писать использование сеансов
startSessionAtSourceTime:
и может записать выборки носителей с помощью методов, предоставленных каждым из вводов писателя.status
если отказ происходит, свойство сигнализирует терминальное состояние читателя актива, иerror
описывает отказ.Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в OS X v10.7 и позже.
-
finishWriting - finishWriting
(OS X v10.9)Завершает запись выходного файла.
Объявление
Objective C
- (BOOL)finishWriting
Возвращаемое значение
YES
true
если запись может быть закончена, иначеNO
false
.Обсуждение
Этот метод блоки до записи закончен. Когда этот метод возвращается успешно, файл, записанный получателем, завершен и готов использовать. Можно проверить значения
status
иerror
свойства для получения дополнительной информации о том, почему не могла быть закончена запись.Оператор импорта
Objective C
@import AVFoundation;
Доступность
Доступный в OS X v10.7 и позже.
Осуждаемый в OS X v10.9.
-
Знаки все незаконченные вводы, как закончено и завершают запись выходного файла.
Объявление
Swift
func finishWritingWithCompletionHandler(_
handler
: (() -> Void)!)Objective C
- (void)finishWritingWithCompletionHandler:(void (^)(void))
handler
Параметры
handler
Указанный обработчик, который будет вызван один раз запись выходного файла, закончен или если отказ или отмена происходят тем временем.
Обсуждение
Этот метод сразу возвращается и заставляет свою работу выполняться асинхронно. Чтобы определить, успешно выполнилась ли работа, можно проверить значение
status
свойство вhandler
параметр. Еслиstatus
AVAssetWriterStatusFailed
, тогдаerror
свойство будет содержать экземплярNSError
это описывает отказ.Чтобы гарантировать, что все демонстрационные буферы успешно записаны, необходимо гарантировать что все вызовы к
appendSampleBuffer:
иappendPixelBuffer:withPresentationTime:
возвратились прежде, чем вызвать этот метод.Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в OS X v10.9 и позже.
-
Дает писателю команду отменять запись.
Объявление
Swift
func cancelWriting()
Objective C
- (void)cancelWriting
Обсуждение
Этот метод блоки до записи отменяется.
Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в OS X v10.7 и позже.
-
URL, к которому направлен вывод. (только для чтения)
Объявление
Swift
@NSCopying var outputURL: NSURL! { get }
Objective C
@property(nonatomic, copy, readonly) NSURL *outputURL
Обсуждение
URL совпадает с, который указал, когда инициализируется писатель.
Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в OS X v10.7 и позже.
-
outputFileType outputFileType
СвойствоФормат файла вывода писателя. (только для чтения)
Объявление
Swift
var outputFileType: String! { get }
Objective C
@property(nonatomic, copy, readonly) NSString *outputFileType
Обсуждение
Когда писатель инициализируется, формат идентифицируется UTI, указанным.
Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в OS X v10.7 и позже.
-
Если состояние получателя
AVAssetWriterStatusFailed
, описывает ошибку, вызвавшую отказ. (только для чтения)Обсуждение
Значение этого свойства является ошибочным объектом, описывающим то, что заставило получатель больше не быть в состоянии записать в его выходной файл. Если получатель
status
неAVAssetWriterStatusFailed
, значение этого свойстваnil
.Это свойство поддерживает наблюдение Значения ключа.
Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в OS X v10.7 и позже.
-
Состояние записи выборок к выходному файлу получателя. (только для чтения)
Объявление
Swift
var status: AVAssetWriterStatus { get }
Objective C
@property(readonly) AVAssetWriterStatus status
Обсуждение
Значением этого свойства является AVAssetWriterStatus, постоянный, который указывает, происходит ли запись, завершилась успешно, была отменена или перестала работать. Если попытка добавить демонстрационные сбои, можно проверить значение этого свойства для определения, почему не могло быть записано больше выборок.
Это свойство поддерживает наблюдение Значения ключа.
Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в OS X v10.7 и позже.
-
Указывает каталог, подходящий для содержания временных файлов, сгенерированных во время процесса экспорта.
Объявление
Swift
@NSCopying var directoryForTemporaryFiles: NSURL!
Objective C
@property(nonatomic, copy) NSURL *directoryForTemporaryFiles
Обсуждение
Писатель актива, возможно, должен записать временные файлы, например когда
canPerformMultiplePassesOverSourceMediaData
установлен вYES
true
. Это свойство указывает, где в файловой системе создаются те временные файлы. Все временные файлы будут удалены, когда запись актива будет завершена, отменяется, или сбои.Когда значение этого свойства
nil
, писатель актива выберет подходящее расположение при записи временных файлов. Значение по умолчаниюnil
.Это свойство не может быть установлено после того, как запись актива запустилась. Экспорт перестанет работать, если URL укажет на расположение, которое не является каталогом, не существует, не находится в локальной файловой системе, или если файл не может быть создан в этом каталоге (например, вследствие недостаточных полномочий или ограничений игры в песочнице).
Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в OS X v10.10 и позже.
-
Вводы писателя актива связались с писателем актива. (только для чтения)
Объявление
Swift
var inputs: [AnyObject]! { get }
Objective C
@property(nonatomic, readonly) NSArray *inputs
Обсуждение
Массив содержит
AVAssetWriterInput
объекты.Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в OS X v10.7 и позже.
См. также
-
Добавляет ввод к получателю.
Объявление
Swift
func addInput(_
input
: AVAssetWriterInput!)Objective C
- (void)addInput:(AVAssetWriterInput *)
input
Параметры
input
Писатель актива ввел, чтобы быть добавленным.
Обсуждение
Вводы создаются с выходными настройками и типом среды. Они оба должны быть совместимы с получателем.
Специальные замечания
Вы не можете добавить вводы после того, как запустилась запись.
Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в OS X v10.7 и позже.
См. также
-
Возвращает булево значение, указывающее, может ли данный ввод быть добавлен к получателю.
Объявление
Swift
func canAddInput(_
input
: AVAssetWriterInput!) -> BoolObjective C
- (BOOL)canAddInput:(AVAssetWriterInput *)
input
Параметры
input
Писатель актива ввел, чтобы быть протестированным.
Возвращаемое значение
YES
true
если введенный может быть добавлен, иначеNO
false
.Обсуждение
Вы не можете добавить ввод, принимающий данные носителей типа, который не совместим с получателем, или с выходными настройками, которые не совместимы с получателем.
Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в OS X v10.7 и позже.
-
Инициирует пишущий выборку сеанс для выходного актива.
Объявление
Swift
func startSessionAtSourceTime(_
startTime
: CMTime)Objective C
- (void)startSessionAtSourceTime:(CMTime)
startTime
Параметры
startTime
Стартовое время актива для пишущего выборку сеанса, во временной шкале исходных выборок.
Обсуждение
Последовательности демонстрационных данных, добавленных к вводам писателя актива, как полагают, находятся в пределах “пишущих выборку сеансов”. Необходимо вызвать этот метод для начала одного из этих сеансов.
Каждый сеанс записи имеет время начала, где позволено записанным форматом файла, определяющее отображение от временной шкалы исходных выборок на временную шкалу файла. В случае формата файла фильма в формате QuickTime первый сеанс начинается во время фильма 0, таким образом, выборка, добавленная с меткой времени T, будет играться во время фильма (T-
startTime
). Выборки с метками времени преждеstartTime
будет все еще добавлен к выходным носителям, но будет отредактирован из фильма. Если самый ранний буфер для ввода позже, чемstartTime
, пустое редактирование будет вставлено для сохранения синхронизации между дорожками выходного актива.Специальные замечания
Это - ошибка вызвать этот метод дважды подряд без вызова
endSessionAtSourceTime:
: промежуточный.Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в OS X v10.7 и позже.
См. также
-
Завершает явный пишущий выборку сеанс.
Объявление
Swift
func endSessionAtSourceTime(_
endTime
: CMTime)Objective C
- (void)endSessionAtSourceTime:(CMTime)
endTime
Параметры
endTime
Конечное время актива для пишущего выборку сеанса, во временной шкале исходных выборок.
Обсуждение
Можно вызвать этот метод для завершения сеанса, который Вы начали путем вызова
startSessionAtSourceTime:
.Вы не должны вызывать этот метод; если Вы вызываете
finishWriting
не вызывая этот метод, эффективное время окончания сеанса будет последней меткой времени конца выборок сеанса (т.е. никакие выборки не будут вырезаны в конце).endTime
определяет момент на временной шкале исходных выборок, при которых заканчивается сеанс. В случае формата файла фильма в формате QuickTime пара startTime … endTime каждого пишущего выборку сеанса соответствует периоду времени фильма, в которое вставляются выборки сеанса. Выборки с более поздними метками времени будут все еще быть добавленными к носителям, но будут отредактированы из фильма. Таким образом, если первый сеанс имеет продолжительностьD1 = endTime - startTime
, это будет вставлено в фильм во время фильма 0 через D1; второй сеанс был бы вставлен в фильм во время фильма D1 через D1+D2 и т.д.Законно иметь сеанс без выборок; это вызовет создание пустого редактирования предписанной продолжительности.
Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в OS X v10.7 и позже.
См. также
-
Возвращает булево значение, указывающее, поддерживаются ли указанные выходные настройки для указанного типа среды.
Объявление
Swift
func canApplyOutputSettings(_
outputSettings
: [NSObject : AnyObject]!, forMediaTypemediaType
: String!) -> BoolObjective C
- (BOOL)canApplyOutputSettings:(NSDictionary *)
outputSettings
forMediaType:(NSString *)mediaType
Параметры
outputSettings
Выходные настройки для проверки.
mediaType
Тип среды, для которого проверены выходные настройки.
Возвращаемое значение
YES
true
если выходные настройки вoutputSettings
поддерживаются дляmediaType
, иначеNO
false
.Обсуждение
Можно использовать этот метод для тестирования, например, перестанут ли настройки видеовыхода, указывающие сжатие H.264, работать (как имел бы место, если формат контейнера, для которого был инициализирован писатель, не поддерживает каретку H.264-сжатого видео).
Оператор импорта
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 movieFragmentInterval: CMTime
Objective C
@property(nonatomic) CMTime movieFragmentInterval
Обсуждение
Иногда операция записи может быть неожиданно прервана (потому что процесс отказывает, например). При помощи фрагментов фильма частично записанный файл ролика может успешно открываться и играться до самого большого кратного числа
movieFragmentInterval
меньший, чем точка, в которой была прервана операция записи.Значение по умолчанию
kCMTimeInvalid
, что означает, что фрагменты фильма не должны использоваться, что должен быть записан только атом фильма, описывающий все носители в файле.Специальные замечания
Вы не можете установить значение после того, как запустилась запись.
Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в OS X v10.7 и позже.
-
movieTimeScale movieTimeScale
СвойствоУказывает масштаб времени уровня актива, который будет использоваться.
Объявление
Swift
var movieTimeScale: CMTimeScale
Objective C
@property(nonatomic) CMTimeScale movieTimeScale
Обсуждение
Для типов файлов, содержащих a
moov
атом, такой как файлы фильма в формате QuickTime, указывает масштаб времени уровня актива, который будет использоваться.Значение по умолчанию
0
, который указывает, что писатель актива выберет удобное значение, если применимо.Специальные замечания
Вы не можете установить значение после того, как запустилась запись.
Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в OS X v10.7 и позже.
-
Булево значение, указывающее, должен ли выходной файл быть записан способом, делающим его более подходящим для воспроизведения по сети.
Объявление
Swift
var shouldOptimizeForNetworkUse: Bool
Objective C
@property(nonatomic) BOOL shouldOptimizeForNetworkUse
Обсуждение
Когда значение этого свойства
YES
true
, выходной файл будет записан таким способом, которым может запуститься воспроизведение после того, как только мелкая сумма файла загружается.Значение по умолчанию
NO
false
.Специальные замечания
Вы не можете установить значение после того, как запустилась запись.
Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в OS X v10.7 и позже.
-
Добавляет входной экземпляр группы писателя актива к писателю актива.
Объявление
Swift
func addInputGroup(_
inputGroup
: AVAssetWriterInputGroup!)Objective C
- (void)addInputGroup:(AVAssetWriterInputGroup *)
inputGroup
Параметры
inputGroup
Писатель актива ввел группу, чтобы быть добавленным.
Обсуждение
Если выходной формат контейнера будет поддерживать взаимоисключающие отношения среди дорожек, писатель актива отметит дорожки, связанные со сгруппированными вводами как взаимоисключающие друг другу для воспроизведения или другой обработки.
Когда входная группа добавляется к писателю актива, значению
marksOutputTrackAsEnabled
дляAVAssetWriterInput
набор экземпляра как ввод по умолчанию будет автоматически установлен вYES
true
и все другие вводы в группе будут установлены вNO
false
.Входные группы не могут быть добавлены после того, как запись запустилась.
Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в OS X v10.9 и позже.
-
Возвраты, может ли входная группа быть добавлена к получателю.
Объявление
Swift
func canAddInputGroup(_
inputGroup
: AVAssetWriterInputGroup!) -> BoolObjective C
- (BOOL)canAddInputGroup:(AVAssetWriterInputGroup *)
inputGroup
Параметры
inputGroup
Писатель актива ввел группу, чтобы быть добавленным.
Возвращаемое значение
YES
true
еслиinputGroup
может быть добавлен к inputGroups, иначеNO
false
.Обсуждение
Если
outputFileType
указывает формат контейнера, не поддерживающий взаимоисключающие отношения среди дорожек, или если указанный экземплярAVAssetWriterInputGroup
содержит вводы с типами среды, которые не могут быть связаны, группа не может быть добавлена.Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в OS X v10.9 и позже.
-
inputGroups inputGroups
СвойствоМассив писателя актива ввел группы, добавленные к писателю актива. (только для чтения)
Объявление
Swift
var inputGroups: [AnyObject]! { get }
Objective C
@property(nonatomic, readonly) NSArray *inputGroups
Обсуждение
Значение этого свойства
NSArray
содержа конкретные экземплярыAVAssetWriterInputGroup
.Входные группы добавляются к получателю с помощью
addInputGroup:
метод.Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в OS X v10.9 и позже.
-
Эти константы возвращаются
status
свойство, чтобы указать, может ли это успешно записать выборки в свой выходной файл.Объявление
Swift
enum AVAssetWriterStatus : Int { case Unknown case Writing case Completed case Failed case Cancelled }
Objective C
enum { AVAssetWriterStatusUnknown = 0, AVAssetWriterStatusWriting, AVAssetWriterStatusCompleted, AVAssetWriterStatusFailed, AVAssetWriterStatusCancelled }; typedef NSInteger AVAssetWriterStatus;
Константы
-
Unknown
AVAssetWriterStatusUnknown
Состояние писателя оборотного актива неизвестно.
Доступный в OS X v10.7 и позже.
-
Writing
AVAssetWriterStatusWriting
Писатель актива пишет.
Доступный в OS X v10.7 и позже.
-
Completed
AVAssetWriterStatusCompleted
Писатель актива завершил запись успешно.
Доступный в OS X v10.7 и позже.
-
Failed
AVAssetWriterStatusFailed
Писатель актива перестал работать при записи.
Доступный в OS X v10.7 и позже.
-
Cancelled
AVAssetWriterStatusCancelled
Писатель актива, пишущий, был отменен.
Доступный в OS X v10.7 и позже.
Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в OS X v10.7 и позже.
-