將資料傳送至 Amazon Kinesis 影片串流 - Amazon Kinesis Video Streams

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

將資料傳送至 Amazon Kinesis 影片串流

本節說明如何將媒體資料從攝影機傳送到您在上一節中建立的 Kinesis 視訊串流。本區段使用 C++ Producer Library 做為 。GStreamer 插件-支持。 外掛程式。

為了從各種作業系統上的各種裝置傳送媒體,本教學課程使用 Kinesis Video Streams C++ 製作者程式庫和 GStreamer,這是一種將攝影機和其他媒體來源存取標準化的開放原始碼媒體架構。

建置 SDK 和範例

您可以在計算機上或中構建 SDK 和示例 AWS Cloud9。請遵循以下適當的程序。

Build on your computer

使用 Re adme 檔案中的指示來建置製作者程式庫和範例應用程式。

其中包含:

  • 安裝相依項目

  • 複製存放庫

  • 使用 CMake 生成生成文件

  • 使用 make 構建二進文件

Build in AWS Cloud9

請依照下列程序上傳至中 AWS Cloud9的 Kinesis Video Streams。您無需將任何內容下載到計算機上。

  1. 在中 AWS Management Console,開啟AWS Cloud9

    選取 [建立環境]。

  2. 在「建立環境」畫面上,完成下列操作:

    • 名稱-輸入新環境的名稱。

    • 平台-選擇 Ubuntu 服務器 22.04 LTS

    您可以將其他欄位保留為預設選項。

  3. 建立環境後,請在 Cloud9 IDE 資料行中選取「開啟」。

    在螢幕的中間下方區域,您會看到Admin:~/environment $。這是 AWS Cloud9 (Amazon EC2)終端。

    注意

    如果不小心關閉終端機,請選取「視窗」,「新增終端機」。

    在終端機中執行下列命令,將磁碟區變更為 20 GiB。

    1. 下載 指令碼。

      wget https://awsj-iot-handson.s3-ap-northeast-1.amazonaws.com/kvs-workshop/resize_volume.sh
    2. 授予指令碼執行權限。

      chmod +x resize_volume.sh
    3. 執行指令碼。

      ./resize_volume.sh
  4. 獲取有關您可以通過高級打包工具(APT)安裝或更新的所有軟件的最新信息。

    這個命令不會更新軟體本身,但請確定您的系統知道最新的可用版本。

    sudo apt-get update
  5. 安裝 C ++ 生產者 SDK 依賴關係。

    sudo apt-get install -y cmake m4 git build-essential pkg-config libssl-dev libcurl4-openssl-dev \ liblog4cplus-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev \ gstreamer1.0-plugins-base-apps gstreamer1.0-plugins-bad gstreamer1.0-plugins-good \ gstreamer1.0-plugins-ugly gstreamer1.0-tools
  6. 使用 git 克隆 C ++ 生產者 SDK。

    git clone https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-cpp.git
  7. 準備一個構建目錄。

    cd amazon-kinesis-video-streams-producer-sdk-cpp mkdir build cd build
  8. 使用 CMake 生成生成文件。

    cmake .. -DBUILD_GSTREAMER_PLUGIN=TRUE -DBUILD_DEPENDENCIES=OFF

    預期的輸出結束如下所示:

    -- Build files have been written to: /home/ubuntu/environment/amazon-kinesis-video-streams-producer-sdk-cpp/build
  9. 使用 make 編譯 SDK 和示例應用程序,以及構建最終的可執行文件。

    make

    預期的輸出結束如下所示:

    [100%] Linking CXX executable kvs_gstreamer_file_uploader_sample [100%] Built target kvs_gstreamer_file_uploader_sample
  10. 確認範例檔案是否已建立。列出當前目錄中的文件:

    ls

    確認存在下列檔案:

    • 克斯特雷姆 _ 樣本

    • 李格斯特克斯坦

  11. (可選)您可以將 GST_PLUGIN_PATH 環境變量的設置添加到 shell 的啟動腳本中。這可確保在新終端會話期間正確設置 GST_PLUGIN_PATH。在中 AWS Cloud9,殼層的啟動指令碼為:~/.bashrc

    執行下列命令,將命令附加到 shell 啟動指令碼的結尾。

    echo "export GST_PLUGIN_PATH=~/environment/amazon-kinesis-video-streams-producer-sdk-cpp/build" >> ~/.bashrc

    輸入下列命令以執行 shell 的啟動指令碼:

    source ~/.bashrc

    確認已設定 GST_ 外掛程式路徑。

    echo $GST_PLUGIN_PATH

    如果你正確設置輸出,你會看到下面的輸出。如果輸出為空白,則未正確設定環境變數。

    /home/ubuntu/environment/amazon-kinesis-video-streams-producer-sdk-cpp/build

