示例:Kinesis Video Streams 生產者SDKGStreamer插件-kvssink - Amazon Kinesis Video Streams

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

示例:Kinesis Video Streams 生產者SDKGStreamer插件-kvssink

本主題說明如何建立 Amazon Kinesis Video Streams 製作人SDK以當做GStreamer外掛程式使用。

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

此GStreamer外掛程式會將 Kinesis 影片串流製作人所提供的功能封裝SDK在接GStreamer收器元素中,以自動管理您的視訊串流傳輸至 Kinesis Video Streams。kvssink該GStreamer框架提供了一個標準的託管環境,用於從設備(例如攝像機或其他視頻源)構建媒體流,以進行進一步處理,渲染或存儲。

GStreamer管線通常由來源 (攝影機) 和接收器元素 (可能是用來呈現視訊的播放程式,或是用於離線擷取的儲存裝置) 之間的連結所組成。在此範例中,您可以使用 Producer SDK 元素做為視訊來源 (網路攝影機或 IP 攝影機) 的接收器或媒體目的地。封裝SDK然後將視訊串流傳送至 Kinesis 視訊串流的外掛程式元素。

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

GStreamer媒體管道的功能視圖,用於將視頻從攝像機流式傳輸到服務。

下載,構建和配置元GStreamer素

Kinesis Video Streams C++ 製作者SDK隨附GStreamer外掛程式範例。如需有關SDK必要條件和下載的資訊,請參閱下載並設定 C++ 生產者程式庫程式碼

您可以構建生產者SDKGStreamer水槽作為一個動態庫在 macOS, Ubuntu 的, 樹莓派, 或視窗. GStreamer外掛程式位於您的build目錄中。要加載此插件,它必須在您的GST_PLUGIN_PATH. 執行以下命令:

export GST_PLUGIN_PATH=`pwd`/build
注意

在 macOS 上,您只能在 Docker 容器GStreamer中運行時從網絡攝像機流式傳輸視頻。不支援在 Docker 容器中從 macOS 上的USB攝影機串流視訊。

運行GStreamer元素

若要以 GStreamer Kinesis Video Streams 製作者SDK元素做為接收器執行,請使用指gst-launch-1.0令。使用適合GStreamer插件使用的上游元素。例如,v4l2src 用於 Linux 系統上的 v4l 2 設備,或用於設備的 rtspsrc。 RTSP指定kvssink為傳送視訊給製作人的接收器 (管線的最終目的地) SDK。

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

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

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

如需GStreamer外掛程式和參數的最新資訊,請參閱GStreamer外掛程式。您也可以使用gst-inspect-1.0後面加上GStreamer元素或外掛程式的名稱來列印其資訊,並確認該元素或外掛程式是否可在您的裝置上使用:

gst-inspect-1.0 kvssink

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

No such element or plugin 'kvssink'

GStreamer啟動指令範例

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

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

以下命令在 Ubuntu 上創建一個GStreamer管道,該管道使用 rtspsrc GStreamer 插件從網絡RTSP攝像頭流式傳輸:

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。這個範例使用了 v4l GStreamer 2src 外掛程式。

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。這個範例使用了 v4l GStreamer 2src 外掛程式。

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。這個範例使用了 v4l GStreamer 2src 外掛程式。

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 後,您可以使用以下提docker pull供的命令之一從 Amazon 彈性容器註冊表下載 Kinesis Video Streams C ++ 生產者SDK(和GStreamer插件)。

若要GStreamer使用 Kinesis Video Streams 製作者SDK元素做為 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以執行適合您裝置和視訊來源的管道。如需管線範例,請參閱GStreamer啟動指令範例