• 亚马逊云科技 build on - 实验20220806


    0. 实验准备

    注册了亚马逊海外账号(这部分就绑定信-用卡比较麻烦,但可以tb搜索解决办法)

     

    0.1 实验目的

    本实验让用户可以通过亚马逊云科技,快速实现视频推流、内容识别、视频流播放、识别结果推送这几大功能。主要是方便搭建出海业务。

    0.2 本文作用

    虽然手上有实验指导文档,但是指导文档并不方便复制粘贴。而且自己再记录一遍,便于记录一些arn等实验过程中特有的字符串。
    由于本实验最后,有删除服务的操作,因此,本文带有的一些特定值(用户密码、token、云服务的arn等),已经无效,因此不怕。

    1. 服务器所在区域记得选择爱尔兰

    us-east-1

    2. iam

    添加用户

    user1/pass@1234

    创建访问密钥

    1. AKIA5QQHAJ5RJ6KAJUEQ
    2. g5n9zcXuJ+0VtD1nR/eFtnTHLHCHZWKLX31JXXBy

    3. 登陆子用户

    https://928801378146.signin.aws.amazon.com/console

    4. 树莓派设备

    (树莓派推流和电脑推流二选一,本次实验不用树莓派推流)

    4.1 安装依赖

    1. $ sudo apt-get update
    2. $ 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 cmake

    4.2 克隆kvs源码

    1. $ cd ~/Downloads/
    2. $ git clone --recursive https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-cpp.git
    3. $ cd ~/amazon-kinesis-video-streams-producer-sdk-cpp
    4. $ git submodule update --init

    4.3 编译

    1. mkdir build && cd build
    2. cmake .. -DBUILD_GSTREAMER_PLUGIN=ON -DBUILD_DEPENDENCIES=OFF

    4.4 将摄像头的数据上传到KVS

    **注意:**这里的ACCESS_KEY和SECRET_KEY都是你前面账号生成的凭证,需要自行修改

    1. export AWS_DEFAULT_REGION="eu-west-1"
    2. export AWS_ACCESS_KEY_ID="AKIA5QQHAJ5RJ6KAJUEQ"
    3. export AWS_SECRET_ACCESS_KEY="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"
    4. export GST_PLUGIN_PATH=$HOME/Downloads/amazon-kinesis-video-streams-producer-sdk-cpp/build
    5. export LD_LIBRARY_PATH=$HOME/Downloads/amazon-kinesis-video-streams-producer-sdk-cpp/open-source/local/lib
    6. cd ~/amazon-kinesis-video-streams-producer-sdk-cpp/build
    7. libcamera-vid -n -t 0 -o - | gst-launch-1.0 -v fdsrc do-timestamp=TRUE ! h264parse config-interval=1 ! video/x-h264,stream-format=avc,alignment=au ! kvssink stream-name="kvs-workshop-stream"

    5. cloud9 准备环境

    (设备推流和电脑推流二选一)

    安装库(步骤4)

    1. $ sudo apt update
    2. $ sudo apt install -y cmake gstreamer1.0-plugins-bad gstreamer1.0-plugins-good gstreamer1.0-plugins-ugly gstreamer1.0-tools libgstreamer-plugins-base1.0-dev

    磁盘空间扩展
    在Cloud9终端中执行以下命令,它将扩展磁盘并重新启动实例
    请等到实例重新启动,因为您将在实例重新启动时看到Connecting...

    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

    实例重新启动后,点击link后,在终端中运行以下命令以检查磁盘空间

    $ df -h

    6. 设置Amazon Kinesis Video Streams Producer SDK C++(Cloud9)

    1. $ cd ~/
    2. $ git clone --recursive https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-cpp.git      # 克隆仓库

    注意: 如果您忘记向命令添加--recursive,请执行以下命令;如果已增加该参数请忽略。

    1. $ cd ~/amazon-kinesis-video-streams-producer-sdk-cpp
    2. $ git submodule update --init

    构建SDK(步骤6)
    此步骤大约需要 10 到 15 分钟才能完成。您可以在等待期间继续执行下面的“创建流”和“下载视频以供播放”步骤。
    以下命令下载并构建依赖库。此命令大约需要10分钟才能完成。

    1. $ mkdir -p ~/amazon-kinesis-video-streams-producer-sdk-cpp/build
    2. $ cd ~/amazon-kinesis-video-streams-producer-sdk-cpp/build
    3. $ cmake -DBUILD_GSTREAMER_PLUGIN=ON ..
    4. $ make -j2

    7. ubuntu电脑上操作awscli

    下载测试视频

    1. $ cd ~/Downloads
    2. $ wget https://awsj-iot-handson.s3-ap-northeast-1.amazonaws.com/kvs-workshop/sample.mp4

    下载awscli

    1. $ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
    2. $ unzip awscliv2.zip
    3. $ sudo ./aws/install
    4. $ aws --version

    CLI完成安装后,在自己的电脑终端进行以下操作:

    1. $ aws configure       # 配置aws临时凭证
    2. AWS Access Key ID [None]: [输入自己账号的AWS Access Key ID]
    3. AWS Secret Access Key [None]: [输入自己账号的AWS Secret Access Key]
    4. Default region name [None]: eu-west-1
    5. Default output format [None]: json
    6. $ aws sts get-session-token
    7. {
    8.     "Credentials": {
    9.         "AccessKeyId": "ASIA5QQHAJ5RELIPKRN2",
    10.         "SecretAccessKey": "KQw2GrAzI95682joCv/SGRBSQUDY7v+ewoq1/yVo",
    11.         "SessionToken": "IQoJb3JpZ2luX2VjEHgaCWV1LXdlc3QtMSJHMEUCIQCgRM77w+avc5u8CBtLAiYcaLbhlNyYhGLpH+tlcZNxyQIgT0HvWvHuDv9SlkUbU0mDRUXwJqUXXbKfOFhAthyiimwq9AEI0f//ARAAGgw5Mjg4MDEzNzgxNDYiDIId1K5mWVnLNPpbkCrIAVaR6BsD6FRswWPWLr7+1FufVqzpZrLIjtgC2nw6tQ3KRGkhj810XeQXr7rwAaZoWiGTSCKOsVMGoMXseZmtNLJFmPvIIDsdmZCWIAfaMRnHSja+uO3P3bG7WXgYbK6rFp9s3wnbXpGD886kuln2jnyCV2noaCwaB1+Vygt83Vhromp60wIiRr9pYf8iaUOBGCPOFgPBIswcSnoBT63dADIBbh9RAyGHdyIL16kikjoeB4xIjD6ENSxd3Cfhw5C+3lNOJHQKrtTJMMq5uJcGOpgBtts/kfedZtNoRIRSJ03kTLLK7jZaMwJjsVS96ygzjvDTpiotn0EJ3HzgqE8elgxy+EbQZWbZEHpkUcl/zBpSFmoi0GkF/FN2GynyoFjA+ncigdp4n/eEUU8BSCvWEzZrCD9KXwzg2jotoOdeY5dZJiMBYY5PHsfHib8UuX9vAuz165Skb7LjfdVjzr2f+9AFtZ/N50H6gfY=",
    12.         "Expiration": "2022-08-06T19:48:26+00:00"
    13.     }
    14. }


    8. 将视频上传到视频流(步骤10)


    接下来,打开Cloud9终端并执行以下命令来设置环境变量。
    **注意:**这里的ACCESS_KEY和SECRET_KEY与SESSION_TOKEN都是上一步json返回获得的,需要自行修改【此凭证是一次性的,再次操作需要重新生成上一步的值】

    1. export AWS_DEFAULT_REGION="eu-west-1"
    2. export AWS_ACCESS_KEY_ID="ASIA5QQHAJ5RELIPKRN2"
    3. export AWS_SECRET_ACCESS_KEY="KQw2GrAzI95682joCv/SGRBSQUDY7v+ewoq1/yVo"
    4. export AWS_SESSION_TOKEN="IQoJb3JpZ2luX2VjEHgaCWV1LXdlc3QtMSJHMEUCIQCgRM77w+avc5u8CBtLAiYcaLbhlNyYhGLpH+tlcZNxyQIgT0HvWvHuDv9SlkUbU0mDRUXwJqUXXbKfOFhAthyiimwq9AEI0f//ARAAGgw5Mjg4MDEzNzgxNDYiDIId1K5mWVnLNPpbkCrIAVaR6BsD6FRswWPWLr7+1FufVqzpZrLIjtgC2nw6tQ3KRGkhj810XeQXr7rwAaZoWiGTSCKOsVMGoMXseZmtNLJFmPvIIDsdmZCWIAfaMRnHSja+uO3P3bG7WXgYbK6rFp9s3wnbXpGD886kuln2jnyCV2noaCwaB1+Vygt83Vhromp60wIiRr9pYf8iaUOBGCPOFgPBIswcSnoBT63dADIBbh9RAyGHdyIL16kikjoeB4xIjD6ENSxd3Cfhw5C+3lNOJHQKrtTJMMq5uJcGOpgBtts/kfedZtNoRIRSJ03kTLLK7jZaMwJjsVS96ygzjvDTpiotn0EJ3HzgqE8elgxy+EbQZWbZEHpkUcl/zBpSFmoi0GkF/FN2GynyoFjA+ncigdp4n/eEUU8BSCvWEzZrCD9KXwzg2jotoOdeY5dZJiMBYY5PHsfHib8UuX9vAuz165Skb7LjfdVjzr2f+9AFtZ/N50H6gfY="


    **在本实验中,AWS CLI用于获取IAM用户的临时凭据,以简化过程,但每次在真正的相机设备上都很难做到这一点。在现实世界的用例中,您可以使用AWS IoT管理的客户端证书来获取凭据。如何使用AWS IoT凭据提供商消除设备中对硬编码AWS凭据的需求 **


    在Cloud9终端中运行以下命令来设置环境变量。

    1. export GST_PLUGIN_PATH=$HOME/amazon-kinesis-video-streams-producer-sdk-cpp/build
    2. export LD_LIBRARY_PATH=$HOME/amazon-kinesis-video-streams-producer-sdk-cpp/open-source/local/lib

    然后运行以下命令上传视频。

    1. cd ~/amazon-kinesis-video-streams-producer-sdk-cpp/build
    2. while true; do ./kvs_gstreamer_file_uploader_sample kvs-workshop-stream ~/sample.mp4 $(date +%s) audio-video && sleep 10s; done

    9. s3储存桶

    arn:aws:s3:::video-event-analytics-user1

    10. sns

    arn:aws:sns:eu-west-1:928801378146:video-event-sns

    11. kvs-workshop-stream

    arn:aws:kinesisvideo:eu-west-1:928801378146:stream/kvs-workshop-stream/1659770096408

    12 Rekognition_call_s3_kvs_Role

    arn:aws:iam::928801378146:role/Rekognition_call_s3_kvs_Role

    13 启动Rekognition Streaming Video Events处理流程


    13.1 升级Cloud9的AWS Cli到最新版本【如果您是今天下载的AWS Cli 请忽略】


    因为Rekognition Streaming Video Events是2022年4月底才发布的新功能,要采用aws cli创建rekognition-stream-processor使用该功能,需要将您的cli升级到包含rekognition这个新特性的版本,这里我们将cli升级到最新版本。

    执行如下命名升级AWS Cli到最新版本

    1. cd
    2. curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
    3. unzip awscliv2.zip
    4. sudo ./aws/install
    5. sudo ./aws/install --bin-dir /usr/local/bin --install-dir /usr/local/aws-cli --update

    14. createstreamprocessor.json

    File -> New FIle

    创建createstreamprocessor.json

    1. {
    2.     "DataSharingPreference": { 
    3.       "OptIn":true
    4.     },
    5.     "Input": {
    6.       "KinesisVideoStream": {
    7.         "Arn": "你的kvs ARN值"
    8.       }
    9.     },
    10.     "Name": "video_event_stream_processor",
    11.     "Output": {
    12.       "S3Destination": {
    13.         "Bucket": "你的桶名",
    14.         "KeyPrefix": "video-result"
    15.       }
    16.     },
    17.     "NotificationChannel": {
    18.       "SNSTopicArn": "你的SNS主题 ARN值"
    19.     },
    20.     "RoleArn": "你的角色 ARN值",
    21.     "Settings": {
    22.       "ConnectedHome": {
    23.         "Labels": [
    24.           "PERSON"
    25.         ],
    26.       "MinConfidence": 80
    27.       }
    28.     },
    29.     "RegionsOfInterest": [
    30.       {
    31.         "BoundingBox": {
    32.           "Top": 0.11,
    33.           "Left": 0.22,
    34.           "Width": 0.33,
    35.           "Height": 0.44
    36.         }
    37.       },
    38.       {
    39.         "Polygon": [
    40.           {
    41.             "X": 0.11,
    42.             "Y": 0.11
    43.           },
    44.           {
    45.             "X": 0.22,
    46.             "Y": 0.22
    47.           },
    48.           {
    49.             "X": 0.33,
    50.             "Y": 0.33
    51.           }
    52.         ]
    53.       }
    54.     ]
    55. }

    cloud9 上传

    1. $ aws rekognition create-stream-processor --region eu-west-1 --cli-input-json file:///home/ubuntu/environment/createstreamprocessor.json
    2. $ aws rekognition describe-stream-processor --name video_event_stream_processor --region eu-west-1

    15 启动rekognition-stream-processor(步骤16)


    准备启动rekognition-stream-processor的json文件
    使用之前的上传办法再上传一个文件

    startstreamprocessor.json内容如下所示:

    1. {
    2.    "Name": "video_event_stream_processor",
    3.    "StartSelector": {
    4.       "KVSStreamStartSelector": {
    5.          "ProducerTimestamp": 1651702500
    6.       }
    7.    },
    8.    "StopSelector": {
    9.       "MaxDurationInSeconds": 30
    10.    }
    11. }
    $ aws rekognition start-stream-processor --region eu-west-1 --cli-input-json file:///home/ubuntu/environment/startstreamprocessor.json


    16 观测执行结果(步骤17)


    stream-processor按照start-stream-processor中设定的视频检测起始与结束条件完成对设置的目标标签(Person/Package/Pet/ALL)检测处理后,将检测结果保存到S3并通过配置的SNS发送出去。

    观测S3中保存的检测结果
    执行
    注意: 这里的video-event-analytics-123123123123是示例桶的名字,这里需要改成你自己的s3桶名

    $ aws s3 ls video-event-analytics-user1 --recursive


    17. 删除(cloud9上运行)

    1. $ aws s3 rm s3://video-event-analytics-user1 --recursive
    2. $ aws s3 rb s3://video-event-analytics-user1
    3. $ aws kinesisvideo delete-stream --stream-arn arn:aws:kinesisvideo:eu-west-1:928801378146:stream/kvs-workshop-stream/1659770096408
    4. $ aws sns delete-topic --topic-arn arn:aws:sns:eu-west-1:928801378146:video-event-sns
    5. $ aws sns unsubscribe --subscription-arn arn:aws:sns:eu-west-1:928801378146:video-event-sns:8aac545e-0779-40fe-8b0a-d93b2c7a6185
    6. $ aws rekognition delete-stream-processor --name=video_event_stream_processor


    后面还把cloud9的服务删除了。

    18. 部分截图

     

     

     

    19. 个人简单体会

    技术方面:亚马逊开源的kvs不错。然后就是我之前用过腾讯服务器、阿里云服务器,亚马逊的服务器做得更有弹性,能增能删除。不过就是未用熟,信-用卡也是别人帮忙的,因此怕消费多了钱。不过这次活动说是账号加入了组织,由组织统一交钱的。亚马逊云服务的创建和使用,让人体验出科技的先进感。
    心情:这个实验是在周末做的,有点折腾啊。不过做完实验第二天就收到了礼物-一件T恤,曾经收到过google活动的T恤我胖了穿不下,现在的这件是大概后颈处有“亚马逊云科技”几个字和LOGO,因此我平时可能就在家里穿穿而已啦哈哈。

  • 相关阅读:
    PanGu-Coder:函数级的代码生成模型
    SpringBoot 接口数据加解密
    Qt5开发从入门到精通——第七篇三节( 图形视图—— 图元创建 GraphicsItem V1.0)
    Tomca架构细节
    让你彻底学会HBase
    java计算机毕业设计医院门诊管理系统源程序+mysql+系统+lw文档+远程调试
    【EI会议征稿】2023年第二届信号处理、计算机网络与通信国际学术会议(SPCNC2023)
    【PyTorch教程】PyTorch分布式并行模块DistributedDataParallel(DDP)详解
    JavaScript中Bom节点和表单的获取值
    (C++栈与队列02) 栈的应用 单调队列
  • 原文地址:https://blog.csdn.net/qq_27158179/article/details/126250189