투케이2K

188. (TWOK/LOGIC) [Aws] AWS Kvs HLS 사용해 실시간 비디오 스트리밍 재생 및 디바이스 기기 입장에서 S3 녹화 영상 업로드 로직 정리 본문

투케이2K 로직정리

188. (TWOK/LOGIC) [Aws] AWS Kvs HLS 사용해 실시간 비디오 스트리밍 재생 및 디바이스 기기 입장에서 S3 녹화 영상 업로드 로직 정리

투케이2K 2026. 5. 14. 19:30
728x90
반응형

[로직 정리]

정리 로직 : AWS / Kvs / HLS

제 목 : [Aws] AWS Kvs HLS 사용해 실시간 비디오 스트리밍 재생 및 디바이스 기기 입장에서 S3 녹화 영상 업로드 로직 정리

 

[설 명]

// --------------------------------------------------------------------------------------
[사전) 설정 및 정보 확인 사항]
// --------------------------------------------------------------------------------------

1. 제 목 : [Aws] AWS Kvs HLS 사용해 실시간 비디오 스트리밍 재생 및 디바이스 기기 입장에서 S3 녹화 영상 업로드 로직 정리


2. 테스트 환경 : Aws / Kvs / HLS / S3


3. 사전) 👉 비디오 스트림 간략 설명 정리 : 

  >> 비디오 스트림은 라이브 비디오 및 기타 시간이 인코딩된 데이터를 캡처하고, 선택적으로 저장하고, 실시간, 배치 혹은 애드혹 형식으로 데이터의 소비를 가능하게 할 수 있도록 해 주는 리소스입니다

  >> 일반적인 구성에서는 Kinesis 비디오 스트림은 데이터를 푸시해 주는 생산자가 하나만 있습니다 (실시간 스트리밍 데이터를 밀어 넣어주는 하드웨어 기기)


4. 사전) 👉 HLS 개념 설명 : 

  >> HTTP 라이브 스트리밍으로 인터넷을 통해 소비자에게 미디어 콘텐츠를 제공하는 데 사용되는 스트리밍 프로토콜입니다

  >> HLS 는 Apple 장치에서 지원하는 유일한 형식입니다

  >> 미디어는 h.264 또는 h.265 인코딩된 비디오를 포함해야 하며 AAC 인코딩된 오디오는 선택 사항입니다

  >> 미디어 타입 유효한 값의 예로는 "video/h264" 및 "video/h264,audio/aac" 가 있습니다

// --------------------------------------------------------------------------------------






// --------------------------------------------------------------------------------------
[로직 설명]
// --------------------------------------------------------------------------------------

✅ 사전) 실시간 영상 재생 시 사용 되는 WebRTC 와 HLS 비교 설명 정리

--------------------------------------------------------------
구분          |     WebRTC         |      HLS
--------------------------------------------------------------
핵심 목적     |  초저지연 실시간     | 안정적 스트리밍 & 재생
--------------------------------------------------------------
지연          |     0.3~1초        | 5~30초
--------------------------------------------------------------
대상          | 실시간 상호작용     | 다수 시청, 기록, 재생
--------------------------------------------------------------
네트워크      |    P2P / UDP       | HTTP / CDN
--------------------------------------------------------------
확장성        | 낮음 (연결 수 제한) | ✅ 매우 높음
--------------------------------------------------------------
녹화/보관     |    ❌ 직접 불가    | ✅ 자연스럽게 연계
--------------------------------------------------------------



✅ 1안 : 흐름 정리) 디바이스 기기 HLS 라이브 스트리밍 재생 및 특정 이벤트 발생 시 녹화 동작 흐름 정리

1. 기기: PutMedia : 스트리밍 데이터 전송 수행

2. 앱: HLS 재생 (보기만)

3. 기기: 카메라에 특정 동작 이벤트 감지 수행 , 이벤트가 발생한 현재 시간 저장 (+ 5초 추가 스트리밍 재생 수행)

4. 기기: API Gateway 호출 및 Lambda 트리거 수행

5. Backend: 기기가 전송한 현재 시간 기준으로 +- 5초 ListFragments (검증)

6. Backend: GetClip (영상 추출)

7. Backend: S3 업로드 수행

[디바이스(Camera)]
    ├─ PutMedia →
    │
    ▼
[Kinesis Video Streams]
    ├─ (스트리밍 데이터 저장)
    │        └─ Fragment (영상 조각 저장)
    │
    ├─ (실시간 재생) →
    │        └─ HLS (GetHLSStreamingSessionURL)
    │
    ├─ (이벤트 발생 → 외부 트리거 전달)
    │        └─ AWS IoT / API Gateway / EventBridge
    │
    ▼
