將rtsp視頻流發送到AWS Kinesis Video Streams的方案——使用Gstreamer(C++) Command Line

大綱

  • 1 創建Kinesis Video Streams
    • 1.1 創建視頻流
    • 1.2 記錄Creation Time
  • 2 創建策略
    • 2.1 賦予權限
    • 2.2 限制資源
    • 2.3 Json格式描述(或上面手工設置)
    • 2.4 注意事項
  • 3 創建IAM用戶
    • 3.1 生成密鑰對
    • 3.2 附加策略
    • 3.3 記錄訪問密鑰對
  • 4 編譯C++ 創建者庫
  • 5 發送
  • 6 檢查
  • 參考文獻

我們的實驗都是在us-east-1上進行的。如果想在其他區域做實驗,可以將下面us-east-1都改成對應的區域。

1 創建Kinesis Video Streams

登錄到https://us-east-1.console.aws.amazon.com/kinesisvideo/home?region=us-east-1#/streams

1.1 創建視頻流

創建名稱為RtspVideoStream的視頻流
在這里插入圖片描述

1.2 記錄Creation Time

上步創建完后,我們可以從ARN中獲取Creation Time。這個字段之后要在配置策略時使用到。
在這里插入圖片描述

2 創建策略

登錄到https://us-east-1.console.aws.amazon.com/iamv2/home#/policies
創建名稱為RtspVideoStreamPolicy的策略

2.1 賦予權限

在這里插入圖片描述

2.2 限制資源

在這里插入圖片描述
在Stream name處填寫上一步創建的流的名稱RtspVideoStream,Creation time處填寫之前從ARN中獲取的1659609702642。Account會自動填寫根賬號的ID。
在這里插入圖片描述

2.3 Json格式描述(或上面手工設置)

注意將ACCOUNTID替換成自己賬號的ID

{
“Version”: “2012-10-17”,
“Statement”: [
{
“Sid”: “VisualEditor0”,
“Effect”: “Allow”,
“Action”: [
“kinesisvideo:PutMedia”,
“kinesisvideo:GetDataEndpoint”,
“kinesisvideo:DescribeStream”
],
“Resource”: “arn:aws:kinesisvideo:us-east-1:AccountID:stream/RtspVideoStream/1659609702642”
}
]
}

2.4 注意事項

如果不希望做到精確控制權限,或者希望快速使用,可以將此策略配置為:所有資源的所有權限。

3 創建IAM用戶

登錄https://us-east-1.console.aws.amazon.com/iamv2/home#/users
創建名為KinesisVideoStreamsUser的用戶。

3.1 生成密鑰對

需要勾選Access key - Programmatic access。
在這里插入圖片描述

3.2 附加策略

附加上一步創建的策略——RtspVideoStreamPolicy。
在這里插入圖片描述

3.3 記錄訪問密鑰對

下載保存(或復制)Access key ID和Secret access key密鑰對。
在這里插入圖片描述

4 編譯C++ 創建者庫

我的測試環境是Ubuntu,在console中輸入以下指令編譯。其中cmake時間有點長,需要耐心等待下。

git clone https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-cpp.git
mkdir -p amazon-kinesis-video-streams-producer-sdk-cpp/build
cd amazon-kinesis-video-streams-producer-sdk-cpp/build
sudo apt-get install 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
sudo apt install cmake
cmake -DBUILD_GSTREAMER_PLUGIN=TRUE ..
make
cd ..
export GST_PLUGIN_PATH=`pwd`/build
export LD_LIBRARY_PATH=`pwd`/open-source/local/lib

5 發送

執行下面指令(注意替換YourAccessKeyYourSecretKey為KinesisVideoStreamsUser對應的值):

gst-launch-1.0 -v rtspsrc location=rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mp4 short-header=TRUE ! rtph264depay ! h264parse ! kvssink stream-name=RtspVideoStream storage-size=128 access-key=“YourAccessKey” secret-key=“YourSecretKey” aws-region=“us-east-1”

rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mp4是網上找的公開的rtsp流。至于流有沒有效,可以下載VLC播放器測試。
在這里插入圖片描述
在這里插入圖片描述

6 檢查

