本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 MPEG-DASH 播放视频
要使用 MPEG-DASH 查看 Kinesis 视频流,请先使用 Get SessionURL 创建直播会话。DASHStreaming此操作将返回用于访问 MPEG-DASH 会话的 URL(包含会话令牌)。您随后可以使用媒体播放器或独立应用程序中的 URL 来显示流。
Amazon Kinesis 视频流在通过 MPEG-DASH 提供视频时需要满足以下要求:
-
有关流式视频播放曲目的要求,请参阅获取DASHStreaming会话网址要求。
-
数据保留必须大于 0。
-
对于 H.264 格式的高级视频编码 (AVC) 和 H.265 格式的 HEVC,各个片段的视频轨道必须包含编解码器专用数据。有关更多信息,请参阅 MPEG-4 规范 ISO/IEC 14496-15
。有关使流数据适应给定格式的信息,请参阅 NAL 适应标志。 -
各个片段的音频轨道(如果存在)必须包含 AAC 格式 (AAC specification ISO/IEC 13818-7
) 或 MS Wave 格式 的编解码器专用数据。
示例:在 HTML 中使用 MPEG-DASH 和 JavaScript
以下示例说明如何检索 Kinesis 视频流的 MPEG-DASH 直播会话并在网页中播放。该示例演示了如何在以下播放器中播放视频:
主题
设置 Kinesis Video Streams 客户端以便播放 MPEG-DASH
要使用 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);
检索 Kinesis Video Streams 存档内容端点以便播放 MPEG-DASH
启动客户端后,检索 Kinesis Video Streams 存档内容终端节点,以便您可以按如下方式检索 MPEG-DASH 直播会话网址:
// 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 直播会话网址
有了存档的内容端点后,请调用 Ge t DASHStreaming SessionURL API 来检索 MPEG-DASH 直播会话网址,如下所示:
// 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'); }
已完成的示例
您可以在上下载或查看已完成的示例代码