Site icon Blog ARC Optimizer

Construire un AVPlayer personnalisé sur TVOS: conseils et meilleures pratiques

Construire un AVPlayer personnalisé sur TVOS: conseils et meilleures pratiques


Introduction

L’AVPlayer d’Apple est au cœur de la lecture des médias sur iOS, MacOS et TVOS. Sur Apple TV, la plupart des développeurs commencent par AVPlayerviewController pour ses contrôles intégrés, sous-titres et «up Next».
Mais lorsque vous avez besoin d’une image de marque personnalisée, de superpositions interactives ou d’analyses avancées, ses limites apparaissent rapidement. C’est à ce moment-là que la construction d’une expérience AVPlayer personnalisée devient essentielle avec la gestion des performances, de la concentration et de l’UX. Dans ce guide, nous explorerons les meilleures pratiques pour fabriquer un lecteur TVOS poli.

1. Architecture: Choisir la bonne configuration

Il existe deux modèles communs:

  • AVPlayerviewController: Bon pour la configuration rapide.
  • AVPlayer + AVPlayerLayer (interface utilisateur personnalisée): Nécessaire pour les applications OTT de marque.

Approche recommandée:

Commencer par AVPlayer et l’attachez à un AvPlayerLayer à l’intérieur de votre propre uiView (ou uiViewController).
Construisez vos contrôles / interface utilisateur séparément, afin que vous puissiez les mettre à jour indépendamment de la logique de lecture.

Cette séparation maintient les responsabilités claires et rend votre joueur plus facile à étendre.

  • PlayerGine: Gère l’état de lecture, les observateurs, le débit binaire, etc.
  • Playerui: Gère les visuels comme les boutons, les épurateurs et les invites de saut-intro.

2. Gestion des performances et de la mémoire:

Sur TVOS, les performances sont cruciales. Contrairement aux iPhones, les applications Apple TV s’exécutent sur un matériel limité optimisé pour le streaming, et non sur le multitâche lourde.