再登錄到Kinesis Video Streams。可以在線查看推送過來的視頻。
在這里插入圖片描述
如果這個rtsp失效了,可以在本地搭建一個rtsp服務器,然后使用ffmpeg推送視頻流。具體的做法可以見《在Windows操作系統上使用rtsp simple server和ffmpeg推送錄屏視頻流》。

參考文獻

  1. https://docs.aws.amazon.com/zh_cn/kinesisvideostreams/latest/dg/producer-sdk-cpp.html
  2. https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-cpp/blob/master/docs/linux.md

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/214129.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/214129.shtml
英文地址,請注明出處:http://en.pswp.cn/news/214129.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

JavaScript <關于逆向RSA非對稱加密算法的案例(代碼剖析篇)>--案例(五點一)

引用上文: CSDNhttps://mp.csdn.net/mp_blog/creation/editor/134857857 剖析: var bitsPerDigit16; // 每個數組元素可以表示的二進制位數// 數組復制函數,將源數組部分復制到目標數組的指定位置 function arrayCopy(src, srcStart, dest, destStart, n) {var m…

國內地址地區智能解析,無需完整地址也能正確匹配

頁面直接引入使用 已打包成單文件dist/bundle.js 可以直接通過標簽引用 <script src="./bundle.js"></script> <script>var results = AddressParse.parse(福建省福州市福清市石竹街道義明綜合樓3F,15000000000,asseek);console.log(results);…

OD機考真題搜集:服務失效判斷

題目 某系統中有眾多服務,每個服務用字符串(只包含字母和數字,長度<=10)唯一標識,服務間可能有依賴關系,如A依賴B,則當B故障時導致A也故障。 依賴具有傳遞性,如A依賴B,B依賴C,當C故障時導致B故障,也導致A故障。 給出所有依賴關系,以及當前已知故障服務,要求輸…

git提交代碼報錯Git: husky > pre-commit

目錄 git提交代碼報錯原因解決方法&#xff08;三種&#xff09;1、第一種2、第二種3、第三種 git提交代碼報錯原因 這個問題是因為當你在終端輸入git commit -m “XXX”,提交代碼的時候,pre-commit(客戶端)鉤子&#xff0c;它會在Git鍵入提交信息前運行做代碼風格檢查。如果代…

Kotlin 中密封類、枚舉類與密封接口的對比分析

在 Kotlin 編程語言中&#xff0c;密封類&#xff08;Sealed Classes&#xff09;、枚舉類&#xff08;Enum Classes&#xff09;和密封接口&#xff08;Sealed Interfaces&#xff09;是處理一組固定類型的強大工具。它們在 Kotlin 中扮演著特殊的角色&#xff0c;特別是在創建…

【小白專用】MySQL創建數據庫和創建數據表

1.在Windows開始搜索輸入Mysql,并選擇第一個打開。 2.輸入安裝時的密碼 3.說明安裝成功。 二、創建數據庫 1. 連接 MySQL 輸入 mysql -u root -p 命令&#xff0c;回車&#xff0c;然后輸入 MySQL 的密碼(不要忘記了密碼)&#xff0c;再回車&#xff0c;就連接上 MySQL 了。 …

數據庫常用鎖

數據庫鎖是一種用于管理并發訪問的機制&#xff0c;以確保數據的一致性和完整性。在并發訪問的情況下&#xff0c;多個事務可能同時嘗試訪問相同的數據&#xff0c;而數據庫鎖能夠協調這些訪問&#xff0c;防止數據不一致的問題。以下是一些常見的數據庫鎖及其詳細解釋&#xf…

C語言-統計素數并求和

本題要求統計給定整數M和N區間內素數的個數并對它們求和。 輸入格式: 輸入在一行中給出兩個正整數M和N&#xff08;1≤M≤N≤500&#xff09;。 輸出格式: 在一行中順序輸出M和N區間內素數的個數以及它們的和&#xff0c;數字間以空格分隔。 輸入樣例: 10 31輸出樣例: 7…

深入Redis過程-持久化

目錄 redis實現持久化 RDB 觸發機制-定期方法 定期-手動觸發 save bgsave 定期-自動觸發 AOF 開啟AOF功能 刷新緩沖區策略 重寫機制 混合持久化 Redis事務 事務相關的命令 MULTI EXEC DISCARD WATCH redis實現持久化 RDB RDB叫做Redis數據備份文件&#xf…

