Skip to content

HashCitrine/testLiveVideoStreamingService

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Live Video Streaming Service 기술 스택 정리

  • 실시간 인터넷 방송에 사용될만한 기술 스택 내용 정리

연관 개념 정리

1. Codec

  • 데이터 스트림을 En/Decoding 하는 기술, 소프트웨어
  • 효율적인 데이터 전송 및 보관을 위해 데이터 열화를 감안한 손실 방식(MP3, JPEG, H.264 등)과 원본의 품질을 해치지 않기 위한 비손실 방식(FLAC, PNG, HuffYUV 등)이 있음

2. MPEG(Moving Picture Experts Group)

  • ISO, IEC 산하의 멀티미디어 표준 개발 담당 그룹
  • 비디오 데이터에서 많이 사용되는 H.264(MPEG-4 AVC)와 같은 표준을 정의함

3. FFMPEG

  • 비디오, 오디오의 En/Decoding, Transcoding 등 멀티미디어 파일 처리를 위한 오픈 소스 프로젝트이자 툴
  • 무료로 제공되며 멀티 플랫폼 환경에서 이용 가능

4. RTMP (Real Time Message Protocol)

  • 2009년 발표된 Adobe Flash에 이용하기 위한 오디오, 비디오 데이터 실시간 통신 프로토콜
  • TCP/IP 기반이며 많은 스트리밍 서비스에서 라이브 서비스를 위해 이용되고 있음
  • 2020년 Adobe Flash가 공식 지원 종료되며 직접 이용자에게 데이터를 전달하는 용도로는 사용되지 않는 추세

5. HLS (HTTP Live Streaming)

HLS

  • 2009년 Apple에서 발표한 HTTP 기반 적응 비트레이트 스트리밍 통신 프로토콜
  • 비디오 데이터를 .m3u8 확장자로 된 재생목록을 기록한 파일과 .ts 확장자의 여러 개의 멀티미디어 파일로 분할하여 스트리밍에 이용
  • Apple 제품에서 호환되는 유일한 스트리밍 포로토콜이며 기타 환경에서는 HLS Player를 통해 재생 가능
  • 전송에 이용할 비디오 데이터의 경우 H.264, H.265 Encoding 이용 필요 (참조)

6. DASH (Dynamic Adaptive Streaming over HTTP)

  • 2014년 MPEG에서 정의한 국제 표준 HTTP 기반 적응 비트레이트 스트리밍 통신 프로토콜
  • 비디오 데이터를 .mpd 확장자의 스트리밍 메타데이터 파일과 여러 개의 .m4a, m4v 파일로 분할하여 스트리밍에 이용
    (.mpd파일이 HLS의 .m3u8의 역할 / .m4a 파일은 AAC Codec의 음성 파일 / m4v 파일은 H.264 Codec의 비디오 파일)
  • 국제 표준인만큼 HLS와 달리 다양한 인코딩에 대응할 수 있음

7. CDN (Content Delivery Network)

  • 효율적인 컨텐츠(데이터) 전송을 위해 캐시 서버를 이용하는 기술
  • 주로 물리적으로 먼 거리의 사용자에게 서비스를 제공하기 위해 사용

구현해본 부분

  1. HLS Player : hls.htmlhls.js 예제를 이용하여 구성
  2. Encoder : FFMPEG를 이용해 RTMP를 통해 전달 받은 데이터를 Encoding하는 서비스 생성
    (HLS : go, spring, nginx / DASH : nginx)
  3. HLS : Encoder를 통해 생성된 파일을 HLS Player로 전달하여 재생 가능 여부 테스트(go, spring)
  4. RTMP Server : Nginx RTMP Plugin을 이용하여 RTMP 서버(참조)를 띄우고 OBS와 연결 가능 여부 테스트
  5. Dash Player : dash.htmldash.js 예제를 이용하여 구성

예상 서비스 논리 구성

img
실시간 스트리밍 서비스에 필요할 것으로 예상되는 개념을 정리하여 예상해본 논리적인 서비스 구성 예상도

실제 서비스는 Web 및 Mobile UI, UI API 등도 포함이 되어 있을 것으로 생각되며
운영상의 이유 혹은 분산 처리의 목적으로 각 서비스들이 더욱 세부적인 단위로 분리되어 있을 수 있으나

