Problemas conocidos: SDK de reproductores nativos de Brightcove

En este tema, obtendrá información sobre los problemas conocidos asociados con los SDK de Brightcove Native Player.

General

Archivos de subtítulos grandes

Los subtítulos grabados como parte de un evento en vivo a veces producirán un archivo de subtítulos con pistas que se ven así:

00: 00: 03.760 -> 00: 00: 03.960
Esto

00: 00: 03.960 -> 00: 00: 04.160
Este programa

00: 00: 04.160 -> 00: 00: 04.400
Este programa

00: 00: 04.400 -> 00: 00: 04.600
Este programa será

00: 00: 04.600 -> 00: 00: 04.840
Este programa estará subtitulado

Este estilo de subtítulos produce un efecto de marco, pero puede tener el efecto secundario involuntario de producir un archivo de subtítulos de hasta varios megabytes de tamaño. Cuando se seleccionan estos subtítulos en el reproductor, el reproductor intenta descargar el archivo completo para analizarlo y visualizarlo (los subtítulos VTT no se pueden transmitir). Esto puede provocar problemas de rendimiento en el reproductor, incluidos OutOfMemory errores.

Brightcove recomienda que vuelva a formatear estos subtítulos en menos líneas:

00: 00: 03.760 -> 00: 00: 04.840
Este programa estará subtitulado

Marcos de terceros

Brightcove no prueba ni proporciona soporte para la integración de los SDK nativos de Brightcove con marcos de desarrollo de terceros como Xamarin, React Native y Titanium. Póngase en contacto con su proveedor de framework para obtener asistencia para la integración. Aquí hay algunos problemas con los que puede encontrarse:

  • Al utilizar Brightcove Native SDK para Android con el marco Titanium, es posible que experimente errores de reproducción con el contenido DRM. Esto se debe a que el marco de titanio anula el predeterminado Java.net.ResponseCache con lo suyo TiResponseCache .

Usando emuladores

Ya sea que esté utilizando el emulador de Android Studio o el simulador de Xcode para probar la reproducción de video, tenga en cuenta que los emuladores no representan con precisión cómo funcionará un dispositivo real. Si bien puede usar emuladores para las pruebas iniciales durante el desarrollo, es una buena práctica usar dispositivos reales para obtener resultados precisos.

Vídeos de dimensiones muy reducidas

Las representaciones de video con dimensiones muy pequeñas (menos de 50 px) no se reproducirán en iOS o Android (en los reproductores SDK o de otro modo)

SDK nativo para Android

Videos de 360 °

  • Si no usa el BrightcovePlayer class, su video de 360 ° se reproducirá, pero la aplicación puede fallar al pausarla y reanudarla. Para obtener más información sobre el uso de esta clase, consulte la Comprender la clase BrightcovePlayer documento.
  • Es posible que experimente cierta desviación del video después de girar el dispositivo. El problema está relacionado con cómo se calibra el giroscopio del dispositivo y esto puede afectar el rendimiento. No está asociado con marcas y modelos de dispositivos específicos, sino con el hardware del sensor de movimiento instalado en el dispositivo. Los sistemas operativos Android más nuevos tienen algoritmos de filtro más sofisticados para corregir el problema. Una solución simple es apagar el dispositivo y encenderlo mientras está sobre una superficie plana y estable.

androide 12

  • Con Android 12, en ciertos dispositivos (por ejemplo, teléfonos Google Pixel), mover el reproductor a la lista de tareas en lugar de ponerlo en segundo plano por completo no pausa la reproducción y no emite un activityPaused evento. Además, poner en primer plano al jugador de la lista de tareas no emite un activityResumed evento. Se ha abierto un error con Google por este comportamiento.

Subtítulos

  • Existe una limitación conocida con el soporte de subtítulos donde los subtítulos 608/708 se muestran en el reproductor sin el formato que puede estar presente en los datos del segmento. Está previsto que esto se aborde en una futura actualización del SDK.
  • Los subtítulos 608/708 y en manifiesto no se muestran automáticamente después de los eventos del ciclo de vida de la actividad.

    Esto puede suceder cuando un jugador está en segundo plano y luego vuelve al primer plano. Una solución alternativa para mostrar los subtítulos es seleccionar el subtítulo nuevamente en el menú de subtítulos.

  • Ciertos codificadores de transmisión en vivo (Elemental, por ejemplo) tienen una función de grabación de código de tiempo, que mostrará el tiempo de transmisión actual en la pantalla del reproductor. Esta grabación puede tener un formato 608, lo que puede hacer que se muestre el botón Subtítulos (CC) cuando no hay subtítulos en la secuencia. Actualmente no existe una solución alternativa, pero investigaremos una solución para una futura versión del SDK.

Chromecast

  • Native SDK no es compatible con la cola de Chromecast con la aplicación Brightcove Cast Receiver.

Contenido

  • Los objetos de video y lista de reproducción no son completamente parcelables.

    Los objetos deben ser completamente parcelables para poder ser transmitidos a través de Android Binder. Un ejemplo común de esto es agregar un objeto a una intención para enviarlo a otra actividad o servicio, o guardarlo en el paquete de estado de instalación guardado. Actualmente, los objetos Video y Playlist en el SDK de Android no son completamente parcelables.

DRM

  • Es posible que la capa DRM en algunas plataformas no pueda descifrar el contenido multimedia. Aunque no es un problema definitivo con esa plataforma, las pruebas han demostrado que este problema ocurre con más frecuencia con los dispositivos de la clase Nexus. Este problema está fuera del alcance del SDK de Android y ExoPlayer, y no se puede solucionar allí.

Transmisiones en vivo

  • El SDK nativo no admite transmisiones DASH Live ni anuncios con transmisiones HLS Live.

Reproducción sin conexión

  • Para agregar soporte para la descarga cuando el dispositivo está bloqueado, ya sea yendo a dormir o con el botón de encendido, agregue el siguiente permiso a su AndroidManifest.xml expediente :
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
  • Con Android 8.0 y superior, es posible administrar la configuración de energía cuando la aplicación se mueve a un segundo plano. Esto puede hacer que el proceso de descarga se detenga si el dispositivo se desconecta de una fuente de alimentación. En la mayoría de los casos, cuando la aplicación vuelve al primer plano, la descarga continuará. Es importante tener en cuenta que la administración de energía puede ser específica del sistema operativo y del proveedor. Por lo tanto, Brightcove Native SDK para Android no intentará administrar ni anular la configuración relacionada con la administración de energía.
  • Al usar Widevine Modular con Android 8.0.0 (y 8.1.0 en algunos dispositivos), es posible que observe que una licencia de alquiler ya venció cuando la adquiera. Este es un problema conocido con Widevine Modular CDM y no se puede solucionar ni en Brightcove Android SDK ni en ExoPlayer. Aunque este problema no es reproducible para la mayoría de los dispositivos que usan Android 8.1.0, no existe una solución alternativa para aquellos dispositivos que usan Android 8.0.0 u 8.1.0, donde ocurre.
  • Observado solo con dispositivos Android 5.x: Al liberar la licencia de Widevine llamando al OfflineLicenseManager.releaseLicense método, un MediaDrmStateException se lanza un error.
  • En el OfflinePlaybackSampleApp , hay dos períodos de vencimiento de la licencia de Widevine.

    • absoluteExpiration es una fecha de vencimiento de la licencia para iniciar la reproducción del video descargado
    • playDuration es cuánto tiempo se puede reproducir el video

    Cuándo playDuration se convierte en menos de 60 segundos, el CDM de Widevine maneja la licencia como vencida y arroja un No se pudo obtener la solicitud de clave error. La reproducción no comenzará con esta excepción de licencia de Widevine.

    Con Brightcove Native SDK para Android v6.1.0 +, puede intentar llamar AbstractOfflineCatalog.requestRentalLicense(Video, Date, long, EventListener) o AbstractOfflineCatalog.requestPurchaseLicense(Video, EventListener) para recuperar una nueva licencia. Nota: El dispositivo debe estar en línea para adquirir una nueva licencia.

Reproducción de videos locales

  • Recibirá un error de excepción si intenta reproducir videos MP4 almacenados en la carpeta de recursos de la aplicación (/ res / raw). La solución es mover sus videos MP4 a la carpeta de activos de la aplicación si desea reproducir videos locales.

Listas de reproducción con DRM y Clear Content

  • Con Native SDK para Android v6.17.0 y versiones posteriores, Brightcove se ha dado cuenta de un problema con las listas de reproducción que contienen contenido encriptado y claro. Cuando un usuario selecciona un video claro durante o después de la reproducción de un video encriptado, el SDK devolverá un IllegalStateException . Esto se debe a que el reproductor no puede usar un códec encriptado para contenido claro.

    Por ahora, Brightcove sugiere la siguiente solución alternativa: Para evitar el error, puede poner al jugador en una Actividad que esté separada de la vista de la lista de reproducción. Seleccionar un nuevo video, ya sea claro o encriptado, de la lista de reproducción implica destruir la actividad del reproductor existente y crear una nueva actividad del reproductor. Este flujo de trabajo crea una nueva instancia de ExoPlayer con nuevos recursos de códec.

Selección de fuente

  • Si su video tiene fuentes HTTP y HTTPS para títulos / subtítulos WebVTT, es posible que el SDK nativo para Android no devuelva la versión HTTPS. Brightcove es consciente de esta situación y tendrá una solución en una versión futura.

Subtítulos

  • El botón CC no aparecerá en la barra de control y el reproductor no cargará pistas de texto si asigna pistas de texto a un video en Video Cloud Studio y establece el AMABLE valor de campo a Subtítulos. La solución es establecer el AMABLE valor de campo a Cerrar subtítulos cuando asigna pistas de texto en Studio.

  • Cuando la configuración de subtítulos / audio excede el espacio proporcionado para mostrar la lista completa, la lista no se puede desplazar en Android TV. La lista se puede desplazar en teléfonos y tabletas Android.

SDK nativo para iOS

Chromecast

  • Native SDK no es compatible con la cola de Chromecast con la aplicación Brightcove Cast Receiver.

Transmisiones en vivo

  • El SDK nativo no admite anuncios con transmisiones HLS Live.

Reproducción sin conexión

  • Con iOS 12, configurar el kBCOVOfflineVideoManagerDisplayNameKey El valor de campo con caracteres multibyte puede causar un error de descarga. Esto se debe a que los caracteres multibyte se codifican como valores de cadena más largos y iOS restringe la longitud de la cadena a 255 bytes. Este problema se ha informado a Apple.
  • Con iOS 12, el didProgress El evento puede dejar de activarse cuando su aplicación se reanuda desde el fondo al primer plano durante la descarga. Notará que el estado de descarga ya no se actualiza. Este problema se ha informado a Apple.
  • Cuando se intenta reproducir el mismo video sin conexión dos veces seguidas, el usuario puede experimentar una actividad de red inesperada. La AVPlayer puede cambiar para reproducir la versión en línea del video. Se ha enviado un informe de error a Apple. Para conocer los pasos alternativos, consulte la Reproducción del mismo video sin conexión dos veces sección del documento de referencia.
  • Si su aplicación está orientada a iOS 11.0 - 11.2, no recomendamos las descargas simultáneas porque el comportamiento de pausa y reanudación no es confiable con múltiples descargas simultáneas. El problema se ha solucionado con iOS 11.3.