Amazon Kinesis 비디오 스트림으로 데이터 전송 - Amazon Kinesis Video Streams

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Amazon Kinesis 비디오 스트림으로 데이터 전송

이 섹션에서는 카메라의 미디어 데이터를 이전 섹션에서 만든 Kinesis 비디오 스트림으로 보내는 방법을 설명합니다. 이 섹션에서는 C++ 생산자 라이브러리스트리머 플러그인 - kvssink 플러그인으로 사용합니다.

다양한 운영 체제의 다양한 디바이스에서 미디어를 전송하기 위해 이 자습서에서는 Kinesis Video Streams C++ 프로듀서 라이브러리와 카메라 기타 미디어 소스에 대한 액세스를 표준화하는 오픈 소스 미디어 프레임워크인 GStreamer를 사용합니다.

SDK와 샘플을 빌드하세요.

컴퓨터에서 또는 내부에서 SDK와 샘플을 빌드할 수 있습니다. AWS Cloud9아래의 적절한 절차를 따르세요.

Build on your computer

readme 파일의 지침을 사용하여 제작자 라이브러리와 샘플 애플리케이션을 빌드하십시오.

여기에는 다음이 포함됩니다.

  • 종속성 설치

  • 리포지토리 복제

  • CMake를 사용하여 메이크파일 생성

  • make를 사용하여 바이너리 파일 빌드하기

Build in AWS Cloud9

다음 절차에 따라 Kinesis Video AWS Cloud9 Streams에 업로드하십시오. 컴퓨터에 아무것도 다운로드할 필요가 없습니다.

  1. AWS Management Console에서 엽니다 AWS Cloud9.

    환경 만들기를 선택합니다.

  2. 환경 만들기 화면에서 다음을 완료하십시오.

    • 이름 - 새 환경의 이름을 입력합니다.

    • 플랫폼 - 우분투 서버 22.04 LTS를 선택합니다.

    다른 필드는 기본 선택 사항을 그대로 둘 수 있습니다.

  3. 환경이 생성되면 Cloud9 IDE 열에서 열기를 선택합니다.

    화면 하단 중간 영역에 표시됩니다. Admin:~/environment $ 이 터미널은 AWS Cloud9 (아마존 EC2) 터미널입니다.

    참고

    실수로 터미널을 닫은 경우 , 새 터미널을 선택합니다.

    터미널에서 다음 명령을 실행하여 볼륨을 20GiB로 변경합니다.

    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

    다음 파일이 있는지 확인합니다.

    • kvs_gstreamer_sample

    • libgstkvssink.so

  11. (선택 사항) GST_PLUGIN_PATH 환경 변수 설정을 셸의 시작 스크립트에 추가할 수 있습니다. 이렇게 하면 새 터미널 세션 중에 GST_PLUGIN_PATH가 올바르게 설정됩니다. 에서 셸의 AWS Cloud9시작 스크립트는 다음과 같습니다. ~/.bashrc

    다음 명령을 실행하여 셸의 시작 스크립트 끝에 명령을 추가합니다.

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

    다음을 입력하여 셸의 시작 스크립트를 실행합니다.

    source ~/.bashrc

    GST_PLUGIN_PATH가 설정되었는지 확인합니다.

    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

비디오 사양:

  • 해상도 - 1280 x 720 픽셀

  • 프레임 속도 - 초당 30프레임

  • 지속 시간 - 14.0초

  • 비디오 인코딩 - H.264, 트랙 1에 있음

  • 키프레임 - 3초마다 조각 지속 시간 (사진 그룹 (GoP) 크기라고도 함) 이 3초이고 최종 조각의 길이는 2초입니다.

이전에 만든 스트림의 이름을 사용하여 다음 명령을 실행합니다. 아직 스트림을 만들지 않았다면 을 참조하십시오Kinesis 비디오 스트림 생성.

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

다음 명령어를 사용하여 GStreamer를 사용하여 비디오를 생성하십시오.

GStreamer에게 GStreamer 플러그인을 어디에 설치해야 하는지 알려주세요. kvssink 빌드 디렉터리에서 파일이 들어 있는 폴더의 경로를 지정합니다. libgstkvssink.so

빌드 디렉터리에서 다음 명령을 실행합니다.

export GST_PLUGIN_PATH=`pwd`

이 GStreamer 파이프라인은 640x480 픽셀의 해상도로 초당 10프레임으로 실행되는 표준 테스트 패턴을 사용하여 라이브 테스트 비디오 스트림을 생성합니다. 현재 시스템 시간 및 날짜를 표시하는 오버레이가 추가되었습니다. 그러면 비디오가 H.264 형식으로 인코딩되고 최대 10프레임마다 키프레임이 생성되므로 프래그먼트 지속 시간 (사진 그룹 (GoP) 크기라고도 함) 은 1초가 됩니다. kvssinkH.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 GStreamer 플러그인 - kvssink

승인 객체를 검토하세요.

업로드 중에 Kinesis Video Streams는 업로드를 수행하는 클라이언트에 확인 객체를 다시 보냅니다. 명령 출력에 이러한 내용이 인쇄되어 있어야 합니다. 예는 다음과 같습니다.

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

확인이 사실이라면 Kinesis Video Streams가 검색PERSISTED, 분석 및 장기 저장을 위해 이 미디어 청크를 안정적으로 저장하고 암호화했음을 의미합니다. EventType

승인에 대한 자세한 내용은 을 참조하십시오. PutMedia