Информация о версии Основы AV для iOS 5

Эта статья суммирует некоторые новые функции и изменения в функциональности в Основе AV в iOS 5.

Содержание:

UTIs и типы MIME

Новые методы класса были определены на AVURLAsset, предоставляющих информацию о типах файлов и типах MIME, поддерживаемых AVFoundation.

Обратите внимание на то, что категорическое определение того, играем ли определенный ресурс или подходит в какой-либо другой цели, требует исследования своего содержания; - [AVAsset isPlayable] и другие методы в категории AVAssetUsability доступны с этой целью.

Подготовка AVAsset для воспроизведения

Текущая версия Руководства по программированию Основы AV рекомендует для всех основанных на файле активов, чтобы приложения загрузили значение свойства дорожек актива прежде, чем создать AVPlayerItem с ним и связать AVPlayerItem с экземпляром AVPlayer. В то время как эта рекомендация является все еще наиболее успешной практикой для всех приложений с целью развертывания iOS 4.0-4.3, приложения с целью развертывания iOS 5.0 или более поздней потребности больше не загружают свойства AVAsset прежде, чем создать AVPlayerItem с ним и играть AVPlayerItem. Вместо этого те приложения должны загрузить только значения свойств AVAsset, который они исследуют или обработают сами, для отображения в пользовательском интерфейсе, для конфигурации воспроизведения, или в любой другой цели. Начиная с iOS 5.0 AVPlayer заботится о своих собственных потребностях загрузки.

Выбор аудио и носителей подзаголовка согласно языку и другим критериям

AVFoundation теперь предлагает функции открытия опций, которые могут быть предложены аудиовизуальными медиаресурсами для размещения отличающихся предпочтений языка, требований доступности, конфигураций пользовательского приложения и других потребностей, и для выбора этих опций для воспроизведения. Например, ресурс может содержать многократные слышимые опции, каждого с диалоговым окном, на котором говорят на различном языке, чтобы быть выбранным для воспроизведения исключая другие. Подобные возможности на нескольких языках могут также быть предоставлены для четких носителей, таких как подзаголовки. И основанное на файле содержание и HTTP Живое содержание Потоковой передачи могут предложить опции носителей. Получить информацию о группах опций, предлагающихся экземпляром AVAsset:

Исследовать доступные параметры в группе и отфильтровать их для выбора для воспроизведения:

Уведомление о подзаголовках

Необходимо соблюдать особую осторожность при отображении опций пользователю среди доступных четких опций для воспроизведения и при делании выбора среди доступных четких опций согласно пользовательским настройкам. Некоторое четкое содержание содержит «вызванные» подзаголовки, означая, что согласно намерению автора содержания подзаголовки должны быть выведены на экран, когда пользователь ни не указал предпочтение дисплея подзаголовков, ни сделал явный выбор опции подзаголовка. Принудительные подзаголовки обычно используются для передачи значения разговорного диалогового или видимого текста на языке, что контент-провайдер принимает, не будет обычно пониматься, когда понимание диалогового окна или текста, тем не менее, считается важным. Убедитесь, что Ваше приложение позволяет им быть выведенными на экран соответственно путем следования совету ниже.

AVMediaSelectionGroup для характерного AVMediaCharacteristicLegible может обеспечить два типа четких опций: 1) для дисплея четкого содержания это считало избирательным вместе с содержанием, которое это считало важным, и 2) для дисплея существенного четкого содержания только. Четкие AVMediaSelectionOptions, включающие существенное содержание только, имеют характеристику носителей AVMediaCharacteristicContainsOnlyForcedSubtitles (определенный в AVMediaFormat.h). При предложении четких опций для дисплея конечному пользователю в интерфейсе выбора, или при рассмотрении опций подзаголовка для автоматического выбора согласно пользовательской настройке для языка, должны быть исключены четкие опции с характерным AVMediaCharacteristicContainsOnlyForcedSubtitles. + [AVMediaSelectionOption mediaSelectionOptionsFromArray:withoutMediaCharacteristics:] Указание AVMediaCharacteristicContainsOnlyForcedSubtitles как характеристика для исключения, может использоваться для получения четких опций, подходящих для предложения конечному пользователю в интерфейсе выбора или для рассмотрения для выбора согласно пользовательской настройке.

