투케이2K

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

투케이2K 로직정리

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

투케이2K 2025. 7. 1. 20:05
728x90

[로직 정리]

정리 로직 : Aws

상태 : [Aws] Kvs HLS 라이브 스트리밍 로컬 PC에서 업로드 하기 위한 프로세스 로직 정리 - aws , ffmpeg , gstreamer 사용

 

[설 명]

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

1. 사전) 인프라 환경 구축 및 파일 준비 필요 사항

  >> Aws Kinesis Video Streams (Kvs) 인프라 구축 필요

    - IAM 계정 생성 (KVS 권한 할당) 및 AccessKey , SecretKey 생성 준비

  >> Aws 사이트에서 KVS HLS 비디오 스트림 채널 생성 필요 (테스트 고유 디바이스 스트림 명칭)

  >> Aws Kvs HLS 에 업로드 하려는 동영상 파일 (mp4) 준비 필요

  >> 재생 되고 있는 실시간 스트리밍 정보를 보기 위한 Viewer 뷰어 프로그램 준비 필요


2. 사전) 비디오 스트림 학습 : 

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

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


3. 사전) KVS 개념 학습 : 

  >> KVS 는 ML (기계 학습), 재생 및 기타 처리를 위해 커넥티드 디바이스에서 AWS로 비디오를 쉽고 안전하게 스트리밍할 수 있는 기술입니다


4. 사전) HLS 개념 학습 : 

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

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

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

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


5. 사전) PutMedia 개념 학습 : 

  >> Kinesis 비디오 스트림 전송 API 입니다. (미디어 데이터 전송)

  >> PutMedia 전송 시 파라미터에는 streamName 또는 streamARN 중 하나를 지정해야합니다


6. 사전) Signature V4 서명 학습 : 

  >> AWS API 요청에 인증 정보를 추가하기 위한 AWS 서명 프로토콜입니다

  >> HTTP Authorization 헤더에서 또는 URL의 쿼리 문자열로 표현될 수 있습니다


7. 사전) MKV 비디오 파일 학습 : 

  >> 멀티미디어 컨테이너 형식으로 여러 개의 오디오, 비디오, 자막 트랙을 하나의 파일에 포함할 수 있는 컨테이너 형식입니다

  >> MKV 편집이 가능한 프로그램 : 

    - DaVinci Resolve : 무료 + 고급 영상 편집 가능

    - VLC Media Player : 간단한 컷 편집 가능

    - FFmpeg : MKV 변환 & 편집 (커맨드 라인)

    - Avidemux : 간단한 트리밍 & 편집


8. 사전) FFMpecg (미디어 포맷 변환 도구) 학습 : 

  >> FFmpeg 이란 디지털 음성 스트림과 영상 스트림에 대해서 다양한 종류의 형태로 기록하고 변환하는 컴퓨터 프로그램입니다 (미디어 포맷 변환 도구)

  >> FFmpeg을 기반으로 하는 동영상 플레이어 : 

    - iOS : AV player, nPlayer

    - 안드로이드 : Dice Player, MX 플레이어, 안드로이드용 곰플레이어, 안드로이드용 KMPlayer

    - Microsoft Windows : 팟플레이어, 곰플레이어, KMPlayer, MPC-HC, 콘플레이어

    - macOS : 무비스트

    - 크로스 플랫폼 : VLC, MPlayer


9. 사전) Gstreamer (스트림 변형 및 전송 도구) 학습 : 

  >> Gstreamer 는 여러가지 데이터 소스들이 유기적으로 다른 어플리케이션이나 프로그램에 스트림이 될수있도록 데이터를 변형하고 사용가능하도록 만들어줍니다

  >> Gstreamer 를 사용해 특정 미디어 파일을 특정 미디어 서버에 스트리밍 재생을 수행할 수 있습니다