執行範例以將媒體上傳至 Kinesis Video Streams

範例應用程式不支援 IMDS 認證。在終端機中,為您的 IAM 使用者或角色以及串流所在區域匯出 AWS 登入資料。

export AWS_ACCESS_KEY_ID=YourAccessKey export AWS_SECRET_ACCESS_KEY=YourSecretKey export AWS_DEFAULT_REGION=YourAWSRegion

如果您使用的是臨時 AWS 憑據,請同時導出會話令牌:

export AWS_SESSION_TOKEN=YourSessionToken
.mp4 files

下載範例 .mp4 影片以上傳至 Kinesis Video Streams。

wget https://awsj-iot-handson.s3-ap-northeast-1.amazonaws.com/kvs-workshop/sample.mp4

影片規格:

  • 解析度-

  • 影格速率-每秒 30 影格

  • 持續時間-14.0 秒

  • 視訊編碼-H.264,位於音軌 1

  • 關鍵幀-每 3 秒,導致片段持續時間(也稱為一組圖片(GoP)大小)為 3 秒,最後的片段長度為 2 秒。

使用您之前創建的流的名稱運行以下命令。如果您尚未建立串流,請參閱建立 Kinesis 影片串流

./kvs_gstreamer_sample YourStreamName ./sample.mp4
Sample video from GStreamer

使用以下命令可以使用 GStreamer 生成視頻。

告訴在哪裡可以找到 kvssink GStreamer 插件。在您的構建目錄中,指定包含該文件的libgstkvssink.so文件夾的路徑。

從您的構建目錄中,運行以下命令:

export GST_PLUGIN_PATH=`pwd`

此 GStreamer 管道會產生具有標準測試模式的即時測試視訊串流,該模式以每秒 10 個畫面的速度執行,解析度為 640x480 像素。會新增顯示目前系統時間和日期的覆蓋圖。然後將視訊編碼為 H.264 格式,最多每 10 個影格產生一次關鍵影格,因此片段持續時間 (也稱為一組圖片 (GoP) 大小) 為 1 秒。 kvssink採用 H.264 編碼的視訊串流,將其封裝成 Matroska (MKV) 容器格式,並將其上傳到您的 Kinesis 視訊串流。

執行以下命令:

gst-launch-1.0 -v videotestsrc is-live=true \ ! video/x-raw,framerate=10/1,width=640,height=480 \ ! clockoverlay time-format="%a %B %d, %Y %I:%M:%S %p" \ ! x264enc bframes=0 key-int-max=10 \ ! h264parse \ ! kvssink stream-name="YourStreamName"

若要停止 GStreamer 管線,請選取終端機視窗,然後按下 CTRL+C 鍵。

注意

如需有關使用 GStreamer 外掛程式從攝影機或 USB 攝影機串流 RTSP 串流視訊的詳細資訊,請參閱。範例:Kinesis Video Streams 製作 SDK 外掛程式

審核確認物件

在上傳期間,Kinesis Video Streams 會將確認物件傳送回執行上傳作業的用戶端。您應該在命令輸出中看到這些內容。範例如下所示:

{"EventType":"PERSISTED","FragmentTimecode":1711124585823,"FragmentNumber":"12345678901234567890123456789012345678901234567"}

如果確認EventTypePERSISTED,則表示 Kinesis Video Streams 已經持久地儲存和加密這個媒體區塊,以便擷取、分析和長期儲存。

如需有關確認的詳細資訊,請參閱。PutMedia