wanna be dev 🧑‍💻

Cool 하고 Sick한 개발자가 되고 싶은 uzun입니다

A.K.A. Kick-snare, hyjhyj0901, h_uz99 solvedac-logo

Computer Science/Computer Network

📡 [Network] 어플리케이션층 - 비디오 스트리밍 (비디오 인코딩 CBR, VBR, DASH 프로토콜)

Kick_snare 2022. 10. 6. 22:47
728x90

본 포스팅은 < 컴퓨터 네트워킹 하향식 접근[8판] James F. Kurose, Keith W. Ross 저/최종원, 강현국, 김기태 > 을 참고하여 작성되었습니다.

Ch02 Application Layer

6. Video Streaming

: 비디오 스트리밍과 콘텐츠 분배 네트워크

비디오 스트리밍

  • 비디오 스트리밍은 인터넷 대역폭의 주요 소비자
    • youtube, netflix, amazon prime 등은 ISP 트래픽의 80% 차지 (2020)
  • 1백만 유저?
  • 이종성 (heterogeneity)

➡️ 분산, 어플리케이션 레벨의 인프라

VIDEO 비디오

  • 비디오는 일련의 디지털 이미지들이 고정된 속도로 나열되는 것
    • 디지털 이미지는? ➡️ 미세한 픽셀들의 배열 - 비트로 표현됨

  • 이미지 인코딩 : 모든 색상 등의 정보가진 비트맵 이미지 파일을 압축하여 사용
    • Spatial : 픽셀 근처의 유사한 픽셀들을 합쳐서 압축
    • Temporal : 인접 프레임 (이미지)와 유사점을 이용하여 압축
  • 비디오 인코딩
    • CBR (constant bit rate)
      • 처음부터 끝까지 동일한 bit rate를 사용하여 영상을 압축
      • 정적인 영상에는 낭비동적인 영상에서는 화질 저하
      • bit rate가 고정이기 떄문에 예측하기 쉬움
    • VBR (variable bit rate)
      • bit rate가 상황에 따라 달라진다.
      • 영상 변화가 클때는 높게 정적일때는 bit rate를 낮게 가져간다.
      • 순간적으로 네트워크에 과부화 되므로 네트워크 입장에서는 쉽지않다 (max bit rate를 정해둠)

  • 이상적인 네트워크로 영상을 스트리밍하는 것은 위와 같다
  • 하지만 여러 문제(도전과제) 가 존재
    • 네트워크 지연이 발생한다면? (버퍼링)
    • 클라이언트가 영상을 중지 한다면?
    • 비디오 패킷이 도중에 손실된다면?

DASH : 스트리밍 프로토콜

  • HTTP를 사용하는 동적이고 적응형 영상 스트리밍 프로토콜
  • 네트워크 상황에 따른 클라이언트에게 다양한 화질을 제공
    • manifest 파일 : 서버가 가지고 있는 화질들의 리스트 (URL)
    • 클라이언트는 manifest를 보고 서버와의 대역폭등을 측정하여 동적으로 영상을 요청
  • 대부분의 결정은 클라이언트에서 이루어짐
    • 언제 chunk(특정 화질의 동영상 덩어리) 요청을 할 것인가?
    • 어떤 enconding rate (화질)요청 할 것 인가?
    • 서버가 여러대 있을떄 어디로 요청할 것 인가?

스트리밍 비디오 = 비디오 인코딩 + DASH + 버퍼링

728x90