호우동의 개발일지

Today :


인터넷 비디오

  • 스트리밍 비디오 애플리케이션 → 미리 녹화된 비디오를 대상으로 한다.
  • 녹화된 비디오는 서버에 저장되어 사용자가 서버에게 온디맨드 요청을 통해 시청
    • 예 : 넷플릭스, 유튜브, 아마존, 틱톡 등 많은 인터넷 회사가 비디오 스트리밍 지원

 


비디오 매체의 특징

  • 비디오는 일반적으로 초당 24개 혹은 30개의 이미지로 일정한 속도로 표시
    • 비디오는 이미지의 연속이다.

  • 압축되지 않은 디지털 인코딩된 이미지는 픽셀 단위로 구성
    • 각 픽셀은 휘도와 색상을 나타내는 여러 비트들로 인코딩 됨

비디오의 중요 특징 - 압축 가능

  • 비디오 품질과 비트 전송률은 서로 반비례하다.
  • 현대 상용 압축 알고리즘은 원하는 모든 비트 전송률로 비디오 압축 가능
    • 비트 전송률이 높을수록 이미지 품질이 좋아지고 사용자 시청 환경이 향상

  • 압축을 이용하여 동일한 비디오를 여러 버전의 품질을 만들 수 있다.

비디오의 중요 특징 - 높은 비트 전송률

  • 네트워킹 측면에서의 두드러진 비디오 특징
  • 하이엔드(high-end) 동영상의 경우 트래픽과 스토리지 용량이 많이 필요
    • 압축된 인터넷 비디오는 고화질 스트리밍을 위해 100 kbps ~ 4 Mbps 이상이 구성
    • 4K 스트리밍 → 10 Mbps 이상의 비트 전송률이 필요하다고 예상됨

  • 스트리밍 비디오에서 가장 중요한 성능 척도 → 평균 종단 간 처리량
    • 네트워크는 압축된 비디오의 전송률 이상의 평균 처리량을 제공해야 함
      • 이는 연속재생을 제공하기 위함
      • 여기서의 평균 처리량은 스트리밍 애플리케이션에 대한 것

 


HTTP 스트리밍 및 DASH

  • HTTP 스트리밍에서의 비디오
    • HTTP 서버 내의 특정 URL을 갖는 일반적인 파일로 저장됨

 


사용자가 비디오 시청을 하는 과정

  1. 비디오 시청을 원하면 클라이언트는 서버에게 TCP 연결을 설립
  2. 해당 URL에 대한 HTTP GET 요청을 발생
  3. 서버가 HTTP 응답 메시지 내에서 비디오 파일을 전송
    • 비디오 전송을 위해 기본 네트워크 프로토콜 및 트래픽 조건이 허용되어야 한다.
      → 프로토콜 및 트래픽 조건이 허용되어야 HTTP 응답 메시지를 전송한다.

  4. 클라이언트 쪽에서는 애플리케이션 버퍼에 전송된 바이트가 저장된다.
  5. 이 버퍼의 바이트 수가 설정된 임계값(threshold)을 초과할 경우
    → 클라이언트 애플리케이션이 재생을 시작함

    • 비디오 어플은 클라이언트 어플 버퍼에서 주기적으로 비디오 프레임을 가져옴
      → 가져온 비디오 프레임을 압축해제한 다음 사용자의 화면에 표시

      • 비디오 스트리밍 어플은 비디오의 후반 부분에 해당하는
        프레임을 수신하고 버퍼링 할 때 비디오를 표시한다.

 


DASH(Dynamic Adaptive Streaming over HTTP)

HTTP 스트리밍 문제점

  • 모든 클라이언트가 똑같이 인코딩 된 비디오를 전송받음
    • 클라이언트들 사이의 가용 대역폭 차이에 상관없이 모두 같음
    • 가용 대역폭 차이는 동일한 클라이언트에서도 시간에 따른 차이가 발생함
      위 문제점으로 인해 새로운 형태의 HTTP 기반 스트리밍 DASH가 개발

 

DASH의 개념

  • DASH에서 비디오는 여러 가지 버전으로 인코딩 된다.
    • 각 버전은 비트율과 품질 수준이 서로 다르다.

  • 클라이언트는 동적으로 서로 다른 버전의 비디오를 비디오 조각(chunk) 단위로 요청
    • chunk(비디오 조각) : 몇 초 분량의 길이를 갖는 것
    • 클라이언트는 HTTP GET 요청을 이용해 다른 버전의 비디오 조각을 매번 선택

  • 가용 대역폭이 충분할 때 → 높은 비트율의 비디오 버전을 요청
  • 가용 대역폭이 적을 때 → 낮은 비트율의 비디오 버전 요청

 

DASH를 이용한 통신의 특성

  • 서로 다른 인코딩률을 갖는 비디오를 선택할 수 있게 함
    • 이는 서로 다른 인터넷 접속 회선을 가진 클라이언트들에게 필요한 것
      • 예시 : 서로 다른 인터넷 접속 회선을 가진 클라이언트가 통신할 때
        • 저속의 3G 연결을 갖는 클라이언트 → 낮은 품질의 비디오를 받음
        • 고속의 광섬유 연결을 갖는 클라이언트 → 높은 품질의 비디오를 받음

  • 클라이언트에게 세션 유지 중, 시간에 따라 변화하는 종단 간 가용 대역폭 적응을 허용
    • 이동 사용자에게는 특히 중요한 특성
      ← 이동 중에는 접속 기지국 상황에 따라 가용 대역폭이 자주 변하기 때문

매니페스트 파일(manifest file)

  • 매니페스트 파일 : HTTP 서버에 있고, 비트율에 따른 각 버전의 URL을 제공하는 역할
    • DASH를 사용할 때, 각 비디오 버전은 HTTP 서버에 서로 다른 URL을 가지고 저장됨

  1. 클라이언트는 먼저 매니페스트 파일을 요청
    → 서버에서 제공되는 다양한 버전에 대해 알 수 있음

  2. 클라이언트는 원하는 버전의 chunk 데이터를 선택
  3. 이후, HTTP GET 요청 메시지와 URL과 byte-range를 지정하여 요청
  4. chunk 데이터를 다운로드하는 동안, 클라이언트는 다음에 선택할 chunk 데이터의 버전을 결정
    • 다음 버전 결정에는 측정된 수신 대역폭과 비트율 결정 알고리즘을 이용
      • 충분한 분량의 버퍼링 된 비디오와 측정된 수신 대역폭이 큰 경우
        → 고품질의 chunk 데이터를 선택

      • 적은 분량의 버퍼링 된 비디오와 수신 대역폭이 작은 경우
        → 낮은 품질의 chunk 데이터를 선택
        DASH는 클라이언트가 서로 다른 품질 수준을 자유롭게 변화시킬 수 있도록 함