本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
範例:Kinesis Video Streams 製作 SDK 外掛程式
本主題說明如何建置 Amazon Kinesis Video Streams 製作工具開發套件,以做為 GStreamer 外掛程式使用。
GStreamer
GStreamer 外掛程式會自動管理您的視訊串流傳輸到 Kinesis Video Streams,方法是將 Kinesis Video Streams 訊串流製作工具開發套件所提供的功能封裝在 GStreamer 接收器元素中。kvssink
GStreamer 架構提供標準受管的環境以建構媒體流量裝置,例如相機或其他影片來源以進行進一步的處理、轉譯或儲存。
GStreamer 管道通常包含來源 (攝影機) 和目的元素 (其中為呈現影片的播放器,或離線擷取的儲存) 之間的連結。在這個範例中,您使用製作者開發套件元素做為目的或媒體目的地,對於視訊來源 (網路攝影機或 IP 相機)。封裝 SDK 的外掛程式元素,然後將視訊串流傳送至 Kinesis Video Streams。
本主題說明如何建構 GStreamer 媒體管線,該管線能夠從視訊來源串流視訊,例如網路攝影機或 RTSP 串流,通常透過中繼編碼階段 (使用 H.264 編碼) 連接至 Kinesis Video Streams。當您的視訊串流以 Kinesis 視訊串流的形式提供時,您可以使用 Kinesis Video Streams 剖析器程式庫來進一步處理、播放、儲存或分析您的視訊串流。
![GStreamer 媒體管道的功能檢視,用於將視訊從攝影機串流到 Kinesis Video Streams 服務。](images/gstreamer-pipeline.png)
下載,構建和配置元素
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 外掛程式使用的上游元素。例如,v4l2srckvssink
做為目的 (最終目的地管道) 以傳送影片到製作者開發套件。
除了提供認證和提供區域之外,kvssink
元素還具有下列必要參數:
-
stream-name
— 目的地 Kinesis Video Streams 的名稱。
如需選用參數 kvssink
的詳細資訊,請參閱元素參數參數。
有關 GStreamer 插件和參數的最新信息,請參閱 Ggst-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
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
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
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
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
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
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 檔案
在碼頭容器中運行 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
以執行適合您裝置和視訊來源的管道。如需管線範例,請參閱啟動命令示例。