Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Lecture vidéo avec HLS
Le HTTP Live Streaming (HLS)
Vous pouvez utiliser HLS pour la lecture en direct. La latence est généralement comprise entre 3 et 5 secondes, mais elle peut être comprise entre 1 et 10 secondes, selon le cas d'utilisation, le lecteur et les conditions du réseau. Vous pouvez utiliser un lecteur tiers (tel que Video.js
Pour visionner un flux vidéo Kinesis à l'aide de HLS, créez d'abord une session de streaming à l'aide de. GetHLSStreamingSessionURL Cette action renvoie une URL (contenant un jeton de session) permettant d'accéder à la session HLS. Vous pouvez alors utiliser cette URL dans un lecteur multimédia ou une application autonome pour afficher le flux.
Important
Les contenus multimédias envoyés à Kinesis Video Streams ne peuvent pas tous être lus via HLS. Consultez GetHLSStreamingSessionURL les exigences spécifiques en matière de téléchargement.
Rubriques
Utilisez la commande AWS CLI pour récupérer l'URL d'une session de streaming HLS
La procédure suivante montre comment utiliser le AWS CLI pour générer une URL de session de streaming HLS pour un flux vidéo Kinesis.
Pour les instructions d'installation, consultez le guide de AWS Command Line Interface l'utilisateur. Après l'installation, configurez le AWS CLI avec les informations d'identification et la région.
Vous pouvez également ouvrir le AWS CloudShell terminal sur lequel les éléments AWS CLI sont installés et configurés. Pour plus d'informations, consultez le Guide de l'utilisateur AWS CloudShell.
Récupérez le point de terminaison de l'URL HLS pour votre flux vidéo Kinesis.
Tapez ce qui suit dans le terminal :
aws kinesisvideo get-data-endpoint \ --api-name GET_HLS_STREAMING_SESSION_URL \ --stream-nameYourStreamNameVous allez recevoir une réponse qui ressemble à ceci :
{ "DataEndpoint": "https://b-1234abcd.kinesisvideo.aws-region.amazonaws.com" }Envoyez la demande d'URL de session de streaming HLS à ce point de terminaison renvoyé.
Vous allez recevoir une réponse qui ressemble à ceci :
{ "HLSStreamingSessionURL": "https://b-1234abcd.kinesisvideo.aws-region.amazonaws.com/hls/v1/getHLSMasterPlaylist.m3u8?SessionToken=CiAz...DkRE6M~" }Important
Ne partagez ni ne stockez ce jeton là où une entité non autorisée pourrait y accéder. Le jeton permet d'accéder au contenu du flux. Protégez le jeton en appliquant les mêmes mesures que celles que vous utiliseriez pour vos AWS informations d'identification.
Vous pouvez utiliser cette URL et n'importe quel lecteur HLS pour afficher le flux HLS.
Par exemple, utilisez le lecteur multimédia VLC.
Vous pouvez également lire le HLS Stream en saisissant l'URL de la session de streaming HLS dans la barre d'adresse des navigateurs Apple Safari ou Microsoft Edge.
Exemple : utilisez HLS en HTML et JavaScript
L'exemple suivant montre comment utiliser le AWS SDK pour la JavaScript version v2 afin de récupérer une session de streaming HLS pour un flux vidéo Kinesis et de la lire sur une page Web. Cet exemple montre comment lire la vidéo dans les lecteurs suivants :
Consultez l'exemple de code complet
Région AWS: la région dans laquelle se trouve votre flux vidéo Kinesis
Nom du flux : nom de votre flux vidéo Kinesis
Mode de lecture : mode de lecture HLS (LIVE, LIVE_REPLAY ou ON_DEMAND)
Type de sélecteur de fragments : méthode utilisée pour sélectionner des fragments (SERVER_TIMESTAMP ou PRODUCER_TIMESTAMP)
Numéro de fragment : numéro de fragment de départ (le cas échéant)
Format du conteneur : format du conteneur multimédia (FRAGMENTED_MP4 ou MPEG_TS)
L'application récupère ces valeurs à partir des zones de saisie de la page HTML et les utilise pour créer la demande d'une session de streaming HLS qui s'affiche sur la page.
Rubriques de présentation du code :
Importez le AWS SDK JavaScript pour navigateurs
Dans la page Web, incluez la balise de script suivante pour importer le AWS SDK pour la JavaScript v2 dans le projet.
<script src="https://cdnjs.cloudflare.com/ajax/libs/aws-sdk/2.490.0/aws-sdk.min.js"></script>
Pour plus d'informations, consultez la JavaScript documentation du AWS SDK.
Configuration du client Kinesis Video Streams
Pour accéder au streaming vidéo avec HLS, créez et configurez d'abord le client Kinesis Video Streams. Consultez la section Configuration des informations d'identification dans un navigateur Web pour d'autres méthodes d'authentification.
const clientConfig = { accessKeyId: 'YourAccessKey', secretAccessKey: 'YourSecretKey', region: 'us-west-2' }; const kinesisVideoClient = new AWS.KinesisVideo(clientConfig);
L'application récupère les valeurs nécessaires à partir des zones de saisie sur la page HTML.
Récupérez le point de terminaison pour la lecture HLS
Utilisez le client Kinesis Video Streams pour appeler l'GetDataEndpointAPI afin de récupérer le point de terminaison.
const getDataEndpointOptions = { StreamName: 'YourStreamName', APIName: 'GET_HLS_STREAMING_SESSION_URL' }; const getDataEndpointResponse = await kinesisVideoClient .getDataEndpoint(getDataEndpointOptions) .promise(); const hlsDataEndpoint = getDataEndpointResponse.DataEndpoint;
Ce code enregistre le point de terminaison dans la hlsDataEndpoint variable.
Configuration du client multimédia archivé Kinesis Video Streams
Dans la configuration du client multimédia archivé Kinesis Video Streams, spécifiez le point de terminaison que vous avez obtenu à l'étape précédente.
const archivedMediaClientConfig = { accessKeyId: 'YourAccessKey', secretAccessKey: 'YourSecretKey', region: 'us-west-2', endpoint: hlsDataEndpoint }; const kinesisVideoArchivedMediaClient = new AWS.KinesisVideoArchivedMedia(archivedMediaClientConfig);
Récupérez l'URL de la session de streaming HLS
Utilisez le client multimédia archivé Kinesis Video Streams pour appeler l'GetHLSStreamingSessionURLAPI afin de récupérer l'URL de lecture HLS.
const getHLSStreamingSessionURLOptions = { StreamName: 'YourStreamName', PlaybackMode: 'LIVE' }; const getHLSStreamingSessionURLResponse = await kinesisVideoArchivedMediaClient .getHLSStreamingSessionURL(getHLSStreamingSessionURLOptions) .promise(); const hlsUrl = getHLSStreamingSessionURLResponse.HLSStreamingSessionURL;
Afficher le flux HLS sur la page Web
Lorsque vous disposez de l'URL de la session de streaming HLS, fournissez-la au lecteur vidéo. La méthode pour fournir l'URL au lecteur vidéo est spécifique au lecteur utilisé.
Résolution des problèmes HLS
Cette section décrit les problèmes que vous pouvez rencontrer lors de l'utilisation de la diffusion en direct HTTP (HLS) avec Kinesis Video Streams.
Problèmes
Succès de la récupération de l'URL de la session de streaming HLS, mais échec de la lecture dans le lecteur vidéo
Cette situation se produit lorsque l'URL d'une session de streaming HLS peut être récupérée avec succès avec GetHLSStreamingSessionURL, mais que la vidéo ne peut pas être lue lorsque l'URL est fournie à un lecteur vidéo.
Pour résoudre ce problème, essayez l'une des actions suivantes :
-
Déterminez si le flux vidéo est lu dans la console Kinesis Video Streams. Prenez en compte toutes les erreurs que la console affiche.
-
Si la durée de fragment est inférieure à une seconde, augmentez-la à une seconde. Si la durée du fragment est trop courte, le service peut ralentir le lecteur car il demande trop fréquemment des fragments vidéo.
-
Vérifiez que chaque URL de session de streaming HLS est utilisée par un seul lecteur. Si plusieurs lecteurs utilisent une même URL de session de streaming HLS, le service peut recevoir un trop grand nombre de demandes et peut les limiter.
-
Vérifiez que votre lecteur prend en charge toutes les options que vous spécifiez pour la session de streaming HLS. Essayez des combinaisons différentes de valeurs pour les paramètres suivants :
-
ContainerFormat -
PlaybackMode -
FragmentSelectorType -
DiscontinuityMode -
MaxMediaPlaylistFragmentResults
Certains lecteurs multimédias (tels que les lecteurs HTML5 et mobiles) ne prennent généralement en charge que HLS avec le format de conteneur fMP4. Les autres lecteurs multimédia (tels que Flash et les lecteurs personnalisés) peuvent uniquement prendre en charge le format HLS avec le format de conteneur MPEG TS. Nous vous recommandons de tester le
ContainerFormatparamètre pour démarrer le dépannage. -
-
Vérifiez que chaque fragment possède un nombre de pistes cohérent. Vérifiez que les fragments du flux ne changent pas entre une piste audio et vidéo et une piste vidéo uniquement. Vérifiez également que les paramètres de l'encodeur (résolution et fréquence d'images) ne changent pas entre les fragments de chaque piste.
Latence trop élevée entre producteur et lecteur
Cette situation se produit lorsque la latence est trop élevée entre le moment où la vidéo est capturée et le moment où elle est lue dans le lecteur vidéo.
La vidéo est relue via HLS par fragment. Par conséquent, la latence ne peut pas être inférieure à la durée du fragment. La latence inclut également le temps nécessaire à la mise en tampon et au transfert des données. Si votre solution nécessite une latence inférieure à une seconde, envisagez d'utiliser l'API GetMedia à la place.
Les paramètres suivants peuvent être ajustés pour réduire la latence globale, mais l'ajustement de ces paramètres peut également réduire la qualité de la vidéo ou augmenter le taux de remise en tampon.
-
Durée du fragment : la durée du fragment est la quantité de vidéo entre les divisions du flux, contrôlée par la fréquence des images-clés générées par l'encodeur vidéo. La valeur recommandée est d'une seconde. Le fait d'avoir une durée de fragment plus courte signifie que moins de temps s'écoule à attendre la fin du fragment avant de transmettre les données vidéo au service. Les fragments plus courts sont également plus rapides à traiter par le service. Toutefois, si la durée de fragment est trop courte, la probabilité augmente que le lecteur viendra à manquer de contenu et devra s'arrêter et mettre en tampon du contenu. Si la durée de fragment est inférieure à 500 millisecondes, le producteur peut créer un trop grand nombre de demandes, obligeant ainsi le service à les limiter.
-
Débit : la lecture, l'écriture et la transmission d'un flux vidéo à débit inférieur prennent moins de temps. Toutefois, un flux vidéo avec une vitesse de transmission plus faible a généralement une plus faible qualité vidéo.
-
Nombre de fragments dans les listes de lecture multimédia — Un lecteur sensible à la latence ne doit charger que les fragments les plus récents d'une liste de lecture multimédia. La plupart des joueurs commencent plutôt par le premier fragment. En réduisant le nombre de fragments dans la liste de lecture, vous réduisez l'intervalle de temps entre les fragments précédents et les nouveaux fragments. Avec une taille de playlist plus petite, il est possible qu'un fragment soit ignoré pendant la lecture s'il y a un retard dans l'ajout de nouveaux fragments à la liste de lecture, ou si le lecteur tarde à recevoir une playlist mise à jour. Nous vous recommandons d'utiliser 3 à 5 fragments et d'utiliser un lecteur configuré pour charger uniquement les fragments les plus récents d'une playlist.
-
Taille de la mémoire tampon du lecteur : la plupart des lecteurs vidéo ont une durée de mémoire tampon minimale configurable, généralement de 10 secondes par défaut. Pour la latence la plus faible, vous pouvez définir cette valeur sur 0 seconde. Cependant, cela signifie que le joueur rebuffera s'il y a un retard produisant des fragments, car il n'aura aucune mémoire tampon pour absorber le retard.
-
« Rattrapage » du lecteur : en général, les lecteurs vidéo ne reprennent pas automatiquement la lecture au début de la mémoire tampon vidéo si celle-ci est pleine, par exemple lorsqu'un fragment différé entraîne un arriéré de fragments en attente de lecture. Un lecteur personnalisé peut éviter ce problème en supprimant des trames ou en augmentant la vitesse de lecture (par exemple, à 1,1x) pour rattraper l'avant du tampon. Cela entraîne des saccades ou des accélérations de la lecture lorsque le lecteur rattrape son retard, et une remise en tampon peut être plus fréquente lorsque la taille du tampon est maintenue courte.