

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

# Kinesis Video Streams のトラブルシューティング
<a name="troubleshooting"></a>

次の情報を使用して、Amazon Kinesis Video Streams で発生する一般的な問題をトラブルシューティングします。

**Topics**
+ [一般的な問題](#troubleshooting-general)
+ [API の問題](#troubleshooting-api)
+ [HLS の問題](#troubleshooting-hls)
+ [Java の問題](#troubleshooting-java)
+ [プロデューサーライブラリの問題](#troubleshooting-producer)
+ [ストリームパーサーライブラリの問題](#troubleshooting-parser)
+ [ネットワークの問題](#troubleshooting-network)

## 一般的な問題
<a name="troubleshooting-general"></a>

このセクションでは、Kinesis Video Streams を操作するときに発生する可能性がある一般的な問題について説明します。

**Topics**
+ [レイテンシーが高すぎる](#troubleshooting-general-latency)

### レイテンシーが高すぎる
<a name="troubleshooting-general-latency"></a>

レイテンシーは、Kinesis Video Streams サービスに送信されるフラグメント継続時間が原因で発生する場合があります。プロデューサーとサービスの間のレイテンシーを減らす方法の 1 つとして、より短いフラグメント継続時間を作成するようにメディアパイプラインを設定します。

各フラグメントで送信されるフレーム数を減らすには、 で次の値を減らします`kinesis_video_gstreamer_sample_app.cpp`。

```
g_object_set(G_OBJECT (data.encoder), "bframes", 0, "key-int-max", 45, "bitrate", 512, NULL);
```

**注記**  
Mozilla Firefox ブラウザではビデオレンダリングを内部実装しているため、レイテンシーが高くなります。

## API の問題
<a name="troubleshooting-api"></a>

このセクションでは、Kinesis Video Streams を操作するときに発生する可能性がある API の問題について説明します。

**Topics**
+ [エラー:「未知のオプション」](#troubleshooting-api-unknown-options)
+ [エラー: "承認するサービス/オペレーション名を特定できませんでした"](#troubleshooting-api-name-auth)
+ [エラー: "ストリームにフレームを配置できませんでした"](#troubleshooting-api-putframe)
+ [エラー: "最終 AckEvent が受信される前に、サービスによって接続が終了されました"](#troubleshooting-api-closeconnection)
+ [エラー: 「STATUS\$1STORE\$1OUT\$1OF\$1MEMORY」](#troubleshooting-api-storeoutofmemory)
+ [エラー：「認証情報は有効なリージョンにスコープする必要があります」](#troubleshoot-api-credential)

### エラー:「未知のオプション」
<a name="troubleshooting-api-unknown-options"></a>

`GetMedia` と `GetMediaForFragmentList` は、次のエラーで失敗する場合があります。

```
Unknown options: <filename>.mkv
```

このエラーは、 `output`のタイプを AWS CLI に設定した場合に発生します`json`。をデフォルトの出力タイプ () AWS CLI で再設定します`none`。の設定の詳細については AWS CLI、*AWS CLI 「 コマンドリファレンス*」の[「設定](https://docs.aws.amazon.com/cli/latest/reference/configure)」を参照してください。

### エラー: "承認するサービス/オペレーション名を特定できませんでした"
<a name="troubleshooting-api-name-auth"></a>

`GetMedia` は、次のエラーで失敗する場合があります。

```
Unable to determine service/operation name to be authorized
```

このエラーが発生する可能性があるのは、エンドポイントが適切に指定されていない場合です。エンドポイントを取得するときは、`GetDataEndpoint`呼び出す API に応じて、必ず次のパラメータを呼び出しに含めてください。

```
--api-name GET_MEDIA
--api-name PUT_MEDIA
--api-name GET_MEDIA_FOR_FRAGMENT_LIST
--api-name LIST_FRAGMENTS
```

### エラー: "ストリームにフレームを配置できませんでした"
<a name="troubleshooting-api-putframe"></a>

`PutMedia` は、次のエラーで失敗する場合があります。

```
Failed to put a frame in the stream
```

このエラーが発生する可能性があるのは、サービスで接続またはアクセス許可が利用できない場合です。で以下を実行し AWS CLI、ストリーム情報を取得できることを確認します。

```
aws kinesisvideo describe-stream --stream-name StreamName --endpoint https://ServiceEndpoint.kinesisvideo.region.amazonaws.com
```

呼び出しが失敗した場合の詳細については、[AWS CLI 「エラーのトラブルシューティング](https://docs.aws.amazon.com/cli/latest/userguide/troubleshooting.html)」を参照してください。

### エラー: "最終 AckEvent が受信される前に、サービスによって接続が終了されました"
<a name="troubleshooting-api-closeconnection"></a>

`PutMedia` は、次のエラーで失敗する場合があります。

```
com.amazonaws.SdkClientException: Service closed connection before final AckEvent was received
```

このエラーが発生する可能性があるのは、`PushbackInputStream` が不適切に実装されている場合です。`unread()` メソッドが正しく実装されていることを確認します。

### エラー: 「STATUS\$1STORE\$1OUT\$1OF\$1MEMORY」
<a name="troubleshooting-api-storeoutofmemory"></a>

`PutMedia` は、次のエラーで失敗する場合があります。

```
The content store is out of memory.
```

コンテンツストアに十分なサイズが割り当てられていない場合、このエラーが発生します。コンテンツストアのサイズを増やすには、`StorageInfo.storageSize` の値を増やします。詳細については、「[StorageInfo](producer-reference-structures-producer.md#producer-reference-structures-producer-storageinfo)」を参照してください。

### エラー：「認証情報は有効なリージョンにスコープする必要があります」
<a name="troubleshoot-api-credential"></a>

このエラーは、署名リージョンがエンドポイントリージョンと一致しない場合に発生します。

たとえば、署名リージョン`us-west-2`として を指定し、 `kinesisvideo.us-east-1.amazonaws.com` (`us-east-1`) エンドポイントに接続しようとすると、このエラーが表示されます。

[kvssink](examples-gstreamer-plugin.md) などの一部のアプリケーションでは、リージョンフォールバックチェーンのデフォルトは です`us-west-2`。使用しているアプリケーションに従ってリージョンが正しく設定されていることを確認します。

## HLS の問題
<a name="troubleshooting-hls"></a>

ビデオストリームが正しく再生されない場合は、「」を参照してください[HLS の問題のトラブルシューティング](hls-playback.md#how-hls-ex1-ts)。

## Java の問題
<a name="troubleshooting-java"></a>

このセクションでは、Kinesis Video Streams を操作するときに発生する一般的な Java の問題のトラブルシューティング方法について説明します。

**Topics**
+ [Java ログの有効化](#troubleshooting-java-log)

### Java ログの有効化
<a name="troubleshooting-java-log"></a>

Java サンプルとライブラリに関する問題をトラブルシューティングするには、デバッグログを有効にして調べることをお勧めします。デバッグログを有効にするには、次の操作を行います。

1. `log4j` を `pom.xml` ノードの ```dependencies` ファイルに追加します。

   ```
   <dependency>
       <groupId>log4j</groupId>
       <artifactId>log4j</artifactId>
       <version>1.2.17</version>
   </dependency>
   ```

1. `target/classes` ディレクトリで、次の内容で `log4j.properties` というファイルを作成します。

   ```
   # Root logger option
   log4j.rootLogger=DEBUG, stdout
   
   # Redirect log messages to console
   log4j.appender.stdout=org.apache.log4j.ConsoleAppender
   log4j.appender.stdout.Target=System.out
   log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
   log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
   
   log4j.logger.org.apache.http.wire=DEBUG
   ```

デバッグログが、IDE コンソールに出力されます。

## プロデューサーライブラリの問題
<a name="troubleshooting-producer"></a>

このセクションでは、[Kinesis Video Streams へのアップロード](producer-sdk.md) を使用するときに発生する可能性がある問題について説明します。

**Topics**
+ [プロデューサー SDK をコンパイルできない](#troubleshooting-producer-compile)
+ [ビデオストリームはコンソールには表示されません。](#troubleshooting-producer-console)
+ [エラー: GStreamer デモアプリケーションを使用したデータのストリーミング時の "リクエストに含まれているセキュリティトークンが無効です"](#troubleshooting-producer-general-securitytoken)
+ [エラー: 「Kinesis Video クライアントにフレームを送信できませんでした」](#troubleshooting-producer-failed-frame-client)
+ [GStreamer アプリケーションが、OS X で "ストリーミングが中止されました。ネゴシエーションされていないという理由です" というメッセージで停止する](#troubleshooting-producer-failed-stream-osx)
+ [エラー: Raspberry Pi の GStreamer デモで Kinesis ビデオクライアントを作成するときの "ヒープを割り当てできませんでした"](#troubleshooting-producer-raspberrypi-heap)
+ [エラー: Raspberry Pi での GStreamer デモの実行時の "無効な命令"](#troubleshooting-producer-raspberrypi-illegalinstruction)
+ [カメラで Raspberry Pi のロードに失敗する](#troubleshooting-producer-raspberrypi-camera)
+ [カメラが macOS High Sierra で見つからない](#troubleshooting-producer-sierra-camera)
+ [macOS High Sierra でコンパイルするときに、jni.h ファイルが見つかりません](#troubleshooting-producer-sierra-compile)
+ [GStreamer デモアプリケーションを実行中の Curl エラー](#troubleshooting-producer-curl)
+ [Raspberry Pi での実行時のタイムスタンプ/範囲アサーション](#troubleshooting-producer-raspberrypi-timestamp-assert)
+ [Raspberry Pi の gst\$1value\$1set\$1fraction\$1range\$1full でのアサーション](#troubleshooting-producer-raspberrypi-gst-assert)
+ [Android での STATUS\$1MKV\$1INVALID\$1ANNEXB\$1NALU\$1IN\$1FRAME\$1DATA(0x3200000d) エラー](#troubleshooting-producer-android-invalid-annexb)
+ [最大フラグメント期間に達したエラー](#troubleshooting-producer-maxfragmentduration)
+ [IoT 認可の使用中に "無効なモノの名前が渡されました (Invalid thing name passed)" エラーが発生](#troubleshooting-producer-thingname)

### プロデューサー SDK をコンパイルできない
<a name="troubleshooting-producer-compile"></a>

パスに必要なライブラリがあることを確認します。これを確認するには、次のコマンドを使用します。

```
env | grep LD_LIBRARY_PATH
LD_LIBRARY_PATH=/home/local/awslabs/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-native-build/downloads/local/lib
```

### ビデオストリームはコンソールには表示されません。
<a name="troubleshooting-producer-console"></a>

コンソールでビデオストリームを表示するには、H.264 を使用して AvCC 形式でエンコードする必要があります。ストリームが表示されない場合は、以下の点を確認してください。
+ 元のストリームが Annex-B 形式である場合、[NAL 適応フラグ](producer-reference-nal.md) が `NAL_ADAPTATION_ANNEXB_NALS | NAL_ADAPTATION_ANNEXB_CPD_NALS` に設定されている。これは `StreamDefinition` コンストラクタのデフォルト値です。
+ コーデックのプライベートデータを正しく提供しています。H.264 では、これはシーケンスパラメータセット (SPS) とピクチャパラメータセット (PPS) です。メディアソースに応じて、このデータはメディアソースから個別に取得されるか、フレームにエンコードされています。

  多くの基本ストリームの形式は次のとおりです。ここで、`Ab` は Annex-B の開始コード (001 または 0001) です。

  ```
  Ab(Sps)Ab(Pps)Ab(I-frame)Ab(P/B-frame) Ab(P/B-frame)…. Ab(Sps)Ab(Pps)Ab(I-frame)Ab(P/B-frame) Ab(P/B-frame)
  ```

  H.264 が SPS および PPS としてストリームにある場合、CPD (コーデックプライベートデータ) は AvCC 形式に適応できます。メディアパイプラインが CPD を個別に指定しない限り、アプリケーションは最初の Idr フレーム (SPS と PPS を含む必要があります) を検索してフレームから CPD を抽出し、2 つの NALUs (Ab(Sps)Ab(Pps) になります) を抽出し、 の CPD に設定できます`StreamDefinition`。

### エラー: GStreamer デモアプリケーションを使用したデータのストリーミング時の "リクエストに含まれているセキュリティトークンが無効です"
<a name="troubleshooting-producer-general-securitytoken"></a>

このエラーが発生した場合は、認証情報に問題があります。以下について確認します。
+ 一時的なセキュリティ認証情報を使用している場合は、セッショントークンを指定する必要があります。
+ 一時的な認証情報が失効していないことを確認します。
+ 適切な権限が設定されていることを確認します。
+ macOS では、Keychain にキャッシュされた認証情報がないことを確認します。

### エラー: 「Kinesis Video クライアントにフレームを送信できませんでした」
<a name="troubleshooting-producer-failed-frame-client"></a>

このエラーが発生した場合、タイムスタンプはソースストリームに正しく設定されません。次の操作を試してください：
+ この問題を解決する最新の SDK サンプルを使用してください。
+ 高品質のストリームをより高いビットレートに設定し、カメラがサポートしている場合はソースストリームのジッターを修正します。

### GStreamer アプリケーションが、OS X で "ストリーミングが中止されました。ネゴシエーションされていないという理由です" というメッセージで停止する
<a name="troubleshooting-producer-failed-stream-osx"></a>

OS X では、ストリーミングが停止し、次のメッセージが表示される場合があります。

```
Debugging information: gstbasesrc.c(2939): void gst_base_src_loop(GstPad *) (): /GstPipeline:test-pipeline/GstAutoVideoSrc:source/GstAVFVideoSrc:source-actual-src-avfvide:
streaming stopped, reason not-negotiated (-4)
```

これを回避するには、 の`gst_caps_new_simple`呼び出しからフレームレートパラメータを削除します`kinesis_video_gstreamer_sample_app.cpp`。

```
GstCaps *h264_caps = gst_caps_new_simple("video/x-h264",
                                             "profile", G_TYPE_STRING, "baseline",
                                             "stream-format", G_TYPE_STRING, "avc",
                                             "alignment", G_TYPE_STRING, "au",
                                             "width", GST_TYPE_INT_RANGE, 320, 1920,
                                             "height", GST_TYPE_INT_RANGE, 240, 1080,
                                             "framerate", GST_TYPE_FRACTION_RANGE, 0, 1, 30, 1,
                                             NULL);
```

### エラー: Raspberry Pi の GStreamer デモで Kinesis ビデオクライアントを作成するときの "ヒープを割り当てできませんでした"
<a name="troubleshooting-producer-raspberrypi-heap"></a>

GStreamer サンプルアプリケーションは、512 MB の RAM を割り当てようとしますが、これがシステムで使用できない場合があります。`KinesisVideoProducer.cpp` で次の値を減らすことによって、この割り当てを減らすことができます。

```
device_info.storageInfo.storageSize = 512 * 1024 * 1024;
```

### エラー: Raspberry Pi での GStreamer デモの実行時の "無効な命令"
<a name="troubleshooting-producer-raspberrypi-illegalinstruction"></a>

GStreamer デモの実行中に次のエラーが発生した場合は、デバイスの正しいバージョン用にアプリケーションをコンパイルしたことを確認してください。(例えば、Raspberry Pi 2 で実行しているときに、Raspberry Pi 3 用にコンパイルしていないことを確認します）。

```
INFO - Initializing curl.
Illegal instruction
```

### カメラで Raspberry Pi のロードに失敗する
<a name="troubleshooting-producer-raspberrypi-camera"></a>

カメラがロード済みかどうか確認するには、次のコマンドを実行します。

```
ls /dev/video*
```

何も見つからない場合は、次のコマンドを実行します。

```
vcgencmd get_camera
```

出力は次の例に類似したものになります:

```
supported=1 detected=1
```

ドライバでカメラが検出されない場合は、次のコマンドを実行します。

1. 物理的なカメラの設定を確認し、適切に接続されていることを確認します。

1. 以下を実行してファームウェアをアップグレードします。

   ```
   sudo rpi-update
   ```

1. デバイスを再起動します。

1. 以下を実行してドライバをロードします。

   ```
   sudo modprobe bcm2835-v4l2
   ```

1. カメラが検出されたことを確認します。

   ```
   ls /dev/video*
   ```

### カメラが macOS High Sierra で見つからない
<a name="troubleshooting-producer-sierra-camera"></a>

macOS High Sierra で複数のカメラが利用できる場合、デモアプリケーションはカメラを見つけることができません。

### macOS High Sierra でコンパイルするときに、jni.h ファイルが見つかりません
<a name="troubleshooting-producer-sierra-compile"></a>

このエラーを解決するには、Xcode のインストールを最新バージョンに更新してください。

### GStreamer デモアプリケーションを実行中の Curl エラー
<a name="troubleshooting-producer-curl"></a>

エラーを解決するには、GStreamer デモアプリケーションを実行するとき、[この証明書ファイル](https://www.amazontrust.com/repository/SFSRootCAG2.pem)を `/etc/ssl/cert.pem` にコピーします。

### Raspberry Pi での実行時のタイムスタンプ/範囲アサーション
<a name="troubleshooting-producer-raspberrypi-timestamp-assert"></a>

実行時にタイムスタンプの範囲アサーションが発生した場合は、ファームウェアを更新し、デバイスを再起動します。

```
sudo rpi-update 
$ sudo reboot
```

### Raspberry Pi の gst\$1value\$1set\$1fraction\$1range\$1full でのアサーション
<a name="troubleshooting-producer-raspberrypi-gst-assert"></a>

`uv4l` サービスが実行中の場合は、次のアサーションが表示されます。

```
gst_util_fraction_compare (numerator_start, denominator_start, numerator_end, denominator_end) < 0' failed
```

これが発生した場合は、`uv4l` サービスを停止し、アプリケーションを再起動します。

### Android での STATUS\$1MKV\$1INVALID\$1ANNEXB\$1NALU\$1IN\$1FRAME\$1DATA(0x3200000d) エラー
<a name="troubleshooting-producer-android-invalid-annexb"></a>

メディア・ストリームの [NAL 適応フラグ](producer-reference-nal.md) が間違っている場合、次のエラーが表示されます。​ 

```
putKinesisVideoFrame(): Failed to put a frame with status code 0x3200000d
```

このエラーが発生した場合は、メディアの `.withNalAdaptationFlags` フラグを正しく入力します (例 : `NAL_ADAPTATION_ANNEXB_CPD_NALS`)。このフラグを [Android](producer-sdk-android.md)​ の次の行に入力します。

[ https://github.com/awslabs/aws-sdk-android-samples/blob/master/AmazonKinesisVideoDemoApp/src/main/java/com/amazonaws/kinesisvideo/demoapp/fragment/StreamConfigurationFragment.java\$1L169](https://github.com/awslabs/aws-sdk-android-samples/blob/master/AmazonKinesisVideoDemoApp/src/main/java/com/amazonaws/kinesisvideo/demoapp/fragment/StreamConfigurationFragment.java#L169)

### 最大フラグメント期間に達したエラー
<a name="troubleshooting-producer-maxfragmentduration"></a>

このエラーは、ストリーム内のメディアフラグメントが最大フラグメント継続期間の制限を超えると発生します。[メディアおよびアーカイブメディア API サービスクォータ](limits.md#limits-akv-data) セクションのフラグメントの最大期間制限を参照してください。

この問題を解決するには、以下の手順を実行します。
+ ウェブカメラ/USB カメラを使用している場合は、次のいずれかの操作を行います。
  + キーフレームベースのフラグメント化を使用している場合は、10 秒以内にキーフレームを提供するようにエンコーダーを設定します。
  + キーフレームベースのフラグメント化を使用していない場合は、 でストリームを定義するときに[コードを記述して調べる](producersdk-cpp-write.md)、最大フラグメント期間制限を 10 秒未満の値に設定します。
  + GStreamer パイプラインでソフトウェアエンコーダー (x264 など) を使用している場合は、key-int-max 属性を 10 秒以内に値に設定できます。たとえば、key-int-max を 60 に設定し、fps を 30 に設定して、2 秒ごとにキーフレームを有効にします。
+ RPI カメラを使用している場合は、keyframe-interval 属性を 10 秒未満に設定します。
+ IP (RTSP) カメラを使用している場合は、GOP サイズを 60 に設定します。

### IoT 認可の使用中に "無効なモノの名前が渡されました (Invalid thing name passed)" エラーが発生
<a name="troubleshooting-producer-thingname"></a>

認可に IoT 認証情報を使用している場合にこのエラー (`HTTP Error 403: Response: {"message":"Invalid thing name passed"}`) を回避するには、 `stream-name` ( `kvssink`要素の必須パラメータ) の値が の値と同じであることを確認します`iot-thingname`。詳細については、「[GStreamer 要素パラメータリファレンス](examples-gstreamer-plugin-parameters.md)」を参照してください。

## ストリームパーサーライブラリの問題
<a name="troubleshooting-parser"></a>

このセクションでは、[パーサーライブラリを使用したストリーミング](parser-library.md) を使用するときに発生する可能性がある問題について説明します。

**Topics**
+ [ストリームから 1 つのフレームにアクセスできない](#troubleshooting-parser-frame)
+ [フラグメントのデコードエラー](#troubleshooting-parser-fragment)

### ストリームから 1 つのフレームにアクセスできない
<a name="troubleshooting-parser-frame"></a>

コンシューマーアプリケーションのストリーミングソースから 1 つのフレームにアクセスするには、ストリームに正しいコーデックプライベートデータが含まれていることを確認します。ストリームのデータの形式の詳細については、「[データモデル](how-data.md)」を参照してください。

コーデックプライベートデータを使用してフレームにアクセスする方法については、GitHub ウェブサイトで [KinesisVideoRendererExampleTest.java](https://github.com/aws/amazon-kinesis-video-streams-parser-library/blob/master/src/test/java/com/amazonaws/kinesisvideo/parser/examples/KinesisVideoRendererExampleTest.java) テストファイルを参照してください。

### フラグメントのデコードエラー
<a name="troubleshooting-parser-fragment"></a>

フラグメントが H.264 フォーマットで適切にエンコードされておらず、ブラウザがサポートしているレベルである場合、コンソールでストリームを再生するときに次のエラーが表示されることがあります。

```
Fragment Decoding Error
There was an error decoding the video data. Verify that the stream contains valid H.264 content
```

このような場合は、次の点を確認してください。
+ フレームの解像度が、コーデックのプライベートデータで指定された解像度に一致している。
+ エンコードされたフレームの H.264 プロファイルとレベルが、コーデックのプライベートデータで指定されたプロファイルとレベルに一致している。
+ ブラウザがプロファイル/レベルの組み合わせをサポートしている。現在のほとんどのブラウザは、すべてのプロファイルとレベルの組み合わせをサポートしています。
+ タイムスタンプは正確で正しい順序であり、重複するタイムスタンプは作成されない。
+ お使いのアプリケーションが H.264 形式を使用してフレームデータをエンコードしている。

## ネットワークの問題
<a name="troubleshooting-network"></a>

Kinesis Video Streams に接続しようとすると、「接続タイムアウト」や「接続失敗」などの接続エラーが表示される場合は、ネットワーク設定の IP アドレス範囲の制限が原因である可能性があります。

設定に Kinesis Video Streams の IP アドレス範囲の制限がある場合は、ネットワーク設定を更新して Kinesis Video Streams の [IP アドレス範囲](https://ip-ranges.amazonaws.com/ip-ranges.json)を許可リストに登録します。

**重要**  
IP 範囲リストは、Kinesis Video Streams の IP アドレスの完全なリストではありません。表示される IP アドレス範囲を含め、IP アドレスは時間の経過とともに変化する可能性があることに注意してください。

詳細については、[AWS 「IP 範囲](https://docs.aws.amazon.com//vpc/latest/userguide/aws-ip-ranges.html)」を参照してください。IP 範囲が変更されたときに通知を受け取るには、[サブスクリプションの手順](https://docs.aws.amazon.com//vpc/latest/userguide/aws-ip-ranges.html#subscribe-notifications)に従います。