쿠키 기본 설정 선택

당사는 사이트와 서비스를 제공하는 데 필요한 필수 쿠키 및 유사한 도구를 사용합니다. 고객이 사이트를 어떻게 사용하는지 파악하고 개선할 수 있도록 성능 쿠키를 사용해 익명의 통계를 수집합니다. 필수 쿠키는 비활성화할 수 없지만 '사용자 지정' 또는 ‘거부’를 클릭하여 성능 쿠키를 거부할 수 있습니다.

사용자가 동의하는 경우 AWS와 승인된 제3자도 쿠키를 사용하여 유용한 사이트 기능을 제공하고, 사용자의 기본 설정을 기억하고, 관련 광고를 비롯한 관련 콘텐츠를 표시합니다. 필수가 아닌 모든 쿠키를 수락하거나 거부하려면 ‘수락’ 또는 ‘거부’를 클릭하세요. 더 자세한 내용을 선택하려면 ‘사용자 정의’를 클릭하세요.

Kinesis 비디오 스트림으로 비디오 스트리밍

포커스 모드
Kinesis 비디오 스트림으로 비디오 스트리밍 - Amazon Kinesis Video Streams

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

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

샘플 애플리케이션을 실행하려면 다음 정보가 필요합니다.

  1. 자격 증명과 리전을 설정합니다.

    export AWS_ACCESS_KEY_ID=YourAccessKey export AWS_SECRET_ACCESS_KEY=YourSecretKey export AWS_DEFAULT_REGION=us-west-2

    기타 인증 방법은 섹션을 참조하세요에 자격 증명 제공 kvssink.

    참고

    C++ 생산자는 기본적으로 미국 서부(오레곤)(us-west-2) 리전을 SDK 사용합니다. 기본값을 사용하려면 미국 서부(오레곤) 리전에서 Kinesis 비디오 스트림을 AWS 리전 생성합니다.

    Kinesis 비디오 스트림에 다른 리전을 사용하려면 다음 환경 변수를 해당 리전(예: us-east-1)으로 설정합니다.

    export AWS_DEFAULT_REGION=us-east-1
  2. 입력 미디어에 따라 다음 중 하나를 선택합니다.

    Sample Gstreamer video

    이 GStreamer 파이프라인은 해상도가 640x480픽셀인 초당 10프레임으로 실행되는 표준 테스트 패턴을 사용하여 라이브 테스트 비디오 스트림을 생성합니다. 현재 시스템 시간과 날짜를 표시하는 오버레이가 추가됩니다. 그런 다음 비디오가 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 webcam

    다음 명령을 실행하여 USB 카메라를 GStreamer 자동으로 감지합니다.

    gst-launch-1.0 autovideosrc \ ! videoconvert \ ! video/x-raw,format=I420,width=640,height=480 \ ! x264enc bframes=0 key-int-max=45 tune=zerolatency byte-stream=true speed-preset=ultrafast \ ! h264parse \ ! video/x-h264,stream-format=avc,alignment=au,profile=baseline \ ! kvssink stream-name="YourStreamname"

    GStreamer 파이프라인을 중지하려면 터미널 창을 선택하고 CTRL+C를 누릅니다.

    GStreamer 자동 감지를 허용하는 대신 특정 디바이스 식별자v4l2src와 함께를 사용할 수 있습니다. 다음 명령 실행:

    gst-device-monitor-1.0

    출력에는 디바이스 사용 방법에 대한 몇 가지 디바이스와 GStreamer 파이프라인 시작이 표시됩니다.

    Device found: name : H264 USB Camera: USB Camera class : Video/Source caps : video/x-h264, stream-format=(string)byte-stream, alignment=(string)au, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, colorimetry=(string){ 2:4:7:1 }, framerate=(fraction){ 30/1, 25/1, 15/1 }; ... properties: device.path = /dev/video4 udev-probed = false device.api = v4l2 v4l2.device.driver = uvcvideo v4l2.device.card = "H264\ USB\ Camera:\ USB\ Camera" v4l2.device.bus_info = usb-3f980000.usb-1.3 v4l2.device.version = 265767 (0x00040e27) v4l2.device.capabilities = 2216689665 (0x84200001) v4l2.device.device_caps = 69206017 (0x04200001) gst-launch-1.0 v4l2src device=/dev/video4 ! ...

    GStreamer 파이프라인을 중지하려면 터미널 창을 선택하고 CTRL+C를 누릅니다.

    Raspberry Pi camera module 1

    에서 Pi 카메라 모듈 1 또는 Pi 카메라 모듈 2를 사용하는 경우 다음을 bcm2835-v4l2사용합니다.

    gst-launch-1.0 v4l2src device=/dev/video0 \ ! videoconvert \ ! video/x-raw,format=I420,width=640,height=480 \ ! x264enc bframes=0 key-int-max=45 bitrate=500 tune=zerolatency \ ! h264parse ! video/x-h264,stream-format=avc,alignment=au,profile=baseline \ ! kvssink stream-name="YourStreamname"

    GStreamer 파이프라인을 중지하려면 터미널 창을 선택하고 CTRL+C를 누릅니다.

    Raspberry Pi camera module 2 or 3

    최신 libcamera 스택을 사용하는 경우 다음 GStreamer 파이프라인을 사용합니다.

    gst-launch-1.0 libcamerasrc \ ! video/x-raw,width=640,height=480,framerate=30/1,format=I420 \ ! videoconvert \ ! x264enc speed-preset=ultrafast tune=zerolatency byte-stream=true key-int-max=75 \ ! video/x-h264,level='(string)4' \ ! h264parse \ ! video/x-h264,stream-format=avc,alignment=au,width=640,height=480,framerate=30/1 \ ! kvssink stream-name="YourStreamname"

    GStreamer 파이프라인을 중지하려면 터미널 창을 선택하고 CTRL+C를 누릅니다.

    이 GStreamer 파이프라인은 해상도가 640x480픽셀인 초당 10프레임으로 실행되는 표준 테스트 패턴을 사용하여 라이브 테스트 비디오 스트림을 생성합니다. 현재 시스템 시간과 날짜를 표시하는 오버레이가 추가됩니다. 그런 다음 비디오가 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 파이프라인은 다음과 같습니다.

    오버레이된 날짜 및 타임스탬프가 있는 표준 테스트 패턴의 이미지입니다.

