videos subtitulos subtitular programa poner pelicula para los idioma cambiar automaticamente apple app aplicacion agregar ios avfoundation subtitle

ios - subtitulos - ¿Cómo usar AVFoundation para extraer(o ''demux'') subtítulos de video mp4?



cambiar idioma pelicula apple tv (1)

Estoy tratando de crear un pequeño procedimiento que tome un video mp4 y extraiga la información de subtítulos del video usando el marco de AVFoundation. Al hacerlo, creará y devolverá una NSArray de elementos NSDictionary en el formato startTimeOfSubtitle, endTimeofSubtitle y subtitleString.

Esto es lo que recogí de una nota de lanzamiento para AVFoundation. Cualquier ejemplo de código sería muy apreciado.

Gracias por adelantado.

Selección de medios de audio y subtítulos según el idioma y otros criterios.

AVFoundation ahora ofrece características para el descubrimiento de opciones que pueden ofrecer los recursos de medios audiovisuales para adaptarse a las diferentes preferencias de idioma, requisitos de accesibilidad, configuraciones de aplicaciones personalizadas y otras necesidades, y para la selección de estas opciones para la reproducción. Por ejemplo, un recurso puede contener múltiples opciones audibles, cada una con un cuadro de diálogo hablado en un idioma diferente, que se seleccionará para su reproducción con exclusión de las demás. También se pueden proporcionar opciones similares en varios idiomas para medios legibles, como subtítulos. Tanto el contenido basado en archivos como el contenido HTTP Live Streaming pueden ofrecer opciones de medios. Para obtener información sobre los grupos de opciones que ofrece una instancia de AVAsset: • Cargue el valor de la clave AVAsset availableMediaCharacteristicsWithMediaSelectionOptions usando AVAsynchronousKeyValueLoading. Cuando se completa la carga, - [AVAsset availableMediaCharacteristicsWithMediaSelectionOptions] proporcionará un NSArray que puede contener AVMediaCharacteristicAudible, AVMediaCharacteristicLegible, o AVMediaCharacteristicVisual, o cualquier combinación de estos, para indicar la disponibilidad de grupos de opciones mutuamente exclusivas.

• Cada grupo de opciones mutuamente excluyentes con una característica de interés de medios se puede obtener a través de - [AVAsset mediaSelectionGroupForMediaCharacteristic:]. Para obtener las opciones audibles, pase AVMediaCharacteristicAudible, etc. Cada grupo está representado por una instancia de AVMediaSelectionGroup. Cada opción dentro de un grupo está representada por una instancia de AVMediaSelectionOption. Ambas de estas clases se definen en AVMediaSelectionGroup.h.

Para examinar las opciones disponibles dentro de un grupo y filtrarlas para seleccionarlas para su reproducción: • AVMediaSelectionGroup ofrece métodos en la categoría AVMediaSelectionOptionFiltering que realizan operaciones de filtrado comunes en arrays de AVMediaSelectionOptions, según si las opciones son jugables, coinciden con una configuración regional deseada o tienen o no tienen características especiales de los medios, como por ejemplo, si ofrecen características específicas de accesibilidad. Las características de los medios que indican la presencia de funciones de accesibilidad, que se pueden usar para filtrar las opciones de selección de medios, se han definido en AVMediaFormat.h.

• AVMediaSelectionOption ofrece información sobre las opciones que se pueden usar para mostrar en una interfaz de usuario que permite a los usuarios seleccionar entre las opciones disponibles o en la implementación de operaciones de filtrado definidas por el cliente. Como ejemplo de opción de filtrado definido por el cliente en una aplicación que hace uso de recursos de medios personalizados, las opciones pueden considerarse elegibles solo si sus metadatos asociados contienen un valor específico.

• Para seleccionar una opción específica dentro de un grupo para la reproducción, use - [AVPlayerItem selectMediaOption: inMediaSelectionGroup:]. Para descubrir la opción que está actualmente seleccionada para la reproducción, use - [AVPlayerItem selectedMediaOptionInMediaSelectionGroup:].

Consejos sobre subtítulos.