실시간 인터넷 방송에 초점을 맞춰 간략하게 구성함

  1. Web Service : 실시간 영상 수신 및 송출에 필요한 웹 서비스
    • Streamer로부터 RTMP 요청을 통해 영상 수신
    • 영상을 Viewer에게 HLS로 송출
    • 수신 및 송출을 담당하는 서비스는 분리하여 각자 구성할 수 있음
    • 트래픽 부하 분산을 위한 캐시 서버 구성이 필요할 수 있음
  2. Middleware : 시스템 전반을 관리하는 서비스
    • 각 서비스간 처리 연계 Interface(Message Queue나 In-Memory DB 등을 이용할 수 있음)
    • Logging, Monitoring 서비스와 연계하여 시스템 현황 기록 및 관리(ELK 등을 이용할 수 있음)
  3. Encoder : 영상 데이터 Encoding 서비스
    • RTMP로 수신 받은 영상 데이터를 HLS 및 DASH 응답에 이용할 수 있는 형태로 Encoding
      (HLS : .3m8u + .ts / DASH : .m4a + .m4v)
    • 영상 데이터를 VOD 서비스용 Codec으로 Encoding
    • Encoding 처리된 영상은 NFS나 Object Storage 등에 저장하여 데이터를 이용하는 서비스에서 접근하는 방식으로 처리할 수 있음
  4. Broadcast Service : 방송 진행과 시청에 필요한 요청 처리
    • Streamer가 방송 정보 변경 시 Viewer의 화면에도 반영
    • 채팅 서비스
    • Viewer가 구독, 후원 시 해당 정보를 Streamer의 방송 시스템에 전달

P2P (Peer-to-Peer)

  • 서비스 공급자(중앙)로부터 데이터를 제공 받는 것이 아닌, 서비스 이용자(Peer)끼리 서로 통신하여 필요한 데이터를 주고 받는 형태
  • 국내에서 스트리밍 서비스 시 네트워크 이용을 분산하기 위해 P2P 시스템을 대부분 도입하고 있음
  • 주의사항
    1. Peer 간의 데이터 공유를 위해 서로의 위치(IP)가 식별되어야 함 (보안 문제)
    2. Peer의 수가 적은 경우, 효용성이 떨어짐

BitTorrent

BitTorrent

  • 가장 대표적인 P2P 프로토콜이자 동명의 서비스
  • 공유할 데이터를 조각(Piece)으로 나누어 Peer에게 공유
  • Seeder : 데이터의 모든 조각을 가진 Peer
  • Leecher : 데이터의 일부 조각을 가진 Peer
  • Tracker : 파일 공유를 일으키는 중앙 서버로, 공유 대상인 Peer 목록과 공유 파일 고유 식별자인 Hash 값으로 구성된 정보(Swarm)를 관리함

IPFS (InterPlanetary File System)

IPFS Stack

  • 분산형 파일 시스템에 데이터를 저장하고 네트워크를 통해 공유하기 위해 고안된 P2P용 프로토콜
  • 기반 기술
    1. DHT (Distributed Hash Tables) : 네트워크에 참여한 노드들이 Hash Table을 각자 관리하여, 중앙 서버 없이 P2P 네트워크 형성
    2. BitTorrent : P2P 파일 공유 프로토콜
    3. Merkle DAG (Merkle Directed Acyclic Graphs) : IPFS에서 이용되는 데이터에 적용되는 자료 구조 Merkle DAG
      • Merkle Tree에서 DAG로 확장된 자료 구조로, Leaf(말단) 노드만 실제 데이터를 가지고 있던 Tree 구조에서 모든 노드들이 데이터를 가지는 형태가 되었음
      • 부모 노드가 자식 노드의 해시값으로 구성되는 점으로 인해, 아래의 특징을 가짐
        1. 위변조가 불가(위변조 시 Root 노드의 해시값이 변경됨)
        2. 모든 노드가 사실��� 연결된 구조(해시값)
        3. 자체적으로 무결성 확인 가능(Multi hash Checksum)
        4. 같은 데이터는 같은 해시값을 가지므로 데이터 중복 불가
    4. SFS (Self-certified FileSystems) : IPFS의 name system인 IPNS의 기반 기술 SFS
      • IPFS를 이용하기 위한 주소 자체에 공개키로 해시화된 값을 사용하여, 자체적으로 공유 위치(서버) 식별이 가능

기타

HTTP/3

  • HTTP-over-QUIC : Quick UDP Internet Connections
  • 기존의 TCP 기반 연결에서 UPD 기반으로 변경
  • 인터넷 사용 환경이 PC에서 모바일 환경으로 이동하면서
    네트워크 연결 상황이 연속적이지 않게 되며 이로 인해 매 연결을 유지하는 TCP보다 UDP 이용이 유리해짐
  • 또한 네트워크 연결 변동 상황에서 기존의 HTTP 연결에 비해 간략한 Handshake 과정을 통해 빠른 시간 안에 네트워크 서비스 연결을 복원할 수 있음
    → Zero Round Trip Time : 최초 연결(Handshake) 시에만 1번의 연결 인증을 위한 네트워크 통신 왕복이 일어나고, 이후 재연결 시에는 Cache된 연결 정보를 이용해 네트워크 통신 왕복 없이 네트워크 재연결 가능 Zero-RTT

참조