하드웨어 사용

일부 Raspberry Pi 모델에는 하드웨어 가속 H.264 인코더가 함께 제공됩니다. 소프트웨어 인코더x264enc인 대신 사용할 수 있습니다.

  1. GStreamer 플러그인이 설치되어 있는지 확인합니다.

    sudo apt-get install gstreamer1.0-tools gstreamer1.0-plugins-bad
  2. Type:

    gst-inspect-1.0 | grep h264

    다음 요소를 사용할 수 있는지 확인합니다.

    • omxh264enc

    • v4l2h264enc

    사용 가능한 경우 사용할 수 있습니다. 이러한 요소를 사용하는 몇 가지 파이프라인 예제는 다음과 같습니다.

    omxh264enc:

    gst-launch-1.0 v4l2src device=/dev/video0 \ ! videoconvert \ ! video/x-raw,format=I420,width=640,height=480 \ ! omxh264enc control-rate=2 target-bitrate=512000 periodicity-idr=45 inline-header=FALSE \ ! h264parse ! video/x-h264,stream-format=avc,alignment=au,profile=baseline \ ! kvssink stream-name="raspberry"

    v4l2h264encv4l2convert:

    gst-launch-1.0 libcamerasrc \ ! video/x-raw,width=640,height=480,framerate=30/1,format=I420 \ ! v4l2convert \ ! v4l2h264enc extra-controls="controls,repeat_sequence_header=1" \ ! video/x-h264,level='(string)4' \ ! h264parse \ ! video/x-h264,stream-format=avc,alignment=au,width=640,height=480,framerate=30/1 \ ! kvssink stream-name="test-stream"

런타임 문제

