

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

# 使用 GStreamer 外掛程式進行串流
<a name="streaming-using-gstreamer-plugin"></a>

Amazon Rekognition Video 可以分析來自裝置攝影機的即時串流影片。如要從裝置來源存取媒體輸入，您需要安裝 GStreamer。GStreamer 是第三方多媒體框架軟件，將媒體源和處理工具在工作流程管道中連接在一起。您還需要為 Gstreamer 安裝 [Amazon Kinesis Video Streams 生成器外掛程式](https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-cpp/)。此程序假設您已成功設定 Amazon Rekognition Video 和 Amazon Kinesis 資源。如需詳細資訊，請參閱 [設定您的 Amazon Rekognition Video 和 Amazon Kinesis 資源](setting-up-your-amazon-rekognition-streaming-video-resources.md)。

## 步驟 1：安裝 Gstreamer
<a name="step-1-install-gstreamer"></a>

 下載並安裝第三方多媒體平台軟件 Gstreamer。您可以使用軟件包管理軟件，例如自製軟件 ([自製軟件上的 Gstreamer](https://formulae.brew.sh/formula/gstreamer))，也可以直接從[免費桌面網站](https://gstreamer.freedesktop.org/download/)獲取。

 通過從命令行終端啟動帶有測試源的影片源來驗證 Gstreamer 是否成功安裝。

```
$ gst-launch-1.0 videotestsrc ! autovideosink
```

## 步驟 2：安裝 Kinesis Video Streams 製作外掛程式
<a name="step-2-install-kinesis-video-plugin"></a>

 在本節中，您將下載 [Amazon Kinesis Video Streams 生成器程式庫](https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-cpp/)，並安裝 Kinesis Video Streams Gstreamer 外掛程式。

 建立目錄，由 GitHub 儲存庫複製範例原始碼。請務必包括 `--recursive` 參數。

```
$ git clone --recursive https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-cpp.git
```

遵循[資源庫提供的指示](https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-cpp/blob/master/README.md)來規劃和建置專案。請務必針對您的作業系統使用平台的特定指令。當您執行 `cmake` 以安裝 Kinesis Video Streams Gstreamer 外掛程式時，請使用此 `-DBUILD_GSTREAMER_PLUGIN=ON` 參數。此專案需要安裝中包含的下列額外套件：GCC 或 Clang、Curl、Openssl 和 Log4cplus。如果您的組建因為遺失套件而失敗，請確認套件已安裝且已安裝在 PATH 中。如果在構建時遇到「無法執行 C 編譯程序」錯誤，請再次執行構建命令。有時，找不到正確的 C 編譯器。

 執行下列命令，驗證 Kinesis Video Streams 外掛程式：

```
$ gst-inspect-1.0 kvssink
```

 應該會顯示下列資訊，例如工廠和外掛程式詳細資訊：

```
Factory Details:
  Rank                     primary + 10 (266)
  Long-name                KVS Sink
  Klass                    Sink/Video/Network
  Description              GStreamer AWS KVS plugin
  Author                   AWS KVS <kinesis-video-support@amazon.com>
                
Plugin Details:
  Name                     kvssink
  Description              GStreamer AWS KVS plugin
  Filename                 /Users/YOUR_USER/amazon-kinesis-video-streams-producer-sdk-cpp/build/libgstkvssink.so
  Version                  1.0
  License                  Proprietary
  Source module            kvssinkpackage
  Binary package           GStreamer
  Origin URL               http://gstreamer.net/
  
  ...
```

## 步驟 3：使用室壁執行影片流插件
<a name="step-3-run-gstreamer-with-kinesis-video-plugin"></a>

 在您開始從裝置攝影機串流到 Kinesis Video Streams 之前，您可能需要將媒體來源轉換為 Kinesis Video Streams 可接受的轉碼器。若要判斷目前連線至電腦之裝置的規格和格式功能，請執行下列命令。

```
$ gst-device-monitor-1.0
```

 若要開始串流，請使用下列範例命令啟動 Gstreamer，然後新增您的憑證和 Amazon Kinesis Video Streams 資訊。應該針對您建立的 IAM 服務角色使用存取金鑰和區域，同時[授予 Amazon Rekognition 存取 Kinesis 串流的權限](https://docs.aws.amazon.com/rekognition/latest/dg/api-streaming-video-roles.html#api-streaming-video-roles-all-stream)。如需有關存取金鑰的詳細資訊，請參閱《IAM 使用者指南》**中的[管理 IAM 使用者的存取金鑰](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html)。另外，您可以根據使用情況的要求調整視訊格式參數，並可從裝置上獲得。

```
$ gst-launch-1.0 autovideosrc device=/dev/video0 ! videoconvert ! video/x-raw,format=I420,width=640,height=480,framerate=30/1 ! 
                x264enc bframes=0 key-int-max=45 bitrate=500 ! video/x-h264,stream-format=avc,alignment=au,profile=baseline ! 
                kvssink stream-name="YOUR_STREAM_NAME" storage-size=512 access-key="YOUR_ACCESS_KEY" secret-key="YOUR_SECRET_ACCESS_KEY" aws-region="YOUR_AWS_REGION"
```

 有關更多啟動命令，請參閱[範例 GStreamer 啟動命令](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/examples-gstreamer-plugin.html#examples-gstreamer-plugin-launch)。

**注意**  
 如果啟動指令因非交涉錯誤而終止，請檢查裝置監視器的輸出，並確定 `videoconvert` 參數值是裝置的有效功能。

 幾秒鐘後，您將在 Kinesis 影片串流上看到來自裝置攝影機的影片摘要。若要開始使用 Amazon Rekognition 偵測和比對人臉，請啟動您的 Amazon Rekognition Video 串流處理器。如需詳細資訊，請參閱 [Amazon Rekognition Video 串流處理器操作概觀](streaming-video.md#using-rekognition-video-stream-processor)。