範例:Kinesis Video Streams 製作 SDK 外掛程式 - Amazon Kinesis Video Streams

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

範例:Kinesis Video Streams 製作 SDK 外掛程式

本主題說明如何建置 Amazon Kinesis Video Streams 製作工具開發套件,以做為 GStreamer 外掛程式使用。

GStreamer 是一種流行的媒體框架,由多個攝像機和視頻源通過組合模塊化插件來創建自定義媒體管道。Kinesis Video Streams GStreamer 外掛程式可簡化您現有 GStreamer 媒體管道與 Kinesis Video Streams 的整合。整合 GStreamer 後,您可以將網路攝影機或即時串流通訊協定 (RTSP) 攝影機的影片串流至 Kinesis Video Streams,以便進行即時或稍後的播放、儲存和進一步分析。

GStreamer 外掛程式會自動管理您的視訊串流傳輸到 Kinesis Video Streams,方法是將 Kinesis Video Streams 訊串流製作工具開發套件所提供的功能封裝在 GStreamer 接收器元素中。kvssinkGStreamer 架構提供標準受管的環境以建構媒體流量裝置,例如相機或其他影片來源以進行進一步的處理、轉譯或儲存。

GStreamer 管道通常包含來源 (攝影機) 和目的元素 (其中為呈現影片的播放器,或離線擷取的儲存) 之間的連結。在這個範例中,您使用製作者開發套件元素做為目的或媒體目的地,對於視訊來源 (網路攝影機或 IP 相機)。封裝 SDK 的外掛程式元素,然後將視訊串流傳送至 Kinesis Video Streams。

本主題說明如何建構 GStreamer 媒體管線,該管線能夠從視訊來源串流視訊,例如網路攝影機或 RTSP 串流,通常透過中繼編碼階段 (使用 H.264 編碼) 連接至 Kinesis Video Streams。當您的視訊串流以 Kinesis 視訊串流的形式提供時,您可以使用 Kinesis Video Streams 剖析器程式庫來進一步處理、播放、儲存或分析您的視訊串流。

GStreamer 媒體管道的功能檢視,用於將視訊從攝影機串流到 Kinesis Video Streams 服務。

下載,構建和配置元素

GStreamer 外掛程式範例包含在 Kinesis Video Streams C++ 製作者 SDK 中。如需開發套件先決條件和下載的相關資訊,請參閱 步驟 1:下載並設定 C++ 生產者程式庫程式碼

您可以建立 Producer SDK GStreamer 目的地作為 macOS、Ubuntu、Raspberry Pi,或 Windows 的的動態程式庫。GStreamer 外掛程式位於您的 build 目錄中。要加載此插件,它必須在您的GST_PLUGIN_PATH. 執行以下命令:

export GST_PLUGIN_PATH=`pwd`/build
注意

在 macOS 環境中,您只能在 Docker 容器內從網路攝影機執行 GStreamer 串流視訊。在 macOS 環境中不支援 Docker 容器內 USB 相機的串流視訊。

運行光元素

若要以 Kinesis Video Streams 製作者 SDK 元素做為接收器執行 GStreamer,請使用命令。gst-launch-1.0請使用適合 GStreamer 外掛程式使用的上游元素。例如,v4l2src 適用於在 Linux 系統上的 v4l2 裝置,或 rtspsrc 適用於 RTSP 裝置。指定 kvssink 做為目的 (最終目的地管道) 以傳送影片到製作者開發套件。

除了提供認證提供區域之外,kvssink元素還具有下列必要參數:

  • stream-name— 目的地 Kinesis Video Streams 的名稱。

如需選用參數 kvssink 的詳細資訊,請參閱元素參數參數

有關 GStreamer 插件和參數的最新信息,請參閱 G Streamer 插件。您也可以使用gst-inspect-1.0後跟 GStreamer 元素或插件的名稱來打印其信息並驗證它是否可在您的設備上使用:

gst-inspect-1.0 kvssink

如果構建kvssink失敗或 GST_PLUGIN_PATH 沒有正確設置,您的輸出將如下所示:

No such element or plugin 'kvssink'

啟動命令示例

以下示例演示瞭如何使用 kvssink GStreamer 插件從不同類型的設備流式傳輸視頻。