10. 사전) Aws KVS HLS 비디오 사양 관련 설명 정리 - Video Encode , FPS , GOP

  >> 해상도 : 화면 너비와 높이에 걸쳐 있는 픽셀의 수를 통해 측정되며, 픽셀의 수가 많을수록 더 많은 디테일을 표현할 수 있습니다 (가로 픽셀 수 x 세로 픽셀 수)

    - SD : 7230*480

    - HD : 1280*720

    - FHD : 1920*1080

    - QHD : 2560*1440

    - UHD : 4K - 3840*2160

    - DCI : 4K - 4096*2160

  >> 프레임 속도 (Frame rate) : 1초에 여러 프레임이 표시되는 속도를 측정하는 것으로 FPS (초당 프레임 수) 라고도 합니다 (프레임 속도가 클수록 비디오가 더 매끄럽고 자연스럽습니다)

    - 24fps : 영화, 연결 속도의 불일치를 고려한 스트리밍 영상 콘텐츠, 비디오 게임 제작 시 이 속도를 사용하여 고전적인 영화와 같은 분위기를 연출합니다

    - 30fps : 라이브 TV 방송(스포츠 및 뉴스)과 대부분의 TV 프로그램은 이 속도를 사용하여 품질을 높입니다

    - 60fps : 4K 영상 해상도가 보편화됨에 따라 많은 시청자가 이 FPS를 채택하고 있습니다 (비디오 게임 기록 등에 사용)

    - 120fps 이상 : 슬로우 모션 영상을 생성하고 빠르고 격렬한 액션이 있는 비디오 게임(격투, 슈팅, 스포츠 게임) 제작 시 사용합니다

  >> 키프레임 (GOP - Group of Pictures) : MPEG Standard 비디오 압축 기술에서 사용 되는 표현으로 인코딩 된 이미지 프레임 그룹 입니다 (압축률)

    - I-frame : 키프레임으로 불리며 GOP 기준이 되는 핵심 프레임입니다 (GOP 첫프레임은 반드시 I 프레임으로 시작)

    - P-frame : 순방향 예측 프레임으로 바로 이전에 위치한 I 프레임을 기준으로 차이가 나는 부분의 데이터만 예측하여 저장한 프레임입니다

    - B-frame : 양방향 예측 프레임으로 I 프레임과 P 프레임 사이에 껴서 양쪽 프레임을 모두 참조해 두 프레임 사이의 움직임을 예측하여 저장한 프레임입니다

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






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

1. 로컬 PC 에서 MP4 파일을 FFMpecg 을 사용해 MKV 파일로 트랜스 코딩 수행

  >> Aws Kvs Hls 파일 업로드를 위한 Codec 설정 중요 (video/h264,audio/aac)


2. 로컬 PC 에서 변경 된 MKV 파일을 Gstreamer 사용해 Aws Kvs HLS 에 라이브 스트리밍 업로드 수행

  >> 사전) Aws 연결 및 스트리밍 업로드를 위한 AccessKey, SecretKey 정보는 전달 받아야함

  >> 사전) 비디오 스트리밍 업로드 시 필요한 특정 StreamName 값도 전달 받아야함


3. Aws 콘솔 대시보드 사이트 접속 후 > Aws Kinesis Video Streams 메뉴 접속 수행

  >> Aws Kvs Hls 스트리밍을 재생할 수 있는 샘플 뷰어 프로그램을 사용해도 되지만, AWS 콘솔 대시보드에서 확인 진행


4. 비디오 스트림 메뉴 접속 후 > 특정 StreamName 선택 수행


5. 특정 디바이스 정보 화면에서 [미디어 재생] 버튼 클릭 후 > 실시간으로 동영상이 정상적으로 스트리밍 되고 있는지 확인

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






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

[android] Aws Kvs HLS PutMedia 스트리밍 동영상 업로드 로직 정리 - DataEndpoint, MKV , AWS4Signer

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


[Aws KVS PutMedia 비디오 스트림 전송 API 설명 정리]


[안드로이드 Aws HLS PutMedia API 호출에 필요한 GetDataEndpoint 호출 방법]

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


[Aws Signature Version 4] Aws SigV4 인증 및 서명 프로토콜 설명 - AWS4Signer API 호출 시 서명 사용

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


[안드로이드 Aws Kvs HLS 비디오 스트리밍 putMedia 호출 시 필요한 Signature V4 서명 방법]

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


[Aws KVS HLS MKV 파일 설명 - PutMedia API 스트리밍 업로드 시 전송 파일]

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


[업무 이슈] android 안드로이드 aws kvs hls 스트리밍 동영상 업로드 이슈 - mp4 파일 ffmpeg 트랜스코딩 mkv 파일 변환

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

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