Если пользователь не указывает предпочтения или не делает выбора четкого содержания, приложение должно выбрать одну из четких опций для воспроизведения, имеющего характерный AVMediaCharacteristicContainsOnlyForcedSubtitles, если кто-либо присутствует. Для большинства ресурсов, содержащих четкие опции с принудительными только подзаголовками, надлежащий выбор среди них может быть сделан в соответствии с текущим слышимым выбором. Используйте - [AVMediaSelectionOption associatedMediaSelectionOptionInMediaSelectionGroup:] для получения четкой опции связался со слышимой опцией. Если нет никаких других средних значений, доступных для выбора среди них, первая четкая опция с принудительными только подзаголовками в группе выбора носителей является надлежащим значением по умолчанию.

AirPlay поддерживают в AVPlayer

Маршрутизация аудио и видео к другому устройству через AirPlay не требует вмешательства или знания клиенты AVFoundation. Пользователи могут выбрать маршрутизацию AirPlay любого аудио или видео, играемого AVPlayer или путем взаимодействия с экземпляром MPVolumeView как предусмотрено в интерфейсе воспроизведения приложения или с Системой Средства выбора AirPlay, это - часть стандартного многозадачного интерфейса. Посмотрите ссылку класса MPVolumeView для подробных данных о том, как предложить маршрутизацию AirPlay пользователям в пользовательском интерфейсе Вашего приложения.

Играют ли аудио и видео на локальном устройстве или удаленно через AirPlay, существующие интерфейсы для управления воспроизведения, как определено на AVPlayer, AVQueuePlayer, и AVPlayerItem будет применяться.

Кроме того, AVPlayer теперь определяет свойства, позволяющие клиентам AVFoundation управлять способами поведения AirPlay и реагировать на маршрутизацию AirPlay.

Определение, доступны ли ускоренная перемотка и быстрое обратное воспроизведение

AVPlayerItem теперь имеет свойства, позволяющие приложениям определять, возможно ли воспроизведение по форвардным курсам, больше, чем 1,0 и на обратных уровнях меньше чем-1.0. В то время как такие скорости воспроизведения возможны со всем основанным на файле содержанием, они возможны с HTTP Живое содержание Потоковой передачи только, когда исходный список воспроизведения предлагает носители, который позволяет его. Приложения могут хотеть настроить управление воспроизведением, предлагаемое пользователям для согласований со значениями этих свойств для в настоящее время элемента игры.

Поиск и, ища, зная, что сделан поиск

Ни один из вариантов-seekToTime: в соответствии с AVPlayer и AVPlayerItem выполняют искать работу синхронно. Поэтому без уведомления о некотором виде, может быть трудно сказать, произошел ли полный эффект искать работы; определение путем наблюдения эффекта искания на текущем времени не всегда достаточно, потому что искание на соседнее время с помощью типичных допусков не может иметь никакого эффекта на текущее время вообще. Для обеспечения индикации, когда искать работа или закончилась или была отменена AVPlayer и AVPlayerItem теперь определяют методы для поиска, принимающие, что указанный клиентами блок вызывается как уведомление.

Уведомление о вычищении