示例 1:在 Ubuntu 上從 RTSP 攝像機流式傳輸視頻

下列命令是以 Ubuntu 環境從網路 RTSP 相機串流建立的 GStreamer 管道,使用 rtspsrc GStreamer 外掛程式:

gst-launch-1.0 -v rtspsrc location="rtsp://YourCameraRtspUrl" short-header=TRUE ! rtph264depay ! h264parse ! kvssink stream-name="YourStreamName" storage-size=128

示例 2:在 Ubuntu 上從 USB 攝像機編碼和流式傳輸視頻

下列命令會在 Ubuntu 上建立 GStreamer 管線,以 H.264 格式將來自 USB 攝影機的串流進行編碼,並將其串流至 Kinesis Video Streams。這個範例使用了 v4l2 src 外掛程式。

gst-launch-1.0 v4l2src do-timestamp=TRUE 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="YourStreamName" storage-size=512 access-key="YourAccessKey" secret-key="YourSecretKey" aws-region="YourAWSRegion"

範例 3:從 Ubuntu 上的 USB 攝影機串流預先編碼的視訊

下列命令會在 Ubuntu 上建立 GStreamer 管線,該管道會將攝影機已經以 H.264 格式編碼的視訊串流到 Kinesis Video Streams。這個範例使用了 v4l2 src 外掛程式。

gst-launch-1.0 v4l2src do-timestamp=TRUE device=/dev/video0 ! h264parse ! video/x-h264,stream-format=avc,alignment=au ! kvssink stream-name="plugin" storage-size=512 access-key="YourAccessKey" secret-key="YourSecretKey" aws-region="YourAWSRegion"

示例 4:在 macOS 上從網絡攝像機流式傳輸視頻

以下指令會在 macOS 上建立 GStreamer 管道,該管道可從網路攝影機將視訊串流至 Kinesis 視訊串流。此範例使用 rtspsrc GStreamer 外掛程式。

gst-launch-1.0 rtspsrc location="rtsp://YourCameraRtspUrl" short-header=TRUE ! rtph264depay ! h264parse ! video/x-h264, format=avc,alignment=au ! kvssink stream-name="YourStreamName" storage-size=512 access-key="YourAccessKey" secret-key="YourSecretKey" aws-region="YourAWSRegion"

示例 5:在 Windows 上從網絡攝像機流式傳輸視頻

下列命令會在 Windows 上建立 GStreamer 管道,該管道可從網路攝影機將視訊串流至 Kinesis 視訊串流。此範例使用 rtspsrc GStreamer 外掛程式。

gst-launch-1.0 rtspsrc location="rtsp://YourCameraRtspUrl" short-header=TRUE ! rtph264depay ! video/x-h264, format=avc,alignment=au ! kvssink stream-name="YourStreamName" storage-size=512 access-key="YourAccessKey" secret-key="YourSecretKey" aws-region="YourAWSRegion"

示例 6:從樹莓派上的攝像機流式傳輸視頻

下列命令會在樹莓派上建立 GStreamer 管道,將視訊串流到 Kinesis Video Streams。這個範例使用了 v4l2 src 外掛程式。

gst-launch-1.0 v4l2src do-timestamp=TRUE device=/dev/video0 ! videoconvert ! video/x-raw,format=I420,width=640,height=480,framerate=30/1 ! omxh264enc control-rate=1 target-bitrate=5120000 periodicity-idr=45 inline-header=FALSE ! h264parse ! video/x-h264,stream-format=avc,alignment=au,width=640,height=480,framerate=30/1,profile=baseline ! kvssink stream-name="YourStreamName" access-key="YourAccessKey" secret-key="YourSecretKey" aws-region="YourAWSRegion"

示例 7:在樹莓派和 Ubuntu 中流式傳輸音頻和視頻

請參閱如何執行 gst-launch-1.0 命令,開始在 Raspberry-PI 和 Ubuntu 中串流音訊和視訊

範例 8:在 macOS 中從裝置來源串流音訊和視訊

請參閱如何執行 gst-launch-1.0 命令,開始在 MacOS 中串流音訊和視訊

示例 9:上傳包含音頻和視頻的 MKV 文件

了解如何執行 gst-launch-1.0 命令以上傳包含音訊和視訊的 MKV 檔案。您將需要一個帶有 h.264 和 AAC 編碼媒體的 MKV 測試文件。

