使用 MPEG-DASH 播放影片 - Amazon Kinesis Video Streams

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 MPEG-DASH 播放影片

若要使用 MPEG DASH 檢視 Kinesis 視訊串流,請先使用 GetDash URL 建立串流工作階段。StreamingSession這個動作會傳回一個 URL (包含工作階段字符) 以存取 MPEG-DASH 工作階段。然後您可以使用媒體播放器的 URL 或獨立應用程式來顯示串流。

Amazon Kinesis 影片串流對透過 MPEG-DASH 提供視訊有以下要求:

例如:在 HTML 和中使用 MPEG-破折號 JavaScript

下列範例顯示如何擷取 Kinesis 視訊串流的 MPEG-DASH 串流工作階段,並在網頁中播放。本範例說明如何在下列播放器播放影片:

為 MPEG DASH 播放設定 Kinesis Video Streams 用戶端

若要使用 MPEG-DASH 存取串流視訊,請先建立並設定 Kinesis Video Streams 用戶端 (以擷取服務端點) 和封存的媒體用戶端 (以擷取 MPEG-DASH 串流工作階段)。該應用程式會在 HTML 頁面的輸入方塊擷取必要的值。

var streamName = $('#streamName').val(); // Step 1: Configure SDK Clients var options = { accessKeyId: $('#accessKeyId').val(), secretAccessKey: $('#secretAccessKey').val(), sessionToken: $('#sessionToken').val() || undefined, region: $('#region').val(), endpoint: $('#endpoint').val() || undefined } var kinesisVideo = new AWS.KinesisVideo(options); var kinesisVideoArchivedContent = new AWS.KinesisVideoArchivedMedia(options);

擷取用於 MPEG DASH 播放的 Kinesis Video Streams 封存內容端點

啟動用戶端之後,擷取 Kinesis Video Streams 封存的內容端點,以便您可以擷取 MPEG-DASH 串流工作階段 URL,如下所示:

// Step 2: Get a data endpoint for the stream console.log('Fetching data endpoint'); kinesisVideo.getDataEndpoint({ StreamName: streamName, APIName: "GET_DASH_STREAMING_SESSION_URL" }, function(err, response) { if (err) { return console.error(err); } console.log('Data endpoint: ' + response.DataEndpoint); kinesisVideoArchivedContent.endpoint = new AWS.Endpoint(response.DataEndpoint);

擷取 MPEG-DASH 串流工作階段 URL

當您擁有封存的內容端點時,請呼叫 GetDash StreamingSession URL API 以擷取 MPEG DASH 串流工作階段 URL,如下所示:

// Step 3: Get a Streaming Session URL var consoleInfo = 'Fetching ' + protocol + ' Streaming Session URL'; console.log(consoleInfo); if (protocol === 'DASH') { kinesisVideoArchivedContent.getDASHStreamingSessionURL({ StreamName: streamName, PlaybackMode: $('#playbackMode').val(), DASHFragmentSelector: { FragmentSelectorType: $('#fragmentSelectorType').val(), TimestampRange: $('#playbackMode').val() === "LIVE" ? undefined : { StartTimestamp: new Date($('#startTimestamp').val()), EndTimestamp: new Date($('#endTimestamp').val()) } }, DisplayFragmentTimestamp: $('#displayFragmentTimestamp').val(), DisplayFragmentNumber: $('#displayFragmentNumber').val(), MaxManifestFragmentResults: parseInt($('#maxResults').val()), Expires: parseInt($('#expires').val()) }, function(err, response) { if (err) { return console.error(err); } console.log('DASH Streaming Session URL: ' + response.DASHStreamingSessionURL);

播放 MPEG-DASH 以顯示串流影片

當您擁有 MPEG-DASH 串流工作階段的 URL 時,請將其提供給影片播放器。將 URL 提供給影片播放器的方法,因影片播放器種類而異。

以下程式碼範例說明如何提供串流工作階段 URL 到 Google Shaka 播放器:

// Step 4: Give the URL to the video player. //Shaka Player elements <video id="shaka" class="player" controls autoplay></video> <script src="https://cdnjs.cloudflare.com/ajax/libs/shaka-player/2.4.1/shaka-player.compiled.js"> </script> ... var playerName = $('#player').val(); if (playerName === 'Shaka Player') { var playerElement = $('#shaka'); playerElement.show(); var player = new shaka.Player(playerElement[0]); console.log('Created Shaka Player'); player.load(response.DASHStreamingSessionURL).then(function() { console.log('Starting playback'); }); console.log('Set player source'); }

以下程式碼範例說明如何提供串流工作階段 URL 到 dash.js 播放器:

<!-- dash.js Player elements --> <video id="dashjs" class="player" controls autoplay=""></video> <script src="https://cdn.dashjs.org/latest/dash.all.min.js"></script> ... var playerElement = $('#dashjs'); playerElement.show(); var player = dashjs.MediaPlayer().create(); console.log('Created DASH.js Player'); player.initialize(document.querySelector('#dashjs'), response.DASHStreamingSessionURL, true); console.log('Starting playback'); console.log('Set player source'); }

完整的範例

您可以在上下載或檢視已完成的範例程式碼 GitHub。