Об основе AV

Основа AV является одной из нескольких платформ, которые можно использовать, чтобы играть и создать основанные на времени аудиовизуальные носители. Это обеспечивает интерфейс Objective-C, который Вы используете для работы на подробном уровне с основанными на времени аудиовизуальными данными. Например, можно использовать его, чтобы исследовать, создать, отредактировать, или повторно закодировать медиа-файлы. Можно также получить введенные потоки от устройств и управлять видео во время получения в реальном времени и воспроизведения.

Рисунок i-1  штабель Основы AV на
iOSFigure i-2 AVFoundation
  складывает на OS X

Необходимо обычно использовать абстракцию высшего уровня, доступную, который позволяет Вам выполнять задачи, которые Вы хотите. Например, в iOS:

Отметьте, однако, что некоторые примитивные структуры данных, которые Вы используете в Основе AV — включая связанные со временем структуры данных и непрозрачные объекты, чтобы перенести и описать данные носителей — объявляются в Базовой платформе Носителей.

 Основа AV доступна в iOS 4.0 и позже, и OS X 10.7 и позже.

Сразу

Существует два фасета к платформе Основы AV — APIs, связанный с видео и APIs, связанным только с аудио. Более старые связанные с аудио классы обеспечивают простые способы иметь дело с аудио. Они описаны в Мультимедийном Руководстве по программированию, не в этом документе.

Можно также сконфигурировать аудио поведение использования приложения AVAudioSession; это описано в Аудио Руководстве по программированию Сеанса.

Представляя и Используя носители с основой AV

Основной класс, который использование платформы Основы AV для представления носителей AVAsset. Проект платформы в основном ведется этим представлением. Понимание его структуры поможет Вам понять, как работает платформа. AVAsset экземпляр является агрегированным представлением набора одной или более частей данных носителей (аудиотреки и видеотреки). Это предоставляет информацию о наборе в целом, таком как его заголовок, продолжительность, естественный размер представления, и т.д. AVAsset не связывается к определенному формату данных. AVAsset суперкласс других классов, используемых для создания экземпляров актива из носителей в URL (см. Используя Активы) и создать новые составы (см. Редактирование).

Каждая из отдельных частей данных носителей в активе имеет универсальный тип и вызвала дорожку. В типичном простом случае одна дорожка представляет аудио компонент, и другой представляет компонент видео; в сложном составе, однако, могут быть многократные перекрывающиеся дорожки аудио и видео. Активы могут также иметь метаданные.

Жизненно важное понятие в Основе AV - то, что инициализация актива или дорожки не обязательно означает, что это готово к употреблению. Это может потребовать, чтобы некоторое время вычислило даже продолжительность элемента (файл MP3, например, может не содержать сводную информацию). Вместо того, чтобы блокировать текущий поток, в то время как значение вычисляется, Вы просите значения и возвращаете ответ асинхронно посредством обратного вызова, что Вы определяете использование блока.

Воспроизведение

Основа AV позволяет Вам управлять воспроизведением актива сложными способами. Для поддержки этого это разделяет состояние представления актива от самого актива. Это позволяет, Вы к, например, играете два различных сегмента того же актива, одновременно представленного в различных разрешениях. Состоянием представления для актива управляет объект элемента проигрывателя; состоянием представления для каждой дорожки в активе управляет объект дорожки элемента проигрывателя. Используя элемент проигрывателя и дорожки элемента проигрывателя можно, например, установить размер, в котором визуальная часть элемента представлена проигрывателем, установила аудио параметры соединения и видео настройки состава, которые будут применены во время воспроизведения или отключат компоненты актива во время воспроизведения.

Вы играете элементы проигрывателя с помощью объекта проигрывателя и направляете вывод проигрывателя к Базовому Слою анимации. Можно использовать очередь проигрывателя для планирования воспроизведения набора элементов проигрывателя в последовательности.

