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 du protocole HLS, créez d'abord une session de streaming à l'aide de Get SessionURL. HLSStreaming 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 le protocole HLS. Consultez GetHLSStreamingSessionURL les exigences spécifiques en matière de téléchargement.
Rubriques
Utilisez le AWS CLI pour récupérer l'URL d'une session de streaming HLS
Suivez la procédure ci-dessous pour générer une URL AWS CLI 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 ils 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 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-name
YourStreamName
Vous recevrez 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 recevrez 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 pas et ne stockez pas ce jeton dans un endroit où une entité non autorisée pourrait y accéder. Le jeton donne accès au contenu du flux. Protégez le jeton avec les mêmes mesures que celles que vous utiliseriez avec 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 écouter 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 2 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
Sujets de présentation du code :
Importer le AWS SDK JavaScript pour les navigateurs
Dans la page Web, incluez la balise de script suivante pour importer le AWS SDK pour la JavaScript version 2 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, reportez-vous à 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. Voir 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 GetDataEndpoint l'API 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 stocke 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 GetHLSStreamingSessionURL l'API 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 liés au HLS
Cette section décrit les problèmes que vous pouvez rencontrer lors de l'utilisation du protocole HTTP Live Streaming (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 HTML5 les lecteurs mobiles) ne prennent généralement en charge le HLS qu'avec le format de MP4 conteneur f. Les autres lecteurs multimédias (tels que Flash et les lecteurs personnalisés) peuvent uniquement prendre en charge le HLS avec le format de conteneur MPEG TS. Nous vous recommandons de tester le
ContainerFormat
paramètre pour commencer à résoudre les problèmes. -
-
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 — Un flux vidéo avec un débit inférieur prend moins de temps à lire, à écrire et à transmettre. 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 si l'ajout de nouveaux fragments à la liste de lecture est retardé ou si le lecteur tarde à obtenir une liste de lecture mise à jour. Nous vous recommandons d'utiliser 3 à 5 fragments et d'utiliser un lecteur configuré pour charger uniquement les derniers fragments 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 en cas de retard de production de fragments, car le joueur n'aura pas de mémoire tampon pour absorber le retard.
-
Lecteur « catch up » : les lecteurs vidéo ne reprennent généralement pas automatiquement la lecture jusqu'au début de la mémoire tampon lorsque celle-ci est pleine, par exemple lorsqu'un fragment retardé entraîne un retard de lecture de fragments. 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.