Вычищение является распространенным словом для работы, в которой пользователь время от времени переходит в аудиовизуальном медиаресурсе, в произвольных инкрементах времени носителей и назад и вперед, в произвольных интервалах реального времени, иногда для определения местоположения определенной сцены интереса и иногда как способ предварительно просмотреть содержание ресурса. Вычищение обычно реализуется клиентами AVFoundation, поскольку преемственность ищет операции, для установки текущего времени AVPlayerItem ко времени, указанному текущей или недавней позицией подразумеваемой возможности UI, такой как ползунок. Как отмечено выше, потому что каждый последовательный ищет работу неявно, отменяет предшествующее, ищут работу, важно во время вычищения позволить, по крайней мере, некоторые ищут операции для окончания вместо того, чтобы быть отмененными новыми, так, чтобы пользователю подарили визуальную индикацию, что вычищение фактически имеет эффект.

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

Фоновые и приоритетные переходы

К фону

В iOS 4.x, воспроизведение любого экземпляра AVPlayer автоматически приостанавливается как приложение, создавшее его, отправляется в фон каждый раз, когда AVPlayer связан с любым экземпляром AVPlayerLayer, выводится ли AVPlayerLayer на экран на экране или нет, и имеет ли в настоящее время элемент игры видео носители или нет.

В iOS 5.0 воспроизведение AVPlayer автоматически приостанавливается как приложение, создавшее его, отправляется в фон, только если текущий элемент AVPLAYER выводит на экран видео на дисплее устройства.

К переднему плану

В iOS 4.x, автоматически прервано воспроизведение аудио в фоновом режиме другими приложениями, когда клиент AVFoundation приезжает в передний план каждый раз, когда любой экземпляр AVPlayerLayer существует в приложении. AVPlayerLayer не должен быть связан ни с каким AVPlayer.

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

Воспроизведение аудио под заблокированным экраном

(Когда экран заблокирован, в то время как приложение является frontmost приложением.)

Приложения, имеющие основной SDK iOS 5 или позже:

Приложения, имеющие основной SDK до iOS 5.0:

Получение повернуло CVPixelBuffers от AVCaptureVideoDataOutput

Клиенты могут теперь получить, физически повернул CVPixelBuffers в их AVCaptureVideoDataOutput-captureOutput:didOutputSampleBuffer:fromConnection: обратный вызов делегата. В предыдущих версиях iOS обращенная к передней стороне камера всегда поставляла бы буферы в AVCaptureVideoOrientationLandscapeLeft, и обращенная к задней стороне камера будет всегда поставлять буферы в AVCaptureVideoOrientationLandscapeRight. Поддерживаются все 4 AVCaptureVideoOrientations, и вращение аппаратно ускорено. Для запроса буферного вращения клиент вызывает-setVideoOrientation: на видео AVCaptureConnection AVCaptureVideoDataOutput. Обратите внимание на то, что физически циркулирующие буферы действительно идут с производительностью, стоят, поэтому только запрашивают вращение, если это необходимо. Если, например, Вы хотите повернутое видео, записанное в использование файла фильма в формате QuickTime AVAssetWriter, предпочтительно установить - преобразовывают свойство на AVAssetWriterInput, а не физически поворачивают буферы в AVCaptureVideoDataOutput.

Установка минимальной и максимальной частоты видеокадров

Начиная с iOS 4.0 клиенты были в состоянии скорректировать максимальную частоту кадров видео буферов, поставленных AVCaptureVideoDataOutput-captureOutput:didOutputSampleBuffer:fromConnection: использование обратного вызова делегата [AVCaptureVideoDataOutput setMinFrameDuration:]. В iOS 5 minFrameDuration свойство AVCaptureVideoDataOutput было осуждено, и новая пара свойств, представленных в AVCaptureConnection.

Обнаружение форматов пикселя поддерживается AVCaptureVideoDataOutput

Определение, когда перефокусирование необходимо

Клиенты AVCaptureDevice могут заблокировать фокус, воздействие и/или баланс белого, если получатель поддерживает его, но когда-то заблокированный, эти свойства остаются заблокированными, даже если предметная область изменяется существенно должный или на существенное перемещение устройства на iOS или на предметы в поле зрения устройства захвата изображения. Новое выбирает - в механизме, был добавлен к AVCaptureDevice, чтобы позволить клиентам получать уведомление, когда предметная область изменяется существенно.

Определение флэш-памяти и доступности факела

Клиенты AVCaptureDevice могут запросить, может ли он-hasFlash или-hasTorch и включить флэш-память или факел. Использование факела LED вырабатывает большое тепло. Непрерывное использование факела или флэш-памяти могло заставить устройство включения перегреваться, таким образом, под тепловым принуждением флэш-память и факел выключат автоматически. В iOS 5 AVCaptureDevice обеспечивает три новых свойства, представляющие текущее состояние флэш-памяти и факела.

Используя факел LED как фонарь

Предыдущие выпуски iOS требуют, чтобы AVCaptureSession работал, прежде чем клиент сможет включить факел LED. Следовательно, полный штабель получения выделяется и выполнение, приводящее к ненужной потребляемой мощности для приложений с помощью факела LED в качестве фонаря. В iOS 5 больше не необходимо выполнить AVCaptureSession для включения факела. Приложения фонаря могут теперь просто вызвать:

AVCaptureDevice *backCamera = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
if ( [backCamera isTorchAvailable] && [backCamera isTorchModeSupported:AVCaptureTorchModeOn]  )
{
    BOOL success = [backCamera lockForConfiguration:nil];
    if ( success )
    {
        [backCamera setTorchMode:AVCaptureTorchModeOn];
        [backCamera unlockForConfiguration];
    }
}

Нахождение соединений с данным типом среды

Новый служебный метод AVCaptureOutput,-connectionWithMediaType: позволяет клиентам находить первое соединение вывода данного типа среды, не пишущий, что функция выполняет итерации через входные порты каждого соединения.

Масштабирование и обрезка неподвижных изображений

AVCaptureStillImageOutput теперь поддерживает масштаб неподвижного изображения и обрезку для моделирования эффекта «цифрового увеличения». Чтобы установить масштаб и обрезать фактор, клиенты вызывают [AVCaptureConnection setVideoScaleAndCropFactor:] на видеосоединении вывода неподвижного изображения. Значение должно быть между 1,0 (никакое масштабирование/обрезка) и результат [AVCaptureConnection videoMaxScaleAndCropFactor]. Когда видео фактор масштаба и обрезки установлен в значение выше, чем 1,0, AVCaptureStillImageOutput масштабирует полученное изображение указанными факторными и центральными обрезками результат назад к его первоначальному размеру с помощью аппаратного ускорения.

Управление анимацией затвора камеры

AVCaptureStillImageOutput обеспечивает новое значение ключа заметное свойство,-capturingStillImage, посредством чего клиент может узнать когда запрос к [AVCaptureStillImageOutput captureStillImageAsynchronouslyFromConnection:completionHandler:] удовлетворяется. изменения-isCapturingStillImage в YES прямо перед изображением внесены и не изменяются ни на КАКОЕ право после того, как оно будет взято. Клиенты могут использовать это свойство для управления ирисовой анимацией или затвором камеры.

Улучшения для приложений потокового видео

Клиенты могут использовать новую предварительную установку сеанса AVCaptureSessionPreset352x288 для получения 352x288 измеренные видео буферы (CIF) из камеры. Эта предварительная установка поддерживается на всех устройствах, камерах передней и задней части. Клиенты должны всегда вызывать [AVCaptureDevice supportsAVCaptureSessionPreset:], чтобы гарантировать, что ввод поддерживает их желаемую предварительную установку.

Получение фильмов для редактирования приложений

AVCaptureSession обеспечивает две новых предварительных установки сеанса для помощи в создании доступного для редактирования содержания.

Используя любую из этих предварительных установок, AVCaptureMovieFileOutput получает Apple iFrame совместимые фильмы (см. http://support.apple.com/kb/HT3905), что работа хорошо в iMovie и в других приложениях редактирования.