HLSによるストリーミング再生

Amazon Kinesis Video Streams では、 HTTP Live Streaming (HLS) および Dynamic Adaptive Streaming over HTTP (DASH) 形式を用いて、 クラウドにアップロードされた動画をライブもしくはオンデマンドで再生することができます。

このステップでは、AWS CLI を利用して HLS のストリーミングセッションの URL を取得し、動画のストリーミング再生を行います。

HLS によるライブ再生

まず、HLSを用いたストリーミングでのライブ再生を試します。

操作用 PC のターミナル から以下のコマンドを実行します。

aws kinesisvideo get-data-endpoint --stream-name kvs-workshop-stream --api-name GET_HLS_STREAMING_SESSION_URL

以下のような出力が得られます。

{
    "DataEndpoint": "https://b-xxxxxxxx.kinesisvideo.region.amazonaws.com"
}

この値を環境変数に格納しておきます。

export KVS_DATA_ENDPOINT=上記の DataEndpoint の値

上記で設定した KVS_DATA_ENDPOINT の値を利用して、以下のコマンドを実行します。

aws kinesis-video-archived-media get-hls-streaming-session-url --endpoint-url $KVS_DATA_ENDPOINT \
--stream-name kvs-workshop-stream \
--playback-mode LIVE

以下のような結果が得られるので、この HLSStreamingSessionURL の URL をコピーします。

{
    "HLSStreamingSessionURL": "https://b-xxxxxxxx.kinesisvideo.region.amazonaws.com/hls/v1/getHLSMasterPlaylist.m3u8?SessionToken=...."
}

An error occurred (ResourceNotFoundException) when calling the GetHLSStreamingSessionURL operation: No fragments found in the stream for the streaming request. のようなエラーが出た場合は、動画がクラウドにストリーミングされていない状態なので、1-3. で実施したビデオのストリームへのアップロードのコマンドを再度実行します。

コピーした URL を Safari, Edge や QuickTime Player、もしくは hls.js などの、 HLS 形式でのストリーミング再生に対応したブラウザ、プレイヤーなどで再生します。

以下のように、リアルタイムのストリーミング映像が表示されれば成功です。

HLSによるストリーミング再生

HLS によるオンデマンド再生

続いて、過去の映像をオンデマンドで再生してみます。

操作用 PC のターミナルで以下のコマンドを実行します。

# Linux の場合
FIVE_MIN_AGO=$(date -d "5 minute ago" -u "+%FT%T+0000")
FOUR_MIN_AGO=$(date -d "4 minute ago" -u "+%FT%T+0000")

# Mac の場合
FIVE_MIN_AGO=$(date -v -5M -u "+%FT%T+0000")
FOUR_MIN_AGO=$(date -v -4M -u "+%FT%T+0000")

# date コマンドが使えない場合は手動で入力
FIVE_MIN_AGO="2020-01-02T03:04:05+0900"
FOUR_MIN_AGO="2020-01-02T03:05:05+0900"

# 各 OS 共通
aws kinesis-video-archived-media get-hls-streaming-session-url --endpoint-url $KVS_DATA_ENDPOINT \
--stream-name kvs-workshop-stream \
--playback-mode ON_DEMAND \
--hls-fragment-selector "FragmentSelectorType=SERVER_TIMESTAMP,TimestampRange={StartTimestamp=$FIVE_MIN_AGO,EndTimestamp=$FOUR_MIN_AGO}"

先ほどと同様に HLSStreamingSessionURL が得られるので、こちらを再生してみると5分前〜4分前の1分間の映像が確認できます。


以上で Lab-1 は完了です。続いて、Lab-2 を進めていきましょう。