투케이2K

4. (TWOK/STUDY) [투케이 학습] : AWS KVS (Kinesis Video Streams) WebRTC (실시간) 및 HLS (녹화) 영상 출력 학습 본문

투케이2K 학습정리

4. (TWOK/STUDY) [투케이 학습] : AWS KVS (Kinesis Video Streams) WebRTC (실시간) 및 HLS (녹화) 영상 출력 학습

투케이2K 2023. 7. 31. 08:29

[제 목]

[투케이 학습] : AWS KVS (Kinesis Video Streams) WebRTC (실시간) 및 HLS (녹화) 영상 출력 학습

 

[내용 정리]

 


====================================================

1. 영상을 재생하기 위해서는 사전 [영상] / [오디오] 각 코덱 확인 필요

====================================================

2. WebRTC 설명 : [Web Real-Time Communication]

  - WebRTC 란 웹, 애플리케이션, 디바이스 간 중간자 없이 오디오나 영상 미디어를 포착하고 실시간 스트림할 뿐 아니라, 임의의 데이터도 교환할 수 있도록 하는 기술입니다

  - WebRTC 는 간단한 API 를 통해 웹 브라우저, 모바일 애플리케이션 및 커넥티드 디바이스 간에 실시간 통신을 활성화하는 오픈 소스 프로젝트입니다

  - AWS KVS 는 WebRTC를 통한 실시간 미디어 스트리밍을 지원합니다

  - AWS KVS 에는 빠른 피어 (Peer) 검색 및 보안 연결 설정을 위한 WebRTC 신호 엔드포인트가 포함되어 있습니다

  - AWS WebRTC 엔드포인트에는 NAT (STUN) P2P 방식 같은 와이파이 망 다이렉트 연결 및 TURN (Traversal Utiling Rays around NAT) 릴레이 서버 경유 스트림 전달 방식 이 있습니다

  - STUN 방식으로 실시간 영상을 재생할 때는 별도의 스트림 비용이 없지만, TURN 방식으로 실시간 영상 재생 시에는 (분) 단위 기준으로 스트림 비용이 측정 됩니다

  - AWS WebRTC 실시간 영상 재생을 하기 위해서는 region (AWS 리젼) , clientId (클라이언트 아이디) , accessKeyId (실시간 영상 재생에 필요한 액세스 키) , secretAccessKey (실시간 영상 재생에 필요한 시크릿 키) , sessionToken (실시간 영상 재생에 필요한 세션 토큰) , channelARN (실시간 스트리밍 채널 ARN 주소) 값 등이 필요합니다

  - 로 직 : 
    >> 앱은 영상 재생에 필요한 region, clientId, accessKeyId, secretAccessKey, sessionToken, channelARN 정보 획득 필요
    >> App To Web 자바스크립트 브릿지 통신으로 데이터 전달
    >> Web 단에서 미디어 재생 권한 획득 수행
    >> Web 단에서 AWS.KinesisVideo 초기화 및 iceServers (STUN / TUN) 연결 정책 설정 후 SDP 오퍼 생성 및 마스터에게 전송
    >> 디바이스는 오퍼 신호를 받으면 스트림 영상 밀어 넣어 준다
    >> Web 단 비디오 플레이에서 실시간 출력 영상 확인

  - 참고 사이트 : 
    [기본 WebRTC 설명] : https://developer.mozilla.org/ko/docs/Web/API/WebRTC_API
    [AWS KVS WebRTC 설명] : https://aws.amazon.com/ko/about-aws/whats-new/2019/12/amazon-kinesis-video-streams-adds-support-for-real-time-two-way-media-streaming-with-webrtc/
    [AWS KVS 자바스크립트 사용해 WebRTC 적용] : https://docs.aws.amazon.com/kinesisvideostreams-webrtc-dg/latest/devguide/kvswebrtc-sdk-js.html
    [AWS KVS WebRTC 영상 재생 테스트 사이트] : https://awslabs.github.io/amazon-kinesis-video-streams-webrtc-sdk-js/examples/index.html
    [AWS KVS WebRTC 비디오 스트림 작동 방식] : https://docs.aws.amazon.com/kinesisvideostreams-webrtc-dg/latest/devguide/kvswebrtc-how-it-works.html
    [AWS KVS WebRTC 스트림 코덱] : https://github.com/awslabs/amazon-kinesis-video-streams-webrtc-sdk-c/tree/master/src/source/Rtp/Codecs

