

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Kinesis ビデオストリームからメディアを再生する
<a name="producersdk-cpp-rpi-playback"></a>

[Kinesis Video Streams コンソール](https://console.aws.amazon.com//kinesisvideo/home/)を開き、作成したストリームのストリーム**名**を選択します。

Raspberry Pi から送信された動画ストリームがコンソールに表示されます。

**注記**  
ビデオがコンソールに表示されるまでに数秒かかる場合があります。

ストリームが再生されたら、コンソールで次の機能を試すことができます。
+ [**ビデオのプレビュー**] セクションから、ナビゲーションコントロールを使用しストリームの巻き戻しまたは早送りを行います。
+ **ストリーム情報**セクションで、ストリームのコーデック、解像度、ビットレートを確認します。このチュートリアルでは、帯域幅の使用を最小限に抑えるために、Raspberry Pi の解像度とビットレートの値は意図的に低く設定されています。

  ストリーム用に作成されている Amazon CloudWatch メトリクスを表示するには、**CloudWatch でストリームメトリクスを表示する**」を選択します。
+ [**データ保持期間**] で、ビデオストリームが 1 日間保持されることに注目します。この値を編集して [**No data retention** (データを保持しない)] 設定、あるいは 1 日から数年までの値に設定できます。
+ **サーバー側の暗号化**では、 AWS Key Management Service () によって維持されるキーを使用して、保管時にデータが暗号化されていることに注意してくださいAWS KMS。

## 再生の問題
<a name="rpi-troubleshoot-playback"></a>

以下に、頻繁に発生する再生の問題とそのトラブルシューティング方法を示します。

### メディアはありませんが、ログに PERSISTED Acks があります
<a name="rpi-troubleshoot-no-media"></a>

ログに PERSISTED Acks が表示された場合、Kinesis Video Streams は によってアップロードされたメディアを正常に取り込み、保存しました`kvssink`。Kinesis Video Streams から受信したアカウントは次のようになります。JSON で、`"EventType"`キーの値を確認します。

```
{"EventType":"RECEIVED","FragmentTimecode":252200,"FragmentNumber":"12345678901234567890123456724587702494771079511"}
{"EventType":"BUFFERING","FragmentTimecode":252467,"FragmentNumber":"12345678901234567890123456781729223736853277017"}
{"EventType":"RECEIVED","FragmentTimecode":252467,"FragmentNumber":"12345678901234567890123456781729223736853277017"}
{"EventType":"BUFFERING","FragmentTimecode":253000,"FragmentNumber":"12345678901234567890123456738870744847093249408"}
{"EventType":"PERSISTED","FragmentTimecode":252200,"FragmentNumber":"12345678901234567890123456724587702494771079511"}
{"EventType":"PERSISTED","FragmentTimecode":252467,"FragmentNumber":"1234567890123456789012345671729223736853277017"}
```

**解決策:**

Kinesis Video Streams コンソールで 1～2 分待ってから、右矢印を使用します。メディアが表示されない場合は、ストリームが正しいリージョンに送信されていることを確認し、ストリーム名のスペルを確認します。この情報は ログで確認できます。

kvssink が使用するリージョンを決定する方法[にリージョンを指定する `kvssink`](examples-gstreamer-plugin-parameters.md#kvssink-region)の詳細については、「」を参照してください。

### メディアが にロードされるまでに時間がかかる AWS マネジメントコンソール
<a name="rpi-troubleshoot-load-time"></a>

**重要**  
コンソールの再生エクスペリエンスは、HLS および DASH の再生エクスペリエンスとは異なります。GitHub のサンプルメディアプレイヤーが[ホストするウェブページ](https://aws-samples.github.io/amazon-kinesis-video-streams-media-viewer/)を使用して、再生もテストします。ウェブページのソースコードは、[こちら](https://github.com/aws-samples/amazon-kinesis-video-streams-media-viewer)にあります。

ネットワーク帯域幅の不足やデバイスの制約により、コンソールでのメディアのロードが遅くなることがありますが、ビデオのエンコードとフラグメント化に関連している可能性もあります。

**ビデオエンコードの基本:**
+ H.264 および H.265 エンコーダは、効率的な圧縮のためにキーフレーム (I フレーム) と予測フレーム (P フレーム) を使用します。
+ キーフレームには完全なイメージデータが含まれ、P フレームには以前のフレームからの変更のみが含まれます。
+ 「キーフレーム間隔」は、ビデオストリームでキーフレームが発生する頻度を決定します。

**ストリーミングでのフラグメント化:**
+ Kinesis Video Streams では、新しいフラグメントは各キーフレームで始まります。詳細については、「[Kinesis Video Streams データモデル](how-data.md)」を参照してください。
+ フラグメントの長さ (秒単位) は、*キーフレーム間隔 *÷ *フレームレート*として推定できます。

  **例**:

  キーフレーム間隔が 30 でフレームレートが 15 fps のストリームの場合: 

  フラグメントの長さ = 30 ÷ 15 = 2 秒

キーフレーム間隔が大きいため、フラグメントが長くなるとストリーミングメディアのレイテンシーが増加します。

**解決策:**

ロード時間を短縮するには、キーフレーム間隔を短くすることを検討してください。これによりフラグメントが短くなり、レイテンシーが短縮されますが、ビデオファイルのサイズも大きくなります。

`x264enc` GStreamer 要素の場合、 `key-int-max`プロパティを使用してキーフレーム間隔を明示的に設定できます。

```
x264enc bframes=0 key-int-max=60
```

ログ出力を確認するときは、アップロードするクライアントが Kinesis Video Streams から ACKs を受信する頻度に注意してください。生成されるキーフレームが多いほど、返される ACKs が多くなります。

### メディアがゆがんでいるか、アーティファクトがある
<a name="rpi-troubleshoot-distortion"></a>

この問題のトラブルシューティングを行うには、すべてのケーブルがしっかりと接続されていることを確認してください。カメラモジュールの `libcamera-hello` (またはレガシー Pi カメラ`raspistill`の場合) の出力を確認します。

GStreamer パイプラインで、 `kvssink`を `autovideosink` または `matroskamux`と に置き換えます`filesink`。例えば、次のようになります。

```
... x264enc tune=zerolatency speed-preset=ultrafast bframes=0 key-int-max=60 byte-stream=true ! h264parse ! matroskamux ! filesink location=output.mkv 
```

`filesink` または の使用時に開くメディアプレーヤーの出力ファイルを確認して`autovideosink`、アーティファクトが存在するかどうかを確認します。

また、次のパイプラインの出力を確認します。

```
gst-launch-1.0 autovideosrc ! videoconvert ! autovideosink
```

[デワープ](https://gstreamer.freedesktop.org/documentation/opencv/dewarp.html?gi-language=c)などの要素をパイプラインに追加すると、魚眼カメラの出力を修正できます。

カメラでサポートされている出力コーデックを確認し、必要に応じて要素を調整します。

たとえば、USB カメラが JPEG 出力のみをサポートしている場合は、 `jpegparse`および `jpegdec`要素を使用してメディアを変換してから、 を使用して H.264 にエンコードする必要があります`x264enc`。同様のパイプラインやウェブカメラのセットアップを持つ他のユーザー向けの GStreamer フォーラムでサポートを探します。