Se debe tener especial cuidado al mostrar opciones para el usuario entre las opciones legibles disponibles para la reproducción y al realizar una selección entre las opciones legibles disponibles según las preferencias del usuario. Algunos contenidos legibles contienen subtítulos "forzados", lo que significa que, de acuerdo con la intención del autor del contenido, los subtítulos deben mostrarse cuando el usuario no ha indicado una preferencia por la visualización de subtítulos ni ha realizado una selección explícita de una opción de subtítulos. Los subtítulos forzados se usan normalmente para transmitir el significado del diálogo hablado o el texto visible en un idioma que el proveedor de contenido asume que no se entenderá comúnmente, cuando la comprensión del diálogo o texto se considera esencial. Asegúrese de que su aplicación permita que se muestren adecuadamente siguiendo los consejos a continuación.

Un AVMediaSelectionGroup para la característica AVMediaCharacteristicLegible puede proporcionar dos tipos de opciones legibles: 1) para mostrar contenido legible que se considera electivo junto con contenido que se considera esencial, y 2) para mostrar contenido legible esencial solamente. Las AVMediaSelectionOptions legibles que incluyen contenido esencial solo tienen la característica de medios AVMediaCharacteristicContainsOnlyForcedSubtitles (definido en AVMediaFormat.h). Cuando se ofrecen opciones legibles para mostrarlas al usuario final en una interfaz de selección, o cuando se consideran opciones de subtítulos para la selección automática de acuerdo con una preferencia de idioma del usuario, se deben excluir las opciones legibles con la característica AVMediaCharacteristicContainsOnlyForcedSubtitles + [AVMediaSelectionOption mediaSelectionOptionsFromArray: withoutMediaCharacteristics:], especificando AVMediaCharacteristicContainsOnlyForcedSubtitles como una característica para excluir, se puede usar para obtener opciones legibles que son adecuadas para el usuario final en una interfaz de selección o para la consideración de una preferencia de usuario.

Si el usuario no indica ninguna preferencia o no realiza ninguna selección de contenido legible, la aplicación debe seleccionar una de las opciones legibles para la reproducción que tenga la característica AVMediaCharacteristicContainsOnlyForcedSubtitles, si alguna está presente. Para la mayoría de los recursos que contienen opciones legibles con subtítulos forzados, se puede hacer una selección apropiada entre ellas de acuerdo con la selección audible actual. Utilice - [AVMediaSelectionOption associatedMediaSelectionOptionInMediaSelectionGroup:] para obtener la opción legible asociada con una opción audible. Si no hay otros medios disponibles para elegir entre ellos, la primera opción legible con subtítulos de solo forzado en el grupo de selección de medios es un valor predeterminado apropiado.


Bueno, no estoy seguro de si podría obtener la hora de inicio y la hora de finalización de los subtítulos ... Estoy usando el siguiente método para obtener información sobre la opción de subtítulos en la transmisión HLS.

[tmpCurrentAsset loadValuesAsynchronouslyForKeys:[NSArray arrayWithObject:@"tracks"] completionHandler:^{ dispatch_async(queueForMultipleAudioHandling, ^(void) { AVKeyValueStatus postLoadingStatus = [tmpCurrentAsset statusOfValueForKey:@"tracks" error:NULL]; if (postLoadingStatus == AVKeyValueStatusLoaded) { AVMediaSelectionGroup * subtitleGroup = [self.mPlayer.currentItem.asset mediaSelectionGroupForMediaCharacteristic:AVMediaCharacteristicLegible]; if (subtitleGroup) { _subtitles = subtitleGroup; dispatch_async(dispatch_get_main_queue(), ^{ [this createSubtitlePopOver]; }); } }

Primero debe volver a cargar las pistas y obtener información acerca de AVMediaCharacteristicLegible. Si tiene esto, puede extraer información sobre subtítulos como este: _subtitles.options Esto le dará una variedad de opciones de selección de AVMediaSelection desde las que puede elegir. Si desea jugar más con AVMediaSelectionOption, puede continuar leyendo aquí: documentación de AVMediaSelectionOption

Espero que esto haya sido un poco útil;)