[Lambda (또는 Backend)]
    ├─ 1. 이벤트 시간 수신
    ├─ 2. ±5초 Timestamp 계산
    │
    ├─ 3. ListFragments (검증)
    │        ├─ Fragment 존재 확인
    │        └─ Timestamp 유효성 체크
    │
    ├─ 4. GetClip (영상 추출)
    │        └─ MP4 binary 생성
    │
    └─ 5. S3 업로드
             └─ PutObject (video/mp4)

    ▼
[S3]
    └─ 이벤트 영상 저장 (mp4)



✅ 2안 : 흐름 정리) 디바이스 기기 HLS 라이브 스트리밍 재생 및 특정 이벤트 발생 시 녹화 동작 흐름 정리

1. 기기: PutMedia : 스트리밍 데이터 전송 수행

2. 앱: HLS 재생 (보기만)

3. 기기: 카메라에 특정 동작 이벤트 감지 수행 , 이벤트가 발생한 현재 시간 저장 (+ 5초 추가 스트리밍 재생 수행)

4. 기기: 이벤트가 발생한 시간 기준 +- 5초 ListFragments (검증)

5. 기기: GetClip (영상 추출)

6. 기기: S3 업로드 수행

┌────────────────────────────┐
│        Device (Camera)     │
│                            │
│  1. PutMedia               │
│  2. Event Detection        │
│  3. Timestamp 계산         │
│  4. ListFragments 호출     │
│  5. GetClip 호출           │
│  6. S3 업로드              │
└─────────────┬──────────────┘
              │
              ▼
     ┌─────────────────────┐
     │ Kinesis Video Stream │
     │  (fragment 저장)     │
     └─────────────────────┘
              │
              ▼
     ┌─────────────────────┐
     │ KVS Archived Media  │
     │  - ListFragments    │
     │  - GetClip          │
     └─────────────────────┘
              │
              ▼
     ┌─────────────────────┐
     │        S3           │
     │ (영상 저장)         │
     └─────────────────────┘

// --------------------------------------------------------------------------------------






// --------------------------------------------------------------------------------------
[참고 사이트]
// --------------------------------------------------------------------------------------

▶️ 143. (TWOK/LOGIC) [android] Aws Kvs HLS PutMedia 스트리밍 동영상 업로드 로직 정리 - DataEndpoint, MKV , AWS4Signer

https://kkh0977.tistory.com/8013

https://blog.naver.com/kkh0977/223875616765?trackingCode=blog_bloghome_searchlist


▶️ 145. (TWOK/LOGIC) [Aws] Aws Kvs HLS 디바이스 카메라 라이브 스트리밍 정보 PutMedia 업로드 방법 로직 정리

https://kkh0977.tistory.com/8086

https://blog.naver.com/kkh0977/223911555706?trackingCode=blog_bloghome_searchlist


▶️ 146. (TWOK/LOGIC) [Aws] Kvs HLS 라이브 스트리밍 로컬 PC에서 업로드 하기 위한 프로세스 로직 정리 - aws , ffmpeg , gstreamer 사용

https://kkh0977.tistory.com/8099

https://blog.naver.com/kkh0977/223918332596?trackingCode=blog_bloghome_searchlist


▶️ 147. (TWOK/LOGIC) [android] 안드로이드 휴대폰 실시간 카메라 스트림 영상을 마스터 역할로 Aws Kvs HLS 라이브 스트리밍 업로드 로직 정리

https://kkh0977.tistory.com/8250

https://blog.naver.com/kkh0977/223996783911?trackingCode=blog_bloghome_searchlist


▶️ 153. (TWOK/LOGIC) [Aws] 자바스크립트 Aws Kvs HLS 비디오 라이브 스트리밍 뷰어 Viewer 영상 재생 방법 정리

https://kkh0977.tistory.com/8405

https://blog.naver.com/kkh0977/224079078341?trackingCode=blog_bloghome_searchlist


▶️ AWS : ListFragments 설명

https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_reader_ListFragments.html


▶️ AWS : GetMediaForFragmentList 설명

https://docs.aws.amazon.com/ko_kr/kinesisvideostreams/latest/dg/API_reader_GetMediaForFragmentList.html


▶️ AWS : GetClip 설명

https://docs.aws.amazon.com/ko_kr/kinesisvideostreams/latest/dg/API_reader_GetClip.html

// --------------------------------------------------------------------------------------
 
728x90
반응형
Comments