強大的公式編輯器 —— MathType最新版本安裝與使用

強大的公式編輯器 —— MathType最新版本安裝與使用 由于使用了很長時間的機械硬盤出現壞道&#xff0c;安裝在其中的MathType6.9&#xff08;精簡版&#xff09;也沒辦法使用了&#xff0c;本來想安裝個高版本的MathType&#xff0c;比如MathType7.4&#xff0c;但在網上苦苦…

如何更改Jupyter Notebook中的環境?

1.首先&#xff0c;打開終端 2.接著&#xff0c;分別輸入以下命令 conda env list 把EXPose替換為自己的環境變量 conda activate EXPose 3.接下來安裝‘ ipykernel ’軟件包 conda install ipykernel 4. 將該環境添加到Jupyter Notebook中&#xff1b;在Jupyter Notebook…

HTB Surveillance

Surveillance 2023年12月10日 12:13:35User nmap Starting Nmap 7.80 ( https://nmap.org ) at 2023-12-10 12:15 CST Stats: 0:00:37 elapsed; 0 hosts completed (1 up), 1 undergoing Connect Scan Connect Scan Timing: About 59.83% done

小白第一次開私服怎么吸引玩家

大家好&#xff0c;我是咕嚕-凱撒&#xff0c;在現在這個網絡社會很多人為了放松一下會選擇打打游戲&#xff0c;私服也就成為了許多玩家為了尋找新鮮體驗的熱門選擇&#xff0c;很多小白就發現了這個契機但是吸引玩家加入自己的服務器也就成了一個比較頭疼的問題&#xff0c;下…

Wrong number of values of control parameter 2(Halcon 錯誤代碼:1402)

threshold (ImageReduced1, Region, 0,min2(75,Min)) 程序運行到這一句&#xff0c;出現錯誤 原因是其中的參數Min為空數組 解決方案&#xff1a;判斷了下可以輸出Min的區域是否存在&#xff0c;不存在跳過這一步。

八叉樹bt文件轉為grid文件的代碼及編譯流程

目的 點云文件轉為八叉樹文件 代碼 在一個文件夾中新建兩個文件&#xff0c;pcd2bt.cpp和CMakeLists.txt&#xff0c;分別寫入&#xff1a; grid3d_node.cpp #include <ros/ros.h> #include <string> #include "grid3d.hpp"int main(int argc, char…

【Maven技術專題】「實戰開發系列」盤點Maven項目中打包需要注意到的那點事兒

Maven項目打包需要注意到的那點事兒 Maven是什么Maven打包插件的作用Maven打包后經常出現的問題maven構建可運行Jar包 Maven打包的三種方式Maven打包的最簡單的方法maven-jar-pluginMANIFEST.MF文件部分MANIFEST.MF的文件內容jar包的拷貝機制在pom.xml中配置 maven-jar-plugin的…

mybatis多表映射-分步查詢

1、建庫建表 create database mybatis-example; use mybatis-example; create table t_book (bid varchar(20) primary key,bname varchar(20),stuid varchar(20) ); insert into t_book values(b001,Java,s001); insert into t_book values(b002,Python,s002); insert into …

C++大型項目經驗

1 附加包含目錄 在Visual Studio中&#xff0c;“附加包含目錄”&#xff08;Additional Include Directories&#xff09;是一個編譯器設置&#xff0c;它指示編譯器在查找包含文件&#xff08;通常是頭文件&#xff0c;擴展名為.h或.hpp&#xff09;時去哪些額外的文件夾路徑…

函數的棧幀

我們每次在調用函數的時候&#xff0c;都說會進行傳參。每次創建函數&#xff0c;或者進行遞歸的時候&#xff0c;也會說會進行壓棧。 那么&#xff0c;今天我們就來具體看看函數到底是如何進行壓棧&#xff0c;傳參的操作。 什么是棧&#xff1f; 首先我們要知道&#xff0c;…

Error opening file for writing報錯解決

報錯展示及描述 在安裝pycharm的時候出現了一下報錯&#xff0c; Error opening file for writing。 報錯原因 一般出現這種報錯都是文件權限的原因&#xff0c;檢查一下&#xff0c;果然這個文件夾權限是【只讀】 查看文件權限的方式&#xff1a;【右擊】文件夾名稱&#xff0…