Notice
Recent Posts
Recent Comments
Link
투케이2K
62. (Aws/Amazon) [Aws Kinesis Video Streams] Aws Kvs HLS 라이브 스트리밍 시청 및 녹화 영상 업로드 방법 정리 본문
Aws (Amazon)
62. (Aws/Amazon) [Aws Kinesis Video Streams] Aws Kvs HLS 라이브 스트리밍 시청 및 녹화 영상 업로드 방법 정리
투케이2K 2025. 5. 15. 19:41[개발 환경 설정]
개발 환경 : Aws / Amazon Web Services

[설명 정리]
// --------------------------------------------------------------------------------------
[개발 및 환경]
// --------------------------------------------------------------------------------------
- 인프라 : Aws / Amazon Web Services
- 기술 구분 : Aws / KVS / HLS / 라이브 스트리밍
- 참고 사항 : WebRTC , HLS 실시간 라이브 스트리밍 구분 이유
>> WebRTC : P2P 연결을 통해서 실시간 동영상을 간편히 확인 위함
>> HLS : 비디오 동영상 라이브 스트리밍을 시청하면서, 동영상 녹화가 필요한 경우 모바일에서 지원하는 H.264, AAC 포맷으로 간편히 저장하기 위함
// --------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------
[디바이스 : 카메라 스트리밍 정보 Kvs HLS 업로드 방법 구분]
// --------------------------------------------------------------------------------------
방법 [1] : PutMedia API 를 사용해 영상 실시간 송신 방법 (PutMedia 로 전송하면 KVS 가 이를 HLS 로 변환해서 HLS URL 제공)
>> 디바이스는 실시간 카메라 영상 스트림 수행 (스트림 형식은 HLS 형식 맞춤 : 비디오 H.264 , 오디오 AAC)
>> 디바이스는 AccessKey , SecretKey 를 사용해 PutMedia 호출 시 사용 할 수 있는 GetDataEndpoint 주소 확인
- 사전 Aws Kvs Video Stream 이 생성 되어 있어야함
- GetDataEndpoint 확인 API 호출 시 생성 된 StreamName , StreamArn 주소 필요
>> 디바이스는 PutMedia + GetDataEndpoint 사용해 미디어 데이터를 Aws Kinesis 비디오 스트림으로 전송 (PutMedia 로 전송하면 KVS 가 이를 HLS 로 변환해서 HLS URL 제공)
방법 [2] : 이전에 녹화 된 파일 (mp4) 을 AWS Lambda 또는 EC2 에서 동영상을 KVS 로 전송 방법
>> 디바이스는 실시간 카메라 영상 스트림 녹화, 저장 수행
>> 디바이스는 녹화 된 파일 Aws S3 등에 업로드 수행 (HLS 형식 맞춤 : H.264 , AAC)
>> 서버 측에서 S3의 mp4 파일을 다운로드 수행
>> 서버 측에서는 AWS KVS Producer SDK (C++ 또는 Java)를 이용해 PutMedia 호출 수행 (PutMedia 로 전송하면 KVS 가 이를 HLS 로 변환해서 HLS URL 제공)
방법 [3] : 이전에 녹화 된 파일 (mp4) 을 AWS Elemental MediaConvert 사용해 HLS 제공 방법
>> 디바이스는 실시간 카메라 영상 스트림 녹화, 저장 수행
>> 디바이스는 녹화 된 파일 Aws S3 등에 업로드 수행 (HLS 형식과 다르게 저장)
>> 서버 측에서는 S3에 업로드된 mp4를 MediaConvert (미디어 파일 트랜스코딩) 로 HLS 세그먼트로 변환
>> CloudFront 또는 S3 static hosting 으로 HLS 제공
- CloudFront 는 이미지와 같은 정적 및 동적 웹 콘텐츠를 사용자에게 보다 빠르게 배포하기 위한 웹서비스
방법 [4] : 이전에 녹화 된 파일 (mp4) 을 FFmpeg 사용해 RTSP 또는 RTP로 읽어서 스트림처럼 전송 방법 (FFmpeg 는 비디오, 오디오 및 기타 멀티미디어 파일과 스트림을 처리하기 위한 라이브러리와 프로그램 모음)
>> 디바이스는 실시간 카메라 영상 스트림 녹화, 저장 수행 (HLS 형식과 다르게 저장)
>> 디바이스는 FFMpecg 을 사용해 mp4 파일을 실시간으로 읽고 트랜스코딩 해서 RTSP 스트림 변환
>> 디바이스는 AccessKey , SecretKey 를 사용해 PutMedia 호출 시 사용 할 수 있는 GetDataEndpoint 주소 확인
- 사전 Aws Kvs Video Stream 이 생성 되어 있어야함
- GetDataEndpoint 확인 API 호출 시 생성 된 StreamName , StreamArn 주소 필요
>> 디바이스는 PutMedia + GetDataEndpoint 사용해 미디어 데이터를 Aws Kinesis 비디오 스트림으로 전송 (PutMedia 로 전송하면 KVS 가 이를 HLS 로 변환해서 HLS URL 제공)
// --------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------
[클라이언트 : HLS 라이브 스트리밍 시청 및 녹화 영상 업로드 방법 설명]
// --------------------------------------------------------------------------------------
[클라이언트는 실시간 HLS 스트리밍을 재생하면서, 화면을 녹화한 후 S3 등에 업로드 진행]
// --------------------------------------------------------------------------------------
>> Device : 디바이스가 KVS 비디오 스트리밍 Name 지정 및 카메라 스트림 동영상 실시간 업로드 수행
- 비디오 및 오디오 인코딩 포맷 : H.264 , AAC
- 실시간 업로드 : PutMedia 사용해 영상 실시간 송신 (PutMedia 로 전송하면 KVS 가 이를 HLS 로 변환해서 HLS URL 제공)
* 추가적인 실시간 업로드 방법은 상단 디바이스 비디오 스트림 전송 방법 참고
>> Client : HLS 로 스트리밍 되고 있는 URL 주소 확인
>> Client : 비디오 플레이어 사용해 실시간 HLS 라이브 스트리밍 시청 수행
>> Client : 녹화 동작을 수행하기 위해 네이티브 MediaRecorder 를 사용해 화면 녹화 진행
- 녹화 파일 저장 명칭 형식 : StreamName_녹화 시작 시간_녹화 종료 시간
>> Client : 화면 녹화 종료 시 녹화 된 파일 Aws S3 에 업로드 수행 실시
>> Client : 녹화 된 파일 다시 보고 싶은 경우 S3 파일 조회 후 녹화 된 동영상 플레이 수행
// --------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------
[참고 사이트]
// --------------------------------------------------------------------------------------
[Aws KVS 비디오 개발자 가이드 PDF 문서]
https://docs.aws.amazon.com/ko_kr/kinesisvideostreams/latest/dg/kinesisvideo-dg.pdf
[Aws HLS를 사용한 비디오 재생 방법]
https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/hls-playback.html
[Aws PutMedia API 설명]
https://docs.aws.amazon.com/ko_kr/kinesisvideostreams/latest/dg/API_dataplane_PutMedia.html
[Aws KVS 비디오 스트림 , 신호 전송 채널 차이점 설명 정리]
https://blog.naver.com/kkh0977/223854439046
[Aws STS 임시 보안 자격 증명 설명 정리]
https://blog.naver.com/kkh0977/223846461194
[Aws KVS PutMedia 비디오 스트림 전송 API 설명 정리]
// --------------------------------------------------------------------------------------
반응형
'Aws (Amazon)' 카테고리의 다른 글
Comments