Notice
Recent Posts
Recent Comments
Link
투케이2K
187. (TWOK/LOGIC) [Aws] AWS Kvs HLS 사용해 실시간 비디오 스트리밍 재생 및 앱 입장에서 S3 녹화 영상 업로드 로직 정리 본문
투케이2K 로직정리
187. (TWOK/LOGIC) [Aws] AWS Kvs HLS 사용해 실시간 비디오 스트리밍 재생 및 앱 입장에서 S3 녹화 영상 업로드 로직 정리
투케이2K 2026. 5. 13. 20:39728x90
반응형
[로직 정리]
정리 로직 : 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
--------------------------------------------------------------
확장성 | 낮음 (연결 수 제한) | ✅ 매우 높음
--------------------------------------------------------------
녹화/보관 | ❌ 직접 불가 | ✅ 자연스럽게 연계
--------------------------------------------------------------
✅ 흐름 정리) 디바이스 기기 HLS 라이브 스트리밍 재생 및 앱에서 영상 시청 및 녹화 동작 흐름 정리
1. 기기: PutMedia : 스트리밍 데이터 전송 수행
2. 앱: HLS 재생 (보기만)
3. 앱: “녹화 시작” 버튼
4. Backend: 서버 타임스탬프 기록
5. 앱: “녹화 종료”
6. Backend:
- 시간 범위 계산
- ListFragments
- GetMediaForFragmentList / GetClip
- S3 저장
✅ 세부 정리) 각 흐름 단계에서 세부 사항 정리
1. 기기: PutMedia : 스트리밍 데이터 전송 수행
>> 기기는 영상 원본을 KVS로 지속적으로 푸시
>> Stream retention 반드시 > 0 : 최소 1시간 (실무에선 24h~72h 흔함)
>> Fragment duration : 보통 2~6초 : 나중에 “구간 자르기” 정확도에 영향
2. 앱: HLS 재생 (보기만)
>> 사용자는 실시간 또는 약간 지연된 영상 시청
>> 앱은 GetHLSStreamingSessionURL로 m3u8 URL 획득
>> 실제 영상은 KVS 내부 fragment를 읽어서 제공
3. 앱: “녹화 시작” 버튼
>> 백엔드에 API 호출 : 이 시점부터의 시간을 기록해라
4. Backend: 서버 타임스탬프 기록
>> 백엔드는 녹화 요청이 들어온 타임 스탬프 값 시간을 저장
5. 앱: “녹화 종료”
>> 백엔드에 API 호출 : 녹화 영상 종료 시간을 기록해라
6-1. Backend: 시간 범위 계산
>> 녹화 시작 타임스탬프, 녹화 종료 타임스탬프 확인
6-2. GetClip vs GetMediaForFragmentList 선택
>> 👉 GetClip (가장 간단)
- 쓰임 : 사용자 버튼 녹화 , 수 초 ~ 수 분 , “파일 하나면 충분”
$ 안정적으로 쓰이는 범위 : 수 초 ~ 수 분 , 일반적으로 1~5분 , 길어도 10분 전후
- 동작 :
TimestampRange
→ KVS가 자동으로 fragment 선택
→ MP4 파일 생성
→ 스트리밍 응답
- 장점 : 구현 쉬움 , 추가 처리 거의 없음
- 단점 : 대용량 부적합 , 세밀한 제어 불가
>> 👉 ListFragments + GetMediaForFragmentList (정석)
- 쓰임 : 자동 녹화 , 장시간 , 분석 / 후처리 필요 , 대규모 시스템
- 동작 :
TimestampRange
→ ListFragments (fragment 번호 목록)
→ GetMediaForFragmentList (MKV payload)
→ (필요시 변환)
→ S3
- 장점 : 제어력 100% , 확장성 좋음
- 단점 : 구현 복잡 , 후처리 필요
6-3. S3 저장
>> 저장 형태 :
- GetClip → MP4 바로 업로드
- Fragment 방식 → 변환 후 MP4 / 그대로 MKV
// --------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------
[참고 사이트]
// --------------------------------------------------------------------------------------
▶️ 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
반응형
'투케이2K 로직정리' 카테고리의 다른 글
Comments
