本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
範例:Kinesis Video Streams 生產者SDKGStreamer外掛程式 - kvssink
本主題說明如何建置 Amazon Kinesis Video Streams 生產者SDK以用作GStreamer外掛程式。
GStreamer
GStreamer 外掛程式會自動管理影片串流到 Kinesis Video Streams 的傳輸,方法是封裝 Kinesis Video Streams 生產者在GStreamer接收器元素 SDK中提供的功能kvssink
。此GStreamer架構提供標準受管環境,用於建構來自攝影機或其他影片來源等裝置的媒體流程,以便進一步處理、轉譯或儲存。
GStreamer 管道通常包含來源 (影片攝影機) 與接收器元素 (轉譯影片的玩家,或離線擷取的儲存體) 之間的連結。在此範例中,您會使用 Producer SDK元素做為影片來源 (網路攝影機或 IP 攝影機) 的接收器或媒體目的地。封裝 的外掛程式元素SDK,然後將影片串流傳送至 Kinesis Video Streams。
本主題說明如何建構能夠從影片來源串流影片的GStreamer媒體管道,例如 Web RTSP 攝影機或串流,通常透過中繼編碼階段 (使用 H.264 編碼) 連接至 Kinesis Video Streams。當您的影片串流可作為 Kinesis 影片串流使用時,您可以使用 使用剖析器程式庫觀察攝影機的輸出進一步處理、播放、儲存或分析影片串流。

下載、建置和設定 GStreamer元素
GStreamer 外掛程式範例包含在 Kinesis Video Streams C++ 生產者 中SDK。如需SDK先決條件和下載的相關資訊,請參閱下載並設定 C++ 生產者程式庫程式碼。
您可以在 macOS、Ubuntu、Raspberry Pi 或 Windows 上將生產者SDKGStreamer接收器建置為動態程式庫。GStreamer 外掛程式位於您的 build
目錄中。若要載入此外掛程式,它必須位於您的 中GST_PLUGIN_PATH
。執行以下命令:
export GST_PLUGIN_PATH=`pwd`/build
注意
在 macOS 上,您只能GStreamer在 Docker 容器中執行時串流來自網路攝影機的影片。不支援在 Docker 容器的 macOS 上串流USB攝影機的影片。
執行 GStreamer元素
若要GStreamer使用 Kinesis Video Streams 生產者SDK元素做為接收執行,請使用 gst-launch-1.0
命令。使用適合GStreamer外掛程式使用的上游元素。例如,適用於 Linux 系統 v4l2 裝置的 v4l2srckvssink
為接收 (管道的最終目的地),以將視訊傳送至製作者 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 啟動命令範例
下列範例示範如何使用 kvssink
GStreamer 外掛程式從不同類型的裝置串流影片。
範例 1:從 Ubuntu 上的RTSP攝影機串流影片
下列命令會在 Ubuntu 上建立GStreamer管道,使用 rtspsrc
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。此範例使用 v4l2src
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。此範例使用 v4l2src
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 Video Streams。此範例使用 rtspsrc
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 Video Streams。此範例使用 rtspsrc
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:從 Raspberry Pi 上的攝影機串流影片
下列命令會在 Raspberry Pi 上建立GStreamer管道,將影片串流至 Kinesis Video Streams。此範例使用 v4l2src
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:在 Raspberry Pi 和 Ubuntu 中串流音訊和視訊
請參閱如何執行 gst-launch-1.0 命令,開始在 Raspberry-PI 和 Ubuntu 中串流音訊和視訊
範例 8:從 macOS 中的裝置來源串流音訊和視訊
請參閱如何執行 gst-launch-1.0 命令,開始在 MacOS 中串流音訊和視訊
範例 9:上傳包含音訊和視訊MKV的檔案
了解如何執行 gst-launch-1.0 命令來上傳包含音訊和視訊MKV的檔案
在 Docker 容器中執行 GStreamer元素
Docker 是一種開發、部署和執行應用程式的使用容器平台。使用 Docker 建立GStreamer管道,將 Kinesis Video Streams 的操作環境標準化,進而簡化建置和使用應用程式的過程。
要安裝與設定 Docker,請參閱以下內容:
安裝 Docker 之後,您可以使用下列其中一個提供的docker pull
命令,從 Amazon Elastic Container Registry 下載 Kinesis Video Streams C++ Producer SDK(和GStreamer外掛程式)。
若要GStreamer使用 Kinesis Video Streams 生產者SDK元素做為 Docker 容器中的接收執行,請執行下列動作:
驗證您的 Docker 用戶端
將 Docker 用戶端驗證為您打算從中提取映像的 Amazon ECR登錄檔。您必須取得每個使用的登錄檔的身分驗證字符。權杖的有效期為 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 映像
視您的作業系統而定,使用下列其中一個命令執行 Docker 影像:
在 Ubuntu 上執行 Docker 映像
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 上執行 Docker 映像
sudo docker run -it --network="host" 546150905175.dkr.ecr.us-west-2.amazonaws.com/kinesis-video-producer-sdk-cpp-amazon-linux /bin/bash
在 Windows 上執行 Docker 映像
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
在 Raspberry Pi 上執行 Docker 映像
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 啟動命令範例。