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
HTTPLive Streaming (HLS)
Vous pouvez l'utiliser HLS pour la diffusion 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 G etHLSStreaming SessionHLS, créez d'abord une session de diffusion en continu. URL Cette action renvoie un URL (contenant un jeton de session) pour accéder à la HLS session. Vous pouvez ensuite l'utiliser URL dans un lecteur multimédia ou une application autonome pour afficher le flux.
Important
Les médias envoyés à Kinesis Video Streams ne peuvent pas tous être lus. HLS Consultez GetHLSStreamingSessionURL les exigences spécifiques en matière de téléchargement.
Rubriques
Utilisez le AWS CLI pour récupérer une session de HLS streaming URL
Suivez la procédure ci-dessous AWS CLI pour générer une session de HLS streaming URL 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 HLS URL point de terminaison 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 URL demande de session de HLS streaming à 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 l'utiliser, URL ainsi que n'importe quel HLS joueur, pour visionner le HLS stream.
Par exemple, utilisez un lecteur VLC multimédia.
Vous pouvez également écouter le HLS Stream en accédant à la session de HLS streaming URL dans la barre d'adresse des navigateurs Apple Safari ou Microsoft Edge.
Exemple : utilisation HLS dans HTML et JavaScript
L'exemple suivant montre comment utiliser le AWS SDK for JavaScript v2 pour récupérer une session de HLS streaming pour un flux vidéo Kinesis et 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 formulaire JavaScript pour les navigateurs
Dans la page Web, incluez la balise de script suivante pour importer le AWS SDK for 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, reportez-vous à AWS SDKla JavaScript documentation.
Configuration du client Kinesis Video Streams
Pour accéder à une vidéo en streaming avecHLS, 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 dans les zones de saisie de la HTML page.
Récupérez le point de terminaison pour le HLS lire
Utilisez le client Kinesis Video Streams pour appeler le afin de récupérer GetDataEndpoint API 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 la session de HLS streaming URL
Utilisez le client multimédia archivé Kinesis Video Streams pour appeler GetHLSStreamingSessionURL API le afin de récupérer HLS la URL lecture.
const getHLSStreamingSessionURLOptions = { StreamName: '
YourStreamName
', PlaybackMode: 'LIVE' }; const getHLSStreamingSessionURLResponse = await kinesisVideoArchivedMediaClient .getHLSStreamingSessionURL(getHLSStreamingSessionURLOptions) .promise(); const hlsUrl = getHLSStreamingSessionURLResponse.HLSStreamingSessionURL;
Afficher le HLS flux sur la page Web
Lorsque vous avez une session de HLS streamingURL, transmettez-la au lecteur vidéo. La méthode de mise URL à disposition du lecteur vidéo est spécifique au lecteur utilisé.
HLSProblèmes de résolution des problèmes
Cette section décrit les problèmes que vous pouvez rencontrer lors de l'utilisation de HTTP Live Streaming (HLS) avec Kinesis Video Streams.
Problèmes
La récupération de la session de HLS streaming URL réussit, mais la lecture échoue dans le lecteur vidéo
Cette situation se produit lorsque vous parvenez à récupérer une session de HLS streaming à URL l'aide deGetHLSStreamingSessionURL
, mais que la vidéo ne parvient pas à être lue lorsqu'elle 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 session de HLS streaming URL est utilisée par un seul joueur. Si plusieurs joueurs utilisent une même session de HLS streamingURL, le service risque de recevoir trop de demandes et de les limiter.
-
Vérifiez que votre lecteur prend en charge toutes les options que vous spécifiez pour la session de HLS streaming. 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 sont généralement compatibles qu'HLSavec le format de MP4 conteneur f. Les autres lecteurs multimédias (tels que Flash et les lecteurs personnalisés) ne sont peut-être compatibles qu'HLSavec le format 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 lue HLS fragment 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, pensez à l'utiliser à la GetMedia
API 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 playlist, 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.