Чтение, при записи и перекодировании активов

 Основа AV позволяет Вам создавать новые представления актива несколькими способами. Можно просто повторно закодировать существующий актив, или — в iOS 4.1 и позже — можно выполнить операции на содержании актива и сохранить результат как новый актив.

Вы используете сеанс экспорта, чтобы повторно закодировать существующий актив в формат, определенный одним из небольшого количества обычно используемых предварительных установок. Если Вам нужно больше управления трансформацией в iOS 4.1, и позже можно использовать читателя актива и объект писателя актива в тандеме для преобразования актива от одного представления до другого. Используя эти объекты можно, например, выбрать, какая из дорожек Вы хотите быть представленными в выходном файле, укажите свой собственный выходной формат или измените актив во время процесса преобразования.

Для создания визуального представления формы волны Вы используете читателя актива для чтения аудиотрека актива.

Миниатюры

Для создания изображений миниатюр видеопрезентаций Вы инициализируете экземпляр AVAssetImageGenerator использование актива, от которого Вы хотите генерировать миниатюры. AVAssetImageGenerator использует включенные видеотреки значения по умолчанию для генерации изображений.

Редактирование

 Основа AV использует составы для создания новых активов из существующих частей носителей (обычно, один или несколько видеотреков и аудиотреки). Вы используете непостоянный состав, чтобы добавить и удалить дорожки и скорректировать их временные упорядочивания. Можно также регулировать относительную громкость и сползание аудиотреков; и набор непрозрачность и скаты непрозрачности, видеотреков. Состав является совокупностью частей носителей, сохраненных в памяти. При экспорте состава с помощью сеанса экспорта это разрушилось к файлу.

Можно также создать актив из носителей, таких как демонстрационные буферы или неподвижные изображения с помощью писателя актива.

Все еще и видео получение носителей

Записью ввода от камер и микрофонов управляет сеанс получения. Сеанс получения координирует поток данных от устройств ввода данных до выводов, таких как файл ролика. Можно сконфигурировать многократные вводы и выводы для единственного сеанса, даже когда работает сеанс. Вы отправляете сообщения в сеанс, чтобы запустить и остановить поток данных.

Кроме того, можно использовать экземпляр уровня предварительного просмотра, чтобы показать пользователю, что записывает камера.

Параллельное программирование с основой AV

Обратные вызовы от Основы AV — вызовы блоков, наблюдателей значения ключа и обработчиков уведомления — как обычно не гарантируют, не будут сделаны ни на каком определенном потоке или очереди. Вместо этого Основа AV вызывает эти обработчики на потоки или очереди, на которых она выполняет свои внутренние задачи.

Существует два общих руководящих принципов до уведомлений и поточной обработки:

Вне тех двух инструкций (и существуют исключения, отмеченные в справочной документации), Вы не должны предполагать, что уведомление будет возвращено на любом определенном потоке.

Если Вы пишете многопоточное приложение, можно использовать NSThread метод isMainThread или [[NSThread currentThread] isEqual:<#A stored thread reference#>] протестировать, является ли поток вызова потоком, над которым Вы ожидаете выполнять свою работу. Можно перенаправить сообщения к надлежащим методам использования потоков такой как performSelectorOnMainThread:withObject:waitUntilDone: и performSelector:onThread:withObject:waitUntilDone:modes:. Вы могли также использовать dispatch_async для «возвращений» к блокам на соответствующей очереди или основная очередь для задач UI или очередь, Вы имеете для параллельных операций. Для больше о параллельных операциях, см. Руководство по программированию Параллелизма; для больше о блоках, посмотрите, что Блоки Программируют Темы. AVCam для примера кода iOS считают основным примером для всей функциональности Основы AV и можно консультироваться для примеров потока и использования очереди с Основой AV.

Предпосылки

 Основа AV является усовершенствованной платформой Какао. Для использования его эффективно Вы должны иметь:

См. также

Существует несколько примеров Основы AV включая два, которые являются ключевыми для понимания и функциональности Захвата изображения камерой реализации: