Problèmes connus : SDK Brightcove Native Player

Dans cette rubrique, vous découvrirez les problèmes connus associés aux SDK Brightcove Native Player.

Général

Fichiers de sous-titres volumineux

Les sous-titres enregistrés dans le cadre d'un événement en direct produisent parfois un fichier de sous-titres avec des indices qui ressemblent à ceci :

00:00:03 .760 --> 00:00:03 .960
Cette

00:00:03 .960 --> 00:00:04 .160
Ce programme

00:00:04 .160 --> 00:00:04 .400
Ce programme

00:00:04 .400 --> 00:00:04 .600
Ce programme sera

00:00:04 .600 --> 00:00:04 .840
Ce programme sera sous-titré

Ce style de sous-titrage produit un effet de sélection, mais peut avoir l'effet secondaire involontaire de produire un fichier de sous-titres pouvant atteindre plusieurs mégaoctets. Lorsque ces sous-titres sont sélectionnés dans le lecteur, le lecteur tente de télécharger l'intégralité du fichier pour l'analyse et l'affichage (les sous-titres VTT ne peuvent pas être diffusés en continu). Cela peut entraîner des problèmes de performances dans le lecteur, notamment OutOfMemory les erreurs.

Brightcove vous recommande de reformater ces légendes en moins de lignes :

00:00:03 .760 --> 00:00:04 .840
Ce programme sera sous-titré

Cadres tiers

Brightcove ne teste ni ne fournit de support pour l'intégration des kits de développement logiciel Brightcove Native avec des frameworks de développement tiers tels que Xamarin, React Native et Titanium. Contactez votre fournisseur de framework pour une assistance à l'intégration. Voici quelques problèmes que vous pouvez rencontrer :

  • Lorsque vous utilisez le Brightcove Native SDK pour Android avec le framework Titanium, vous pouvez rencontrer des erreurs de lecture avec le contenu DRM. C'est parce que le framework Titanium remplace la valeur par défaut Java.net.ResponseCache avec son propre TiResponseCache .

Utiliser des émulateurs

Que vous utilisiez l'émulateur Android Studio ou le simulateur Xcode pour tester la lecture vidéo, sachez que les émulateurs ne représentent pas avec précision les performances d'un appareil réel. Bien que vous puissiez utiliser des émulateurs pour les tests initiaux pendant le développement, il est recommandé d'utiliser des appareils réels pour des résultats précis.

Des vidéos de très petites dimensions

Les rendus vidéo avec de très petites dimensions (moins de 50px) ne seront pas lus sur iOS ou Android (dans les lecteurs SDK ou autre)

SDK natif pour Android

Vidéos 360°

  • Si vous n'utilisez pas le BrightcovePlayer classe, votre vidéo à 360° sera lue, mais l'application peut planter lors de la pause et de la reprise. Pour en savoir plus sur l'utilisation de cette classe, consultez le Comprendre la classe BrightcovePlayer document.
  • Vous pouvez rencontrer une dérive vidéo après la rotation de l'appareil. Le problème est lié à la façon dont le gyroscope de l'appareil est calibré, ce qui peut affecter les performances. Il n'est pas associé à des marques et modèles d'appareils spécifiques, mais au matériel du capteur de mouvement installé sur l'appareil. Les nouveaux systèmes d'exploitation Android ont des algorithmes de filtrage plus sophistiqués pour corriger le problème. Une solution simple consiste à éteindre l'appareil et à l'allumer lorsqu'il repose sur une surface plane et stable.

Android 12

  • Avec Android 12, sur certains appareils (par exemple, les téléphones Google Pixel), le fait de déplacer le lecteur vers la liste des tâches plutôt que de le placer complètement en arrière-plan n'interrompt pas la lecture et n'émet aucun activityPaused événement. De plus, le fait de placer le joueur au premier plan dans la liste des tâches ne génère aucun activityResumed événement. Un bogue a été ouvert avec Google pour ce comportement.

Légendes

  • La prise en charge des sous-titres présente une limite connue : les sous-titres 608/708 sont affichés dans le lecteur sans le formatage qui peut être présent dans les données de segment. Ce problème devrait être résolu lors d'une prochaine mise à jour du SDK.
  • Les légendes dans le manifeste et les légendes 608/708 ne s'affichent pas automatiquement après les événements du cycle de vie de l'activité.

    Cela peut se produire lorsqu'un joueur est mis en arrière-plan puis ramené au premier plan. Pour afficher les sous-titres, il suffit de les sélectionner à nouveau dans le menu des sous-titres.

  • Certains encodeurs de flux en direct (Elemental, par exemple) disposent d'une fonction de gravure du timecode, qui affiche l'heure du flux en cours sur l'écran du lecteur. Ce burn-in peut avoir un format 608, ce qui peut entraîner l'affichage du bouton Captions (CC) alors qu'il n'y a pas de sous-titres dans le flux. Il n'existe actuellement aucune solution de contournement, mais nous étudierons une solution pour une prochaine version du SDK.

Chromecast

  • Le SDK natif ne prend pas en charge la mise en file d'attente Chromecast avec l'application Brightcove Cast Receiver.

Contenu

  • Les objets vidéo et liste de lecture ne sont pas entièrement parcellaires.

    Les objets doivent être entièrement Parcelables afin d'être transmis via le classeur Android. Un exemple courant consiste à ajouter un objet à une intention pour l'envoyer à une autre activité ou à un autre service, ou à l'enregistrer dans le bundle saveInstanceState. Actuellement, les objets Vidéo et Liste de lecture dans le SDK Android ne sont pas entièrement Parcelable.

GDN

  • La couche DRM sur certaines plates-formes peut ne pas être en mesure de déchiffrer le contenu multimédia. Bien qu'il ne s'agisse pas d'un problème définitif avec cette plate-forme, les tests ont montré que ce problème se produit plus souvent avec les appareils de classe Nexus. Ce problème sort du cadre du SDK Android et de l'ExoPlayer et ne peut pas y être résolu.

Diffusion en direct

  • Le SDK natif ne prend pas en charge les flux DASH Live, ni les publicités avec les flux HLS Live.

Lecture hors ligne

  • Pour ajouter la prise en charge du téléchargement lorsque l'appareil est verrouillé, soit en se mettant en veille, soit avec le bouton d'alimentation, ajoutez l'autorisation suivante à votre AndroidManifest.xml déposer :
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
  • Avec Android 8.0 et versions ultérieures, il est possible de gérer les paramètres d'alimentation lorsque l'application est déplacée en arrière-plan. Cela peut entraîner l'arrêt du processus de téléchargement si l'appareil est déconnecté d'une source d'alimentation. Dans la plupart des cas, lorsque l'application revient au premier plan, le téléchargement se poursuit. Il est important de noter que la gestion de l'alimentation peut être spécifique au système d'exploitation et au fournisseur. Par conséquent, le Brightcove Native SDK pour Android ne tentera pas de gérer ou de remplacer les paramètres liés à la gestion de l'alimentation.
  • Lorsque vous utilisez Widevine Modular avec Android 8.0.0 (et 8.1.0 sur certains appareils), vous remarquerez peut-être qu'une licence de location a déjà expiré lorsque vous l'achetez. Il s'agit d'un problème connu avec le CDM modulaire Widevine et ne peut pas être résolu dans le SDK Brightcove Android ou ExoPlayer. Bien que ce problème ne soit pas reproductible pour la plupart des appareils utilisant Android 8.1.0, il n'existe aucune solution de contournement pour les appareils utilisant Android 8.0.0 ou 8.1.0, où il se produit.
  • Observé uniquement avec les appareils Android 5.x : Lors de la libération de la licence Widevine en appelant le OfflineLicenseManager.releaseLicense méthode, une MediaDrmStateException l'erreur est levée.
  • Dans l'application OfflinePlaybackSampleApp, il existe deux périodes d'expiration de la licence Widevine.

    • absoluteExpiration est une date d'expiration de la licence pour démarrer la lecture de la vidéo téléchargée
    • playDuration est combien de temps la vidéo peut être jouée

    Lorsque playDuration devient inférieure à 60 secondes, le CDM Widevine traite la licence comme expirée et lance un Échec de la demande de clé Erreur. La lecture ne démarrera pas avec cette exception de licence Widevine.

    Avec le Brightcove Native SDK pour Android v6.1.0+, vous pouvez essayer d'appeler AbstractOfflineCatalog.requestRentalLicense(Video, Date, long, EventListener) ou AbstractOfflineCatalog.requestPurchaseLicense(Video, EventListener) pour récupérer une nouvelle licence. Remarque : L'appareil doit être en ligne pour acquérir une nouvelle licence.

Lecture de vidéos locales

  • Vous recevrez une erreur d'exception si vous essayez de lire des vidéos MP4 stockées dans le dossier de ressources de l'application (/res/raw). La solution de contournement consiste à déplacer vos vidéos MP4 vers le dossier des ressources de l'application si vous souhaitez lire des vidéos locales.

Listes de lecture avec DRM et Clear Content

  • Avec le SDK natif pour Android v6.17.0 et les versions ultérieures, Brightcove a constaté un problème avec les sélections contenant à la fois du contenu crypté et du contenu en clair. Lorsqu'un utilisateur sélectionne une vidéo claire pendant ou après la lecture d'une vidéo cryptée, le SDK renvoie un IllegalStateException. En effet, le lecteur ne peut pas utiliser un codec crypté pour un contenu clair.

    Pour l'instant, Brightcove suggère la solution suivante : Pour éviter cette erreur, vous pouvez placer le lecteur dans une activité distincte de la vue de la liste de lecture. La sélection d'une nouvelle vidéo, qu'elle soit en clair ou cryptée, dans la liste de lecture implique la destruction de l'activité du lecteur existante et la création d'une nouvelle activité du lecteur. Ce flux de travail crée une nouvelle instance d'ExoPlayer avec de nouvelles ressources de codec.

Sélection de la source

  • Si votre vidéo contient à la fois des sources HTTP et HTTPS pour les sous-titres/sous-titres WebVTT, le SDK natif pour Android peut ne pas renvoyer la version HTTPS. Brightcove est conscient de cette situation et disposera d'un correctif dans une prochaine version.

Sous-titres

  • Le bouton CC n'apparaîtra pas dans la barre de contrôle et le lecteur ne chargera pas les pistes de texte si vous affectez des pistes de texte à une vidéo dans Video Cloud Studio et définissez le TYPE valeur du champ à Les sous-titres. La solution de contournement consiste à définir le TYPE valeur du champ à Fermer les sous-titres lorsque vous affectez des pistes de texte dans Studio.

  • Lorsque les sous-titres/paramètres audio dépassent l'espace prévu pour afficher la liste complète, la liste ne peut pas défiler sur Android TV. La liste est défilante sur les téléphones et tablettes Android.

SDK natif pour iOS

Chromecast

  • Le SDK natif ne prend pas en charge la mise en file d'attente Chromecast avec l'application Brightcove Cast Receiver.

Diffusion en direct

  • Le SDK natif ne prend pas en charge les publicités avec les flux HLS Live.

Lecture hors ligne

  • Avec iOS 12, le réglage du kBCOVOfflineVideoManagerDisplayNameKey La valeur du champ avec des caractères multi-octets peut provoquer une erreur de téléchargement. En effet, les caractères multi-octets sont codés en tant que valeurs de chaîne plus longues et iOS limite la longueur de la chaîne à 255 octets. Ce problème a été signalé à Apple.
  • Avec iOS 12, le didProgress L'événement peut cesser de se déclencher lorsque votre application passe de l'arrière-plan au premier plan pendant le téléchargement. Vous remarquerez que le statut de téléchargement n'est plus mis à jour. Ce problème a été signalé à Apple.
  • Lorsque la lecture est tentée pour la même vidéo hors ligne deux fois de suite, l'utilisateur peut rencontrer une activité réseau inattendue. Les AVPlayer peut passer à la lecture de la version en ligne de la vidéo. Un rapport de bogue a été soumis à Apple. Pour les étapes de contournement, consultez le Lecture deux fois de la même vidéo hors ligne partie du document de référence.
  • Si votre application cible iOS 11.0 à 11.2, nous ne recommandons pas les téléchargements simultanés, car le comportement de pause et de reprise n'est pas fiable en cas de téléchargements simultanés multiples. Le problème a été résolu avec iOS 11.3.