Approche recommandée:

  • Utilisez une instance AVPlayer chaque fois que possible. Plusieurs instances = charge GPU / CPU élevée.
  • Utilisez AVQueUePlayer si vous avez besoin de lecture séquentielle au lieu de jongler avec plusieurs AVP.
  • Toujours appeler RempaceCurrentem (avec 🙂 Au lieu de créer de nouveaux joueurs pour chaque vidéo.
  • Libérez Old AVPlayEritems pour éviter les fuites de mémoire.

Profilage dans les instruments> Les allocations montrent si vos AVPlayEritems sont toujours en mémoire après le changement de vidéos. S’ils le sont, vérifiez les observateurs oubliés ou les cycles de référence solides.

3. Tunage de débit adaptatif (ABR)

Par défaut, AVPlayer gère automatiquement la qualité HLS, en s’adaptant aux conditions de réseau et de CPU.
Cependant, il y a des cas où vous voudrez plus de contrôle, comme:

  • Activer les modes de données de données
  • Par défaut de haute qualité pour les abonnés premium
  • Corrélation d’analyse avec la commutation de débit binaire

Approche recommandée:

  • Utiliser PreferredPeakBitrate pour guider la qualité maximale.
  • Observer AvPlayeRetemAccesslog Pour les stands et les commutateurs de débit binaire pour détecter les problèmes de réseau.

Ne codez pas les débits binaires. Au lieu de cela, permettez aux utilisateurs de choisir (auto / moyen / haut) et mapper cela à dynamique PreferredPeakBitrate seuils. Cela équilibre le contrôle des utilisateurs avec ABR Intelligence.

4. COMMANDES CUSTUSTES ET MOTEUR DE FOCUS

Sur TVOS, le moteur Focus est au cœur de la navigation. Une manipulation incorrecte peut avoir un impact sur la convivialité.

Approche recommandée:

  • Définissez toujours un flux de navigation logique entre le jeu / pause, la barre de gommage et les superpositions.
  • Utilisez UifocusGuide pour connecter des éléments d’interface utilisateur qui ne sont pas visuellement adjacents mais doivent être accessibles.
  • Gérer séparément les gestes distants:
    • Robinet → Play / Pause
    • Glissement → Chercher / sauter
    • Longue presse → Menu contextuel (par exemple, audio / sous-titres)

Les conflits de mise au point se produisent souvent lorsque des boutons personnalisés sont placés sur un AVPlayerLlayer. Pour éviter cela, définissez CanBeComeFocUsed = False sur les éléments d’interface utilisateur non interactifs pour aider à réduire le chaos de mise au point.

5. Gestion des sous-titres et des pistes audio

Les téléspectateurs s’attendent à une commutation de sous-titre et de piste audio fluide.

Approche recommandée:

  • Reprochez les groupes de supports directement à partir de l’actif en utilisant le code ci-dessous:

Si let audiOrproup = acte.MediSelectiongroup (FormeDiaCharacteristic: .audible) {
le player.currentem? .Select (Group.options[0]dans: groupe)
}

Si let subtitleGroup = Asset.MediailelectionGroup (FormeDiaCharacteristic: .Legible) {
le player.currentem? .Select (Group.options[0]dans: groupe)
}

  • Fournissez un sélecteur de marque personnalisé au lieu de s’appuyer sur le petit menu par défaut d’Apple.
  • Persistez les préférences des utilisateurs à travers les sessions (par exemple, la langue des sous-titres en dernier utilisée).

Pour les plates-formes OTT multi-langues, envisagez de précharger des fichiers de sous-titres (webvtt / ttml) à partir de votre CMS plutôt que d’utiliser uniquement des légendes HLSEdded. Cela vous donne plus de flexibilité dans le style et le contrôle.

6. épisode et recommandations sans couture

Approche recommandée:

  • Utilisez AvContentProposal pour montrer les aperçus d’épisode avant la fin de la lecture.
  • Préchargez le prochain AVPlayeritem au cours des années 30 dernières de la vidéo actuelle pour une transition instantanée.

Testez l’utilisation de la mémoire lors de la précharge. Si vous préchargez trop tôt ou trop tampon, TVOS récupérera agressivement la mémoire, éventuellement en train d’éviter vos articles en cache.

7. Superpositions et interactivité

Les superpositions comme les publicités, les sondages ou les statistiques sportives peuvent être puissantes, mais s’ils ne sont pas bien réglés, ils ruinent rapidement l’expérience de vision.

Approche recommandée:

  • Gardez les superpositions adaptées au GPU (vues simples, évitez les effets de flou lourd).
  • Masquer automatiquement les superpositions si l’utilisateur n’interagit pas.
  • Assurez-vous une navigation à distance à distance Siri lisse et évitez de piéger la mise au point où elle n’est pas nécessaire.

Pour les flux en direct, envisagez de montrer les superpositions comme des événements synchronisés dans le temps à l’aide d’AVPlayeritemMetAdatacollector. Cela évite la dérive dans les cours d’eau en direct.

8. Gestion de l’état de lecture

Un joueur robuste doit gérer gracieusement chaque cas de bord.

Approche recommandée:

  • Observer «AvPlayeRetem.status» pour détecter la préparation.
  • Écouter « .AvplayeritemDidPlaytoendtime » Observer pour la logique des épisodes suivants.
  • Attraper des stands avec « .AvplayeRetemPlaybackStalled » et déclenchez une rétroaction de l’interface utilisateur («Reconnecture…»).

Pour les flux en direct, exposez toujours un bouton «Jump to Live». Utilisez Seek (à: PlayerItem.Duration) lorsque les utilisateurs dérivent en temps réel.

9. Tester et déboguer

La plupart des problèmes de lecture apparaissent sur de vrais appareils, pas dans le simulateur

Approche recommandée:

  • Testez toujours sur matériel réel Apple TV.
  • Simuler des réseaux faibles ou instables avec Charles Proxy ou Conditionneur de liaison réseau.
  • Valider lecture de longue durée (par exemple, des flux de plusieurs heures).
  • Surveiller la mémoire et le processeur avec Instruments Tout en frottant agressivement

10. Considérations UX

Les applications TV sont expérimentées de 6 à 10 pieds de distance, pas de près comme le mobile.

Approche recommandée:

  • Conception Grand contraste élevé, minimal boutons pour la lisibilité.
  • Donnez des commentaires clairs sur les actions distantes (par exemple, «+ 10s», «-10s»).
  • Gardez l’écran de lecture épuré et faites des superpositions contextuelles et faciles à rejeter.
  • Suivez Apple’s Hig pour s’aligner sur les attentes des utilisateurs.

Conclusion

Personnaliser AVPlayer sur TVOS est à la fois un défi technique et de conception. Lorsqu’il est bien fait, il se déverrouille:

  • Performances lisses: La lecture économe en mémoire, stable et sans crash.
  • Expériences de marque: UIS personnalisés, superpositions interactives et fonctionnalités distinctives des joueurs.
  • Engagement plus élevé: Transitions, recommandations et flux de frénésie compatible avec les épisodes suivants.
  • Confiance des utilisateurs: Interactions à distance prévisibles, manipulation cohérente de mise au point et lecture fiable. La clé est de trouver le bon équilibre entre la liberté et la discipline. En suivant les meilleures pratiques, vous pouvez construire un joueur qui a non seulement l’air et se sent premium, mais offre également une expérience fluide, professionnelle et de qualité OTT, prête à évoluer vers des millions de téléspectateurs.

Vous avez trouvé cela utile? PARTAGEZ-LE






Source link
Quitter la version mobile