다음은 자주 발생하는 몇 가지 런타임 문제와 이를 해결하는 방법입니다.

해당 요소 없음 "xxxxxxxxx"

다음과 같은 오류가 발생하면 GStreamer 플러그인이 누락되었음을 의미합니다.

WARNING: erroneous pipeline: no element "videoconvert"

​해결 방법:

누락된 요소를 기반으로 적절한 작업을 결정합니다.

"버퍼 풀 활성화 실패" 오류

다음과 같은 오류가 발생하면 사용 중인 파이프라인이를 사용 v4l2src중이지만 libcamera 대신를 사용해야 한다는 의미입니다.

ERROR bufferpool gstbufferpool.c:572:gst_buffer_pool_set_active:source:pool0:src start failed WARN v4l2src gstv4l2src.c:976:gst_v4l2src_decide_allocation: error: Failed to allocate required memory. WARN v4l2src gstv4l2src.c:976:gst_v4l2src_decide_allocation: error: Buffer pool activation failed WARN basesrc gstbasesrc.c:3352:gst_base_src_prepare_allocation: Subclass failed to decide allocation Error received from element source: Failed to allocate required memory. WARN basesrc gstbasesrc.c:3132:gst_base_src_loop: error: Internal data stream error. Debugging information: ../sys/v4l2/gstv4l2src.c(976): gst_v4l2src_decide_allocation (): /GstPipeline:live-kinesis-pipeline/GstV4l2Src:source: Buffer pool activation failed WARN basesrc gstbasesrc.c:3132:gst_base_src_loop: error: streaming stopped, reason not-negotiated (-4)

예를 들어, 카메라 모듈 2가 libcamera 설치되지 않은 상태에서 다음 파이프라인를 사용하는 경우 GStreamer가 파이프라인을 자동 감지하려고 할 때이 오류가 발생할 수 있습니다.

gst-launch-1.0 autovideosrc ! videoconvert ! autovideosink

​해결 방법:

libcamera가 설치되어 있는지 확인하고가 아닌 소스 요소로 사용합니다v4l2src. libcamera GStreamer 요소를 설치하려면 다음을 입력합니다.

sudo apt-get update sudo apt-get install gstreamer1.0-libcamera

libcamerasrc가 설치되면 autovideosrc 요소를 사용하는 경우는 libcamerasrc 대신 올바른 소스를 사용하도록 자동으로 전환GStreamer해야 합니다v4l2src.

버스 오류

시작 직후 버스 오류가 발생하면kvssink(일반적으로에 대한 HTTP 호출이 PutMedia완료될 때까지) Raspberry Pi가 정렬되지 않은 메모리 액세스를 지원하지 않는다는 의미입니다. 로그는 다음과 같습니다.

INFO Camera camera.cpp:1197 configuring streams: (0) 640x480-YUV420 INFO RPI pisp.cpp:1450 Sensor: /base/axi/pcie@120000/rp1/i2c@88000/imx708@1a - Selected sensor format: 1536x864-SBGGR10_1X10 - Selected CFE format: 1536x864-PC1B [INFO ] kinesisVideoStreamFormatChanged(): Stream format changed. [DEBUG] setRequestHeader(): Appending header to request: user-agent -> AWS-SDK-KVS-CPP-CLIENT/3.4.2/1.5.3 GCC/12.2.0 Linux/6.6.51+rpt-rpi-v8 aarch64 CPPSDK [DEBUG] setRequestHeader(): Appending header to request: x-amzn-stream-name -> demo-stream [DEBUG] setRequestHeader(): Appending header to request: x-amzn-producer-start-timestamp -> 1732012345.678 [DEBUG] setRequestHeader(): Appending header to request: x-amzn-fragment-acknowledgment-required -> 1 [DEBUG] setRequestHeader(): Appending header to request: x-amzn-fragment-timecode-type -> ABSOLUTE [DEBUG] setRequestHeader(): Appending header to request: transfer-encoding -> chunked [DEBUG] setRequestHeader(): Appending header to request: connection -> keep-alive [INFO ] putStreamResultEvent(): Put stream result event. New upload handle 0 [WARN ] notifyDataAvailable(): [demo-stream] Failed to un-pause curl with error: 43. Curl object 0xe2f6f418 Bus error