在碼頭容器中運行 GStreamer 元素

Docker 是一種開發、部署和執行應用程式的使用容器平台。使用 Docker 建立 GStreamer 管道可將 Kinesis Video Streams 的作業環境標準化,進而簡化應用程式的建置和使用。

要安裝與設定 Docker,請參閱以下內容:

安裝 Docker 之後,您可以使用下列其中一個命令,從 Amazon 彈性容器登錄下載 Kinesis Video Streams C++ 生產者 SDK (和 GStreamer 外掛程式)。docker pull

若要使用 Kinesis Video Streams 製作者 SDK 元素來執行 GStreamer 做為 Docker 容器中的接收器,請執行下列動作:

驗證您的碼頭客戶端

向打算提取映像的 Amazon ECR 登錄檔驗證您的 Docker 用戶端。您必須為使用的每個註冊表獲取身份驗證令牌。令牌有效期為 12 小時。如需詳細資訊,請參閱《Amazon Elastic Container Registry 使用者指南》中的登錄檔身分驗證

範例 :使用 Amazon ECR 進行身分驗證

若要透過 Amazon ECR 進行驗證,請複製並貼上下列命令,如圖所示。

sudo aws ecr get-login-password --region us-west-2 | docker login -u AWS --password-stdin https://546150905175.dkr.ecr.us-west-2.amazonaws.com

如果成功,輸出會顯示 Login Succeeded

下載 Ubuntu、macOS、Windows 或 Raspberry Pi 的 Docker 影像

視您的作業系統而定,使用下列命令下載 Docker 影像到您的 Docker 環境:

下載 Docker 影像到 Ubuntu 環境

sudo docker pull 546150905175.dkr.ecr.us-west-2.amazonaws.com/kinesis-video-producer-sdk-cpp-amazon-linux:latest

下載 Docker 影像到 macOS

docker pull 546150905175.dkr.ecr.us-west-2.amazonaws.com/kinesis-video-producer-sdk-cpp-amazon-linux:latest

下載 Docker 影像到 Windows 環境

docker pull 546150905175.dkr.ecr.us-west-2.amazonaws.com/kinesis-video-producer-sdk-cpp-amazon-windows:latest

下載 Docker 影像到 Raspberry Pi

sudo docker pull 546150905175.dkr.ecr.us-west-2.amazonaws.com/kinesis-video-producer-sdk-cpp-raspberry-pi:latest

若要驗證已成功新增的影像,請執行下列命令:

docker images

運行碼頭映像

視您的作業系統而定,使用下列其中一個命令執行 Docker 影像:

在 Ubuntu 上運行碼頭映像

sudo docker run -it --network="host" --device=/dev/video0 546150905175.dkr.ecr.us-west-2.amazonaws.com/kinesis-video-producer-sdk-cpp-amazon-linux /bin/bash

在 macOS 上運行碼頭映像

sudo docker run -it --network="host" 546150905175.dkr.ecr.us-west-2.amazonaws.com/kinesis-video-producer-sdk-cpp-amazon-linux /bin/bash

在視窗上運行碼頭映像

docker run -it 546150905175.dkr.ecr.us-west-2.amazonaws.com/kinesis-video-producer-sdk-cpp-windows AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY RTSP_URL STREAM_NAME

在樹莓派上運行碼頭圖像

sudo docker run -it --device=/dev/video0 --device=/dev/vchiq -v /opt/vc:/opt/vc 546150905175.dkr.ecr.us-west-2.amazonaws.com/kinesis-video-producer-sdk-cpp-raspberry-pi /bin/bash

Docker 會啟動容器,並顯示命令提示字元,讓您在容器中使用命令。

在容器中請使用下列命令來設定環境變數:

export LD_LIBRARY_PATH=/opt/awssdk/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-native-build/downloads/local/lib:$LD_LIBRARY_PATH export PATH=/opt/awssdk/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-native-build/downloads/local/bin:$PATH export GST_PLUGIN_PATH=/opt/awssdk/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-native-build/downloads/local/lib:$GST_PLUGIN_PATH

開始串流至kvssink使用gst-launch-1.0以執行適合您裝置和視訊來源的管道。如需管線範例,請參閱啟動命令示例