====================================================

3. HLS 란 (HTTP 라이브 스트리밍) 설명

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

  - HLS 는 Apple (iPhone, iPad 등) 에서 사용하는 표준 HTTP 기반 스트리밍 프로토콜 이며, 비디오 콘텐츠 스트리밍에 널리 사용되고 있습니다.
    >> HLS 스트리밍은 모바일 장치, 태블릿을 사용하여 스트리밍 콘텐츠를 볼 때 이상적입니다
    >> HLS 스트리밍은 HTML5 비디오 플레이어에 가장 적합 합니다 (모바일 하이브리브 제작 시 HTML5 사용)

  - HLS 동작 원리 : 
    >> 원시 입력 (카메라 = 비디오, 오디오) 을 가져와 미디어 전송 및 저장에 사용되는 압축된 스트림 생성
    >> 스트리밍 서버는 이 스트림을 일련의 작은 파일로 나눠 웹 서버에 배치
    >> 최종 사용자가 HLS 를 통해 웹 서버에 배치된 파일을 읽어 올바른 순서대로 스트림 재생 확인

  -  HLS 장점 : 
    >> 호환성 : 스마트폰, 태블릿, 노트북 등 다양한 장치에서 스트리밍된 콘텐츠 소비 가능
    >> 부드러운 재생 : 중단할 수 없는 방송 인 경우 품질을 희생하더라도 부드럽게 영상 재생 가능
    >> 비용 효율성 : HTTP 를 기반으로 하며, 어떤 장치에서도 확장할 필요 없이 콘텐츠 전송을 네트워크로 전달
    >> 보안 : Flash 와 같은 솔루션에 비해 더 안전한 프로토콜
    >> 확장성 : 전 세계 수백만명의 시청자를 지원

  -  HLS 단점 : 
    >> 높은 대기 시간 : 다른 스트리밍 프로토콜에 비해 대기 시간이 깁니다 (최대 30초 이상의 지연 발생 가능)
    >> 느린 인터넷 속도 : HLS 스트리밍은 지연 시간이 상대적으로 높기 때문에 비디오 게임, 스포츠 방송과 같이 빠른 라이브 스트리밍에는 적합하지 않음 (녹화 영상에 주로 사용)

  - HLS 와 다른 스트리밍 프로토콜 비교
    >> RTMP : 
        일반적인 스트리밍 프로토콜, 최신 브라우저가 Flash 에 대한 지원을 중단하고 있으므로 오늘날 사라지고 있음 
        카메라나 인코더에서 비디오 스트림을 캡처하기 위한 표준 프로토콜 이기 때문에 여전히 많은 방송사에서 사용

    >> MSS : 
        마이크로 소프트 Smooth Streaming 의미로, 마이크로 소프트 장치의 독점 기술이기 때문에 채택이 제한적 (게임 콘솔에서 많이 사용)

    >> MPEG-DASH : 
        최초의 HTTP 기반 국제 스트리밍 프로토콜로, 보편적으로 비디오를 재생하는 능력이 있습니다
        H.264 / H.265 / VP8.9 / AV1을 포함한 형식을 지원

  - 참고 사이트 : 
    [AWS HLS 재생 사용 코덱] : https://docs.aws.amazon.com/ko_kr/mediaconvert/latest/ug/reference-codecs-containers.html
    https://docs.aws.amazon.com/ko_kr/kinesisvideostreams/latest/dg/hls-playback.html
    https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/hls-playback.html
    https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_reader_GetHLSStreamingSessionURL.html 

====================================================


​

 

반응형
Comments