Kinesis Video Streams는 정렬되지 않은 메모리 액세스를 PIC 사용하여 메모리 사용량을 최적화하며, 이는 모든 디바이스에서 지원되지 않습니다.

​해결 방법:

정렬SDK된 메모리 액세스 모드에서를 사용하려면 컴파일 ONALIGNED_MEMORY_MODEL CMake 플래그를 로 명시적으로 설정해야 합니다. 기본값은 kvssink이기 때문입니다OFF. 자세한 지침은 섹션을 참조Kinesis Video Streams C++ 생산자 다운로드 및 빌드 SDK하세요.

타임스탬프가 고정되고 파이프라인이 정지됩니다.

GStreamer 파이프라인x264enc에서를 사용할 때 파이프라인의 타임라인이 몇 초 내에 크게 또는 완전히 멈출 수 있는 상황이 발생할 수 있습니다.

이는 x264enc 기본 설정으로 인해 인코딩 지연 시간이 길어져 기본 입력 버퍼의 용량을 초과할 수 있기 때문입니다. 따라서 입력 버퍼가 채워져 업스트림 요소가 차단되고 파이프라인이 정지합니다.

자세한 내용은 GStreamer 설명서를 참조하십시오.

​해결 방법:

튜닝 옵션으로 zerolatency x264enc를 구성합니다. 이렇게 하면 실시간 시나리오에 맞게 최적화하여 프레임을 더 빠르게 처리하고 출력할 수 있으므로 인코딩 지연 시간이 크게 줄어듭니다.

구성의 예제:

... ! x264enc tune=zerolatency byte-stream=true speed-preset=ultrafast bframes=0 key-int-max=60 ! ...
참고

이 솔루션은 파이프라인 스톨링을 효과적으로 방지하지만 인코딩 효율성과 품질에 영향을 미칠 수 있습니다. 짧은 지연 시간과 고품질이 모두 필요한 시나리오의 경우 하드웨어 최적화를 사용하거나 H.264를 직접 출력하는 웹캠을 찾는 등이 인코딩 단계를 건너뛰는 등 대체 접근 방식을 고려하세요.

자세한 내용은 하드웨어 사용 단원을 참조하십시오.

내부 데이터 스트림 오류

GStreamer 파이프라인을 생성할 때 한 요소의 소스 패드를 다른 요소의 싱크 패드에 연결하여 요소를 연결합니다. 이 연결 프로세스를 통해 소스 요소에서 싱크 요소로 데이터를 흐르게 하여 데이터 파이프라인을 구성할 수 있습니다.

로그의 오류 메시지 "Pad link failed"는 파이프라인에 있는 두 요소의 패드 사이에 연결(링크)을 설정하려고 할 때에서 문제가 GStreamer 발생했음을 나타냅니다.

Pad link failed Error received from element udpsrc0: Internal data stream error.

​해결 방법:

어떤 요소가 서로 연결되지 않는지 결정합니다. 파이프라인 범위를 좁히려면 파이프라인에서 요소를 제거합니다. 가장 오른쪽 요소를 로 바꾸fakesink고 한 번에 하나씩 요소를 제거합니다.

capsfilter 요소를 조정하거나 파이프라인에서 사용하는 요소를 변경해야 할 수 있습니다.

일반적인 경우 카메라가 지원하지 않는 framerate 또는 resolution를 요청합니다. gst-device-monitor-1.0를 사용하여 지원되는 framerates, resolutions및를 가져옵니다formats. 비디오 스케일 GStreamer 요소를 사용하여 비디오 해상도를 조정하고 비디오 속도를 사용하여 비디오 프레임 속도를 조정할 수 있습니다.

프라이버시사이트 이용 약관쿠키 기본 설정
© 2025, Amazon Web Services, Inc. 또는 계열사. All rights reserved.