Как использовать AVFoundation для извлечения (или "демультиплексирования") субтитров из видео в формате mp4?

Я пытаюсь создать небольшую процедуру, которая возьмет видео в формате mp4 и извлечет информацию о субтитрах из видео, используя структуру AVFoundation. При этом он создаст и вернет NSArray элементов NSDictionary в формате startTimeOfSubtitle, endTimeofSubtitle и subtitleString.

Это то, что я узнал из примечания к выпуску AVFoundation. Любой пример кода будет высоко оценен.

Заранее спасибо.

Выбор аудио и субтитров в соответствии с языком и другими критериями.

AVFoundation теперь предлагает функции для обнаружения опций, которые могут предлагаться аудиовизуальными медиаресурсами, для учета различных языковых предпочтений, требований доступности, пользовательских конфигураций приложений и других потребности, и для выбора этих опций для воспроизведения. Например, ресурс может содержать несколько звуковых опций, каждая с диалогом на другом языке, которые будут выбраны для воспроизведения, исключая другие. Аналогичные варианты на нескольких языках также могут быть предоставлены для разборчивых носителей, таких как субтитры. Как контент на основе файлов, так и контент HTTP Live Streaming могут предлагать варианты мультимедиа. Чтобы получить информацию о группах опций, предлагаемых экземпляром AVAsset: • Загрузите значение ключа AVAsset availableMediaCharacteristicsWithMediaSelectionOptions с помощью AVAsynchronousKeyValueLoading. Когда загрузка будет завершена, -[AVAsset availableMediaCharacteristicsWithMediaSelectionOptions] предоставит NSArray, который может содержать AVMediaCharacteristicAudible, AVMediaCharacteristicLegible или AVMediaCharacteristicVisual или любую их комбинацию, чтобы указать доступность групп взаимоисключающих параметров.

• Каждую группу взаимоисключающих опций с интересующей характеристикой носителя можно получить с помощью -[AVAsset mediaSelectionGroupForMediaCharacteristic:].Чтобы получить звуковые параметры, передайте AVMediaCharacteristicAudible и т. д. Каждая группа представлена ​​экземпляром AVMediaSelectionGroup. Каждый параметр в группе представлен экземпляром AVMediaSelectionOption. Оба этих класса определены в AVMediaSelectionGroup.h.

Чтобы просмотреть доступные параметры в группе и отфильтровать их для выбора для воспроизведения: • AVMediaSelectionGroup предлагает методы в категории AVMediaSelectionOptionFiltering, которые выполняют общие операции фильтрации в массивах AVMediaSelectionOptions в зависимости от того, доступны ли параметры для воспроизведения, соответствуют ли желаемому языковому стандарту или имеют или не имеют специальные характеристики мультимедиа, например, предлагают ли они определенные функции для обеспечения доступности. . Характеристики мультимедиа, указывающие на наличие специальных возможностей, которые можно использовать для фильтрации опций выбора мультимедиа, определены в AVMediaFormat.h.

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

• Чтобы выбрать определенный параметр в группе для воспроизведения, используйте -[AVPlayerItem selectMediaOption:inMediaSelectionGroup:]. Чтобы узнать параметр, который в данный момент выбран для воспроизведения, используйте -[AVPlayerItem selectedMediaOptionInMediaSelectionGroup:].

Рекомендации относительно субтитров.

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

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

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

23
задан sm535 28 May 2012 в 04:48
поделиться