KR101514128B1 - 콘텐츠 제공 장치 및 방법 - Google Patents

콘텐츠 제공 장치 및 방법 Download PDF

Info

Publication number
KR101514128B1
KR101514128B1 KR1020130061129A KR20130061129A KR101514128B1 KR 101514128 B1 KR101514128 B1 KR 101514128B1 KR 1020130061129 A KR1020130061129 A KR 1020130061129A KR 20130061129 A KR20130061129 A KR 20130061129A KR 101514128 B1 KR101514128 B1 KR 101514128B1
Authority
KR
South Korea
Prior art keywords
content
bit rate
encoding
client
encoding parameter
Prior art date
Application number
KR1020130061129A
Other languages
English (en)
Other versions
KR20140140364A (ko
Inventor
이경승
박민아
Original Assignee
삼성에스디에스 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성에스디에스 주식회사 filed Critical 삼성에스디에스 주식회사
Priority to KR1020130061129A priority Critical patent/KR101514128B1/ko
Publication of KR20140140364A publication Critical patent/KR20140140364A/ko
Application granted granted Critical
Publication of KR101514128B1 publication Critical patent/KR101514128B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
    • G06Q50/10Services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/80Responding to QoS
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W28/00Network traffic management; Network resource management
    • H04W28/02Traffic management, e.g. flow control or congestion control
    • H04W28/06Optimizing the usage of the radio link, e.g. header compression, information sizing, discarding information

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Business, Economics & Management (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Multimedia (AREA)
  • Tourism & Hospitality (AREA)
  • General Health & Medical Sciences (AREA)
  • Economics (AREA)
  • Health & Medical Sciences (AREA)
  • Human Resources & Organizations (AREA)
  • Marketing (AREA)
  • Primary Health Care (AREA)
  • Strategic Management (AREA)
  • Physics & Mathematics (AREA)
  • General Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

콘텐츠 제공 장치 및 방법이 개시된다. 본 발명의 일 실시예에 따른 콘텐츠 제공 장치는, 콘텐츠를 요청한 클라이언트의 네트워크 상태에 따른 가용 비트레이트(Bitrate)를 계산하는 단대단 상황 판단부, 상기 콘텐츠의 특징 정보에 기초하여, 상기 가용 비트레이트 내에서 상기 콘텐츠의 프레임 별 인코딩 파라미터(Encoding Parameter)를 계산하는 콘텐츠 판단부, 및 계산된 상기 인코딩 파라미터에 따라 상기 콘텐츠를 인코딩하는 인코딩부를 포함한다.

Description

콘텐츠 제공 장치 및 방법{APPARATUS AND METHOD FOR PROVIDING CONTENTS}
본 발명의 실시예들은 네트워크상에서 콘텐츠를 스트리밍하기 위한 기술과 관련된다.
최근 들어, 네트워크를 통한 콘텐츠, 특히 영상 콘텐츠의 스트리밍이 보편화되면서 이와 관련된 기술 또한 다양한 관점에서 연구가 진행되고 있다. 초기의 콘텐츠 스트리밍의 경우 기 저장된 데이터를 네트워크 상황 등을 고려하지 않고 단순히 실시간으로 전송하는 수준이었으나, 모바일 생태계가 형성되고 보다 다양한 컨텐츠로 스트리밍 서비스 영역이 확장됨에 따라, 다양한 유저층과 단말단의 상황을 반영할 수 있는 스트리밍 서비스를 제공할 필요성이 증가하고 있다.
그러나 종래의 스트리밍 서비스의 경우 네트워크의 가용대역폭에 맞춰 특정 비트레이트로 미리 인코딩된 컨텐츠를 전송하거나, 또는 모든 컨텐츠에 동일한 인코딩 파라미터를 일률적으로 적용하고 이를 가용대역폭에 따라 나누어 전송하는 등 기 설정된 기준을 기계적으로 적용하는 데 그치고 있을 뿐으로, 다양한 컨텐츠와 단말 환경에 따른 최적의 스트리밍 콘텐츠를 제공하는 데에는 한계가 존재하였다.
본 발명의 실시예들은 콘텐츠의 종류, 네트워크 상태 및 단말 환경을 종합적으로 고려한 최적의 인코딩 파라미터를 도출하기 위한 것이다.
본 발명의 일 실시예에 따른 콘텐츠 제공 장치는, 콘텐츠를 요청한 클라이언트의 네트워크 상태에 따른 가용 비트레이트(Bitrate)를 계산하는 단대단 상황 판단부, 상기 콘텐츠의 특징 정보에 기초하여, 상기 가용 비트레이트 내에서 상기 콘텐츠의 프레임 별 인코딩 파라미터(Encoding Parameter)를 계산하는 콘텐츠 판단부, 및 계산된 상기 인코딩 파라미터에 따라 상기 콘텐츠를 인코딩하는 인코딩부를 포함한다.
상기 단대단 상황 판단부는, 상기 네트워크 상태로부터 도출되는 상기 클라이언트의 가용대역폭에 따라 상기 가용 비트레이트를 계산할 수 있다.
상기 단대단 상황 판단부는, 상기 클라이언트가 연결된 네트워크의 종류에 따라 초기 비트레이트를 설정할 수 있다.
상기 단대단 상황 판단부는, 상기 장치 및 상기 클라이언트 간의 라운드트립 타임 및 상기 클라이언트의 버퍼 오버플로우/언더플로우 예측 시간에 따라 상기 가용 비트레이트를 보정할 수 있다.
상기 단대단 상황 판단부는, 상기 클라이언트로부터 버퍼 언더플로우 예측 시간이 수신되는 경우, 수신된 상기 버퍼 언더플로우 예측 시간과 상기 라운드트립 타임의 크기를 비교하고, 상기 버퍼 언더플로우 예측 시간이 상기 라운드트립 타임보다 작은 경우 상기 가용 비트레이트를 기 설정된 비율만큼 감소시킬 수 있다.
상기 단대단 상황 판단부는, 상기 클라이언트로부터 버퍼 오버플로우 예측 시간이 수신되는 경우, 수신된 상기 버퍼 오버플로우 예측 시간과 상기 라운드트립 타임의 크기를 비교하고, 상기 버퍼 오버플로우 예측 시간이 상기 라운드트립 타임보다 작은 경우 상기 가용 비트레이트를 기 설정된 비율만큼 증가시킬 수 있다.
상기 콘텐츠의 특징 정보는, 상기 콘텐츠의 화면복잡도, 종류, 카테고리, 또는 사용자 선호도 중 어느 하나일 수 있다.
상기 콘텐츠 판단부는, 상기 콘텐츠의 현재 인코딩 대상 프레임의 직전 프레임의 화면복잡도를 이용하여 상기 현재 인코딩 대상 프레임의 인코딩 파라미터를 계산할 수 있다.
상기 인코딩 파라미터는, 양자화 파라미터(QP; Quantization Parameter) 및 초당 프레임수(FPS; Frames Per Second)를 포함할 수 있다.
상기 콘텐츠 판단부는, 복수 개의 인코딩 파라미터 테이블 중, 상기 직전 프레임의 화면복잡도에 대응되는 하나의 인코딩 파라미터 테이블을 선택하고, 상기 가용 비트레이트에 기초하여, 선택된 인코딩 파라미터 테이블에 기록된 인코딩 파라미터 중 하나의 인코딩 파라미터를 선택할 수 있다.
상기 콘텐츠 판단부는, 선택된 인코딩 파라미터에 따라 인코딩된 프레임의 실제 비트레이트를 이용하여 상기 선택된 인코딩 파라미터 테이블을 업데이트할 수 있다.
상기 콘텐츠 판단부는, 상기 현재 인코딩 대상 프레임 이전 N개(N은 1 이상의 자연수) 프레임 각각의 계산된 화면복잡도가 기 설정된 임계치를 초과하는 경우, 현재 인코딩 대상 프레임의 양자화 파라미터 또는 초당 프레임수 중 하나 이상을 보정할 수 있다.
상기 콘텐츠 판단부는, 상기 가용 비트레이트 범위 내에서 상기 초당 프레임수가 증가되도록 상기 양자화 파라미터 또는 상기 초당 프레임수 중 하나 이상을 보정할 수 있다.
한편 본 발명의 일 실시예에 따른 콘텐츠 제공 장치에서의 콘텐츠 제공 방법은, 단대단 상황 판단부에서 콘텐츠를 요청한 클라이언트의 네트워크 상태에 따른 가용 비트레이트(Bitrate)를 계산하는 단계, 콘텐츠 판단부에서 상기 콘텐츠의 특징 정보에 기초하여, 상기 가용 비트레이트 내에서 상기 콘텐츠의 프레임 별 인코딩 파라미터(Encoding Parameter)를 계산하는 단계, 및 인코딩부에서, 계산된 상기 인코딩 파라미터에 따라 상기 콘텐츠를 인코딩하는 단계를 포함한다.
상기 가용 비트레이트를 계산하는 단계는, 상기 네트워크 상태로부터 도출되는 상기 클라이언트의 가용대역폭에 따라 상기 가용 비트레이트를 계산할 수 있다.
상기 가용 비트레이트를 계산하는 단계는, 상기 클라이언트가 연결된 네트워크의 종류에 따라 초기 비트레이트를 설정하는 단계를 더 포함할 수 있다.
상기 가용 비트레이트를 계산하는 단계는, 상기 장치 및 상기 클라이언트 간의 라운드트립 타임 및 상기 클라이언트의 버퍼 오버플로우/언더플로우 예측 시간에 따라 상기 가용 비트레이트를 보정하는 단계를 더 포함할 수 있다.
상기 가용 비트레이트를 보정하는 단계는, 상기 클라이언트로부터 버퍼 언더플로우 예측 시간이 수신되는 경우, 수신된 상기 버퍼 언더플로우 예측 시간과 상기 라운드트립 타임의 크기를 비교하고, 상기 버퍼 언더플로우 예측 시간이 상기 라운드트립 타임보다 작은 경우 상기 가용 비트레이트를 기 설정된 비율만큼 감소시키도록 구성될 수 있다.
상기 가용 비트레이트를 보정하는 단계는, 상기 클라이언트로부터 버퍼 오버플로우 예측 시간이 수신되는 경우, 수신된 상기 버퍼 오버플로우 예측 시간과 상기 라운드트립 타임의 크기를 비교하고, 상기 버퍼 오버플로우 예측 시간이 상기 라운드트립 타임보다 작은 경우 상기 가용 비트레이트를 기 설정된 비율만큼 증가시키도록 구성될 수 있다.
상기 콘텐츠의 특징 정보는, 상기 콘텐츠의 화면복잡도, 종류, 카테고리, 또는 사용자 선호도 중 어느 하나일 수 있다.
상기 인코딩 파라미터를 계산하는 단계는, 상기 콘텐츠의 현재 인코딩 대상 프레임의 직전 프레임의 화면복잡도를 이용하여 상기 현재 인코딩 대상 프레임의 인코딩 파라미터를 계산할 수 있다.
상기 인코딩 파라미터는, 양자화 파라미터(QP; Quantization Parameter) 및 초당 프레임수(FPS; Frames Per Second)를 포함할 수 있다.
상기 인코딩 파라미터를 계산하는 단계는, 복수 개의 인코딩 파라미터 테이블 중, 상기 직전 프레임의 화면복잡도에 대응되는 하나의 인코딩 파라미터 테이블을 선택하는 단계, 및 상기 가용 비트레이트에 기초하여, 선택된 인코딩 파라미터 테이블에 기록된 인코딩 파라미터 중 하나의 인코딩 파라미터를 선택하는 단계를 포함할 수 있다.
상기 인코딩 파라미터를 계산하는 단계는, 선택된 인코딩 파라미터에 따라 인코딩된 프레임의 실제 비트레이트를 이용하여 상기 선택된 인코딩 파라미터 테이블을 업데이트하는 단계를 더 포함할 수 있다.
상기 인코딩 파라미터를 계산하는 단계는, 상기 현재 인코딩 대상 프레임 이전 N개(N은 1 이상의 자연수) 프레임 각각의 계산된 화면복잡도가 기 설정된 임계치를 초과하는 경우, 상기 상기 가용 비트레이트 범위 내에서 현재 인코딩 대상 프레임의 양자화 파라미터 또는 초당 프레임수 중 하나 이상을 보정하는 단계를 더 포함할 수 있다.
상기 보정하는 단계는, 상기 가용 비트레이트 범위 내에서 상기 초당 프레임수가 증가되도록 상기 양자화 파라미터 또는 상기 초당 프레임수 중 하나 이상을 보정할 수 있다.
본 발명의 실시예들에 따를 경우, 콘텐츠 자체의 특성, 서버와 단말 사이의 네트워크 상태 및 단말의 처리 환경을 종합적으로 고려하여 최적의 인코딩 파라미터를 도출하고 그에 따라 콘텐츠의 인코딩을 수행함으로써 단말의 상황에 맞는 최적의 콘텐츠를 제공할 수 있는 장점이 있다.
또한, 본 발명의 실시예들에 따를 경우 콘텐츠의 스트리밍 중 발생되는 환경 변화에 따라 적응적으로 인코딩 파라미터를 변경함으로써 상기 환경 변화에 능동적으로 대처할 수 있는 장점이 있다.
도 1은 본 발명의 일 실시예에 따른 콘텐츠 제공 시스템(100)의 구성을 설명하기 위한 블록도이다.
도 2는 본 발명의 일 실시예에 따른 콘텐츠 제공 서버(102)의 상세 구성을 나타낸 블록도이다.
도 3은 본 발명의 일 실시예에 따른 클라이언트(104)의 상세 구성을 나타낸 블록도이다.
도 4는 본 발명의 일 실시예에 따른 콘텐츠 제공 서버(102)에서의 콘텐츠 인코딩 방법(400)을 설명하기 위한 순서도이다.
도 5는 도 4에 도시된 콘텐츠 인코딩 방법(400) 중 인코딩 파라미터 설정 과정(410)을 상세히 설명하기 위한 순서도이다.
도 6은 본 발명의 일 실시예에 따른 인코딩 데이터베이스를 설명하기 위한 예시도이다.
이하, 도면을 참조하여 본 발명의 구체적인 실시형태를 설명하기로 한다. 그러나 이는 예시에 불과하며 본 발명은 이에 제한되지 않는다.
본 발명을 설명함에 있어서, 본 발명과 관련된 공지기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략하기로 한다. 그리고, 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
본 발명의 기술적 사상은 청구범위에 의해 결정되며, 이하의 실시예는 본 발명의 기술적 사상을 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 효율적으로 설명하기 위한 일 수단일 뿐이다.
도 1은 본 발명의 일 실시예에 따른 콘텐츠 제공 시스템(100)의 구성을 설명하기 위한 블록도이다. 도시된 바와 같이, 본 발명의 일 실시예에 따른 콘텐츠 제공 시스템(100)은 콘텐츠 제공 서버(102) 및 클라이언트(104)를 포함한다.
콘텐츠 제공 서버(102)는 클라이언트(104)로부터 콘텐츠 제공 요청을 수신하고, 상기 콘텐츠 제공 요청에 따라 콘텐츠를 실시간으로 인코딩하여 클라이언트(104)로 제공한다. 본 발명의 실시예들에서, 콘텐츠 제공 서버(102)는 콘텐츠를 요청한 클라이언트(104)의 네트워크 상태, 클라이언트(104)측 버퍼 상태 및 상기 콘텐츠의 특성 등에 따라 상기 콘텐츠의 인코딩을 위한 인코딩 파라미터를 동적으로 조절하도록 구성된다. 이때 상기 인코딩 파라미터의 조절은 상기 콘텐츠를 구성하는 매 프레임 단위, GOP(Group of Pictures) 단위 또는 기 설정된 프레임 간격 단위로 이루어질 수 있다.
클라이언트(104)는 콘텐츠 제공 서버(102)로 콘텐츠 제공을 요청하고, 콘텐츠 제공 서버(102)로부터 스트리밍되는 콘텐츠를 디코딩하여 사용자에게 제공한다. 또한 클라이언트(104)는 콘텐츠 제공 서버(102) 측에서 인코딩 파라미터를 조절하기 위하여 필요한 정보를 콘텐츠 제공 서버(102)로 제공한다. 이때 제공되는 상기 정보는 예를 들어, 클라이언트(104)가 연결된 네트워크와 관련된 정보 및 클라이언트(104) 내부의 버퍼 상태와 관련된 정보 등을 포함할 수 있다.
한편, 콘텐츠 제공 서버(102) 및 클라이언트(104)는 네트워크(106)를 통하여 연결되어 서로 메시지를 송수신하도록 구성된다. 본 발명의 실시예들에서 네트워크(106)란 단말 사이의 패킷 데이터 송수신을 매개하기 위한 장치 또는 장치들의 집합을 의미하는 것으로서, LTE망, 3G망, GSM망 등의 이동통신망, 유무선 인터넷망 등 본 기술분야에서 일반적으로 사용되는 모든 종류의 통신망을 포함할 수 있다.
도 2는 본 발명의 일 실시예에 따른 콘텐츠 제공 서버(102)의 상세 구성을 나타낸 블록도이다. 도시된 바와 같이, 본 발명의 일 실시예에 따른 콘텐츠 제공 서버(102)는 메시지 송수신부(200), 네트워크 측정부(202), 단대단 상황 판단부(204), 콘텐츠 판단부(206) 및 인코딩부(208)를 포함한다.
메시지 송수신부(200)는 네트워크(106)를 통하여 클라이언트(104)와 메시지를 송수신한다. 예를 들어, 메시지 송수신부(200)는 클라이언트(104)로부터 콘텐츠 제공 요청을 수신하고, 상기 콘텐츠 제공 요청에 따라 인코딩된 콘텐츠를 클라이언트(104)로 전송할 수 있다. 또한, 메시지 송수신부(200)는 클라이언트(104)의 네트워크 상태 또는 버퍼 상태와 관련된 정보를 수신하여 후술할 네트워크 측정부(202) 또는 단대단 상황 판단부(204) 등에 제공할 수 있다. 이를 위하여, 메시지 송수신부(200)는 네트워크(106) 상에서의 패킷 데이터 송수신을 위한 적절한 하드웨어 및 소프트웨어를 구비하도록 구성될 수 있다.
네트워크 측정부(202)는 콘텐츠를 요청한 클라이언트(104)의 네트워크 상태를 측정하고 이로부터 클라이언트(104)의 가용대역폭을 계산한다. 이때 상기 네트워크 상태는 클라이언트(104)가 연결된 네트워크(104)의 지터(Jitter), 딜레이, 패킷유실률, RTT(Round Trip Time) 또는 클라이언트(104)의 버퍼 상태 등의 정보를 의미한다.
네트워크 측정부(202)는 클라이언트(104)와의 통신을 통하여 상기 네트워크 상태를 측정할 수 있다. 예를 들어, RTT의 경우 클라이언트(104)로 프로브 패킷을 송신하고 상기 프로브 패킷에 대한 응답 패킷의 시간차를 계산함으로써 측정될 수 있다. 다만 본 발명의 실시예들은 특정한 네트워크 상태 측정 방식에 한정되는 것은 아니며, 필요에 따라 네트워크 상태의 측정을 위하여 본 기술분야에서 알려진 다양한 방법들을 이용할 수 있다. 예를 들어, 전술한 RTT의 경우에도 프로브 패킷을 이용한 액티브 방식 이외에, 기존에 전송되는 패킷들의 시간 정보를 이용한 패시브 방식 또한 이용 가능하다. RTT 이외의 다른 네트워크 상태 정보들도 본 기술분야에서 알려진 다양한 방법들을 적용하여 측정될 수 있다.
또한, 본 발명의 실시예에서 가용대역폭은 예를 들어, Available Bandwidth 또는 Achievable Throughput 등 클라이언트(104)가 연결된 네트워크(106)에서 이용 가능한 네트워크 용량을 의미하는 값으로 정의될 수 있다.
다음으로, 단대단 상황 판단부(204)는 네트워크 측정부(202)에서 계산된 상기 네트워크 상태 및 가용대역폭을 이용하여 콘텐츠 인코딩을 위한 가용 비트레이트(Bitrate)를 계산한다. 단대단 상황 판단부(204)는, 네트워크 측정부(202)에서 측정한 상기 네트워크 상태로부터 도출되는 클라이언트(104)의 가용대역폭에 따라 상기 가용 비트레이트를 계산할 수 있다. 단대단 상황 판단부(204)는 계산된 가용대역폭의 특정 비율만큼의 비트레이트를 상기 가용 비트레이트로 할당할 수 있다. 예를 들어, 단대단 상황 판단부(204)에서 가용대역폭의 80%를 가용 비트레이트로 할당할 경우, 만약 현재 계산된 가용대역폭이 1Mbps라면 가용 비트레이트는 800Kbps가 된다.
한편, 네트워크 측정부(202)에서 액티브 방식으로 RTT를 측정하도록 구성될 경우에는, 클라이언트(104)로부터 프로브 패킷에 대한 응답을 수신하기 이전에는 RTT 및 이로부터 계산되는 가용대역폭을 계산하는 것이 불가능하다. 따라서 이 경우 단대단 상황 판단부(204)는 사전에 설정된 값으로 상기 가용 비트레이트의 초기값(초기 비트레이트)을 설정하도록 구성될 수 있다. 상기 초기 비트레이트는 클라이언트(104)가 연결된 네트워크의 종류(3G, WiFi, LTE 등)에 따라 사전에 설정될 수 있다. 예를 들어, 클라이언트(104)가 LTE 망을 통하여 콘텐츠를 요청할 경우, 단대단 상황 판단부(204)는 LTE 망에 대응되는 초기 비트레이트 설정값을 해당 클라이언트(104)의 가용 비트레이트로 설정할 수 있다.
또한, 단대단 상황 판단부(204)는, 네트워크 측정부(202)에서 계산된 라운드트립 타임(RTT) 및 클라이언트(104)의 버퍼 오버플로우/언더플로우 예측 시간(TTE)에 따라 계산된 상기 가용 비트레이트를 보정할 수 있다. 이때 상기 버퍼 오버플로우/언더플로우 예측 시간(TTE)은 클라이언트(104)측 버퍼가 넘치거나(overflow), 또는 완전히 빌 때까지(underflow)의 소요시간을 예측한 것으로서, 클라이언트(104)측에서 계산되어 콘텐츠 제공 서버(102)로 전달되는 값을 의미한다. 상기 TTE의 구체적인 계산 방식에 대해서는 후술하기로 한다.
단대단 상황 판단부(204)는 클라이언트(104)로부터 TTE 값이 수신되는 경우 이를 RTT 값과 비교하여 상기 가용 비트레이트를 보정한다. 구체적으로, 단대단 상황 판단부(204)는, 클라이언트로(104)부터 버퍼 언더플로우 예측 시간이 수신되는 경우, 수신된 상기 버퍼 언더플로우 예측 시간과 상기 라운드트립 타임의 크기를 비교하고, 상기 버퍼 언더플로우 예측 시간이 상기 라운드트립 타임보다 작은 경우 상기 가용 비트레이트를 기 설정된 비율만큼 감소시킬 수 있다. 이를 의사 코드(Pseudo Code)로 표현하면 다음과 같다.
if (RTT > TTE)
Bitrate = a * Vo
else
Bitrate = no Change
상기 의사 코드에서 Vo는 기 설정된 비트레이트를 의미한다. 또한 상기 의사 코드에서의 비트레이트 감소 비율인 a는 0보다 크고 1보다 작은 실수 중에서 네트워크의 특성 등을 고려하여 적절하게 설정될 수 있다.
한편, 이와 반대로 클라이언트(104)로부터 버퍼 오버플로우 예측 시간이 수신되는 경우, 단대단 상황 판단부(204)는 수신된 상기 버퍼 오버플로우 예측 시간과 상기 라운드트립 타임의 크기를 비교하고, 상기 버퍼 오버플로우 예측 시간이 상기 라운드트립 타임보다 작은 경우 상기 가용 비트레이트를 기 설정된 비율만큼 증가시킨다. 이를 의사 코드로 표현하면 다음과 같다. 하기의 의사 코드에서 비트레이트 증가 비율인 b는 1보다 큰 실수 중에서 네트워크의 특성 등을 고려하여 적절하게 설정될 수 있다.
if (RTT > TTE)
Bitrate = b * Vo
else
Bitrate = no Change
콘텐츠 판단부(206)는 클라이언트(104)로부터 요청된 콘텐츠의 특징 정보 및 단대단 상황 판단부(204)에서 계산된 상기 가용 비트레이트를 이용하여, 상기 가용 비트레이트 범위 내에서 상기 콘텐츠의 프레임 별 인코딩 파라미터(Encoding Parameter)를 계산한다.
본 발명의 실시예들에서, 콘텐츠의 특징 정보란 콘텐츠를 구성하는 각 프레임들의 특성을 나타내는 정보로서, 예를 들어 각 프레임들의 화면복잡도(TEX; TExture compleXity)일 수 있다. 예를 들어, 프리젠테이션 영상과 같이 화면 자체가 비교적 단순하고 화면간의 변환이 적은 영상의 화면복잡도는 액션 영화 등에 비해 낮게 나타난다. 이에 따라, 프리젠테이션 등과 같이 화면복잡도가 낮은 영상의 경우 초당 프레임수(FPS; Frames Per Second)을 낮추는 대신 양자화 파라미터(QP; Quantization Parameter)를 좀 더 낮은 값으로 부여하여 영상을 구성하는 각 프레임의 화질을 높이는 데 가중치를 두고, 액션 영화 등의 경우 양자화 파라미터를 높이는 대신 초당 프레임수를 높게 설정함으로써 부드러운 영상을 제공할 수 있다. 즉, 콘텐츠 판단부(206)는 동일 데이터량(비트레이트)을 갖는 영상에서 영상의 화면복잡도에 따라 FPS 및 QP를 조절함으로써 콘텐츠를 소비하는 유저 입장에서 좀더 시청하고자 하는 영상의 특징에 최적화된 영상을 제공할 수 있다.
참고로, 영상의 인코딩 기술에서 양자화 파라미터는 다양한 형태로 정의될 수 있으나, 본 발명의 실시예에서는 양자화 파라미터가 낮을수록 영상의 화질이 높아지는 것으로 정의하기로 한다. 또한, 이하의 설명에서 상기 콘텐츠의 특징 정보는 콘텐츠를 구성하는 각 프레임의 화면복잡도를 의미하는 것으로 기술하였으나, 이는 단지 예시적인 것으로서, 본 발명의 실시예에서 콘텐츠의 특징 정보는 화면복잡도 이외에 콘텐츠의 종류(영화, 다큐멘터리, 애니메이션 등), 카테고리, 또는 사용자 선호도 등 다양하게 설정될 수 있다. 예를 들어, 사용자 선호도를 콘텐츠의 특징 정보로 설정할 경우, 콘텐츠 판단부(206)는 사용자의 선호도가 높은 영상의 화질이 더 높아지도록 인코딩 파라미터를 조절할 수 있다. 아울러, 영상의 화면복잡도(TEX)를 계산하는 구체적인 방법은 본 기술분야에서 다양한 방법들이 잘 알려져 있으며, 이에 대한 상세한 설명은 본 발명의 범위를 벗어나는 것이므로 여기서는 그 설명을 생략하기로 한다.
전술한 바와 같이, 상기 인코딩 파라미터는 프레임의 양자화 파라미터(QP; Quantization Parameter) 및 초당 프레임수(FPS; Frames Per Second)를 포함하여 구성될 수 있다. 콘텐츠 판단부(206)의 구체적인 인코딩 파라미터 조절 방법에 대해서는 후술하기로 한다.
인코딩부(208)는 콘텐츠 판단부(206)에서 계산된 상기 인코딩 파라미터에 따라 상기 콘텐츠를 인코딩한다. 인코딩부(208)에서 인코딩된 콘텐츠는 메시지 송수신부(200)를 통하여 클라이언트(104)로 전송된다.
도 3은 본 발명의 일 실시예에 따른 클라이언트(104)의 상세 구성을 나타낸 블록도이다. 도시된 바와 같이, 본 발명의 일 실시예에 따른 클라이언트(104)는 메시지 송수신부(300), RTT 계산부(302), 버퍼 상태 판단부(304) 및 디코딩부(306)를 포함한다.
메시지 송수신부(300)는 네트워크(106)를 통하여 콘텐츠 제공 서버(102)와 메시지를 송수신한다. 예를 들어, 메시지 송수신부(300)는 콘텐츠 제공 서버(102)로 콘텐츠 제공 요청을 송신하고, 콘텐츠 제공 서버(102)로부터 인코딩된 콘텐츠를 수신할 수 있다. 콘텐츠 제공 서버(102)와 마찬가지로, 메시지 송수신부(300)는 네트워크(106) 상에서의 패킷 데이터 송수신을 위한 적절한 하드웨어 및 소프트웨어를 구비하도록 구성될 수 있다.
RTT 계산부(302)는 콘텐츠 제공 서버(102)의 네트워크 측정부(202)와의 통신을 통하여 RTT를 계산하기 위한 모듈이다. 예를 들어, RTT 계산부(302)는 메시지 송수신부(300)를 통하여 네트워크 측정부(202)로부터 프로브 패킷이 수신되는 경우, 상기 프로브 패킷에 대한 응답 메시지를 생성하여 이를 네트워크 측정부(202)로 전송할 수 있다. 또한 실시예에 따라 시스템(100)이 프로브 패킷을 이용하지 않는 RTT 계산 방식을 이용하는 경우, RTT 계산부(302)는 콘텐츠 제공 서버(102)로 전송되는 패킷에 타임스탬프(Timestamp) 정보를 부가하여 콘텐츠 제공 서버(102)로 전송할 수도 있다. 네트워크상에서의 RTT 계산과 관련된 구체적인 사항은 본 발명이 속하는 기술분야에서는 잘 알려져 있는 것이므로 이에 대해서는 상세한 설명을 생략한다.
버퍼 상태 판단부(304)는 후술할 디코딩부(306)의 버퍼 상태를 파악하고 이와 관련된 메시지를 생성하여 콘텐츠 제공 서버(102)로 송신한다. 본 발명의 실시예에서, 디코딩부(306)는 콘텐츠 제공 서버(102)로부터 전송되는 데이터 스트림을 일단 버퍼에 저장하여 두었다가 이를 순차적으로 디코딩하게 된다. 이때 만약 디코딩부(306)의 디코딩 속도보다 수신되는 데이터 스트림의 양이 더 많을 경우에는 버퍼에 저장되는 데이터의 양이 점점 증가하여 버퍼의 허용 용량을 초과하는 버퍼 오버플로우(buffer overflow)가 발생하며, 반대로 디코딩 속도에 비해 수신되는 데이터 스트림의 양이 더 적은 경우에는 반대로 버퍼에 저장되는 데이터의 양이 점점 감소하여 버퍼가 완전히 비게 되는 버퍼 언더플로우(buffer underflow)가 발생하게 된다. 버퍼 상태 판단부(304)는 이와 같은 버퍼 오버플로우 또는 버퍼 언더플로우를 방지하기 위하여, 버퍼의 상태를 모니터링하다가 버퍼에 저장된 데이터가 기 설정된 정상 범위를 벗어나는 경우 이를 콘텐츠 제공 서버(102)로 통지하여 줌으로써 콘텐츠 제공 서버(102)가 송신되는 콘텐츠(데이터 스트림)의 비트레이트를 적절히 조절할 수 있도록 한다.
구체적으로, 버퍼 상태 판단부(304)에서는 주기적으로 디코딩부(306)의 버퍼 상태를 측정하고, 측정된 상태에 따라 버퍼 언더플로우 또는 버퍼 오버플로우 예측 시간을 계산한 뒤 계산된 예측 시간을 메시지 송수신부(300)를 통하여 콘텐츠 제공 서버(102)로 송신한다. 이를 좀 더 상세히 설명하면 다음과 같다.
먼저, 버퍼 상태 판단부(304)는 버퍼에 저장된 데이터의 양에 따라 버퍼의 상태를 복수 개의 레벨로 구분한다. 예를 들어, 버퍼 상태 판단부(304)는 다음의 다섯 개의 레벨로 버퍼의 상태를 구분할 수 있다.
buffer none: 데이터량 0 ~ 20%
buffer shortfall: 데이터량 21 ~ 40%
buffer stability: 데이터량 41 ~ 60%
buffer exceed: 데이터량 61 ~ 80%
buffer overflow: 데이터량 81 ~ 100%
만약 버퍼의 상태가 buffer stability를 벗어나 buffer shortfall로 진입하는 경우, 버퍼 상태 판단부(304)는 버퍼 언더플로우 발생까지의 예측 시간을 계산하고, 계산된 예측 시간 포함하는 알람을 콘텐츠 제공 서버(102)로 전송한다. 이에 따라 콘텐츠 제공 서버(102)는 전술한 알고리즘을 통해 전송되는 데이터의 비트레이트를 증가시켜서 버퍼 언더플로우 발생을 예방하게 된다. 이때 상기 버퍼 언더플로우 예측 시간은 버퍼 내의 시간당 데이터 감소율로부터 도출될 수 있다. 상기 알람은 버퍼의 데이터량이 buffer stability에 도달할 때까지 계속된다.
반대로, 버퍼의 상태가 buffer stability를 벗어나 buffer exceed로 진입하는 경우, 버퍼 상태 판단부(304)는 버퍼 오버플로우 발생까지의 예측 시간을 계산하고, 계산된 예측 시간 포함하는 알람을 콘텐츠 제공 서버(102)로 전송한다. 이에 따라 콘텐츠 제공 서버(102)는 전술한 알고리즘을 통해 전송되는 데이터의 비트레이트를 감소시켜서 버퍼 오버플로우 발생을 예방하게 된다. 상기 알람은 버퍼의 데이터량이 buffer stability에 도달할 때까지 계속된다.
한편, 버퍼의 상태가 buffer stability를 유지하는 경우, 버퍼 상태 판단부(304)는 비트레이트 조절을 수행하지 않는다.
디코딩부(306)는 메시지 송수신부(300)로부터 수신되는 데이터를 버퍼에 저장하고, 이를 순차적으로 디코딩하여 사용자에게 출력한다. 디코딩부(306)의 상세 구성에 대해서는 본 발명이 속하는 기술분야에서 잘 알려져 있는 바, 이하에서는 그 상세한 설명을 생략한다.
도 4는 본 발명의 일 실시예에 따른 콘텐츠 제공 서버(102)에서의 콘텐츠 인코딩 방법(400)을 설명하기 위한 순서도이다.
먼저, 메시지 송수신부(200)를 통하여 클라이언트(104)로부터 콘텐츠 제공 요청이 수신되면(402), 단대단 상황 판단부(204)는 요청된 콘텐츠의 인코딩을 위한 초기 비트레이트를 설정한다(404). 전술한 바와 같이, 상기 초기 비트레이트는 클라이언트(104)가 접속한 네트워크의 종류에 따라 설정될 수 있다.
다음으로, 네트워크 측정부(202)는 클라이언트(104)의 네트워크 상태 및 가용대역폭을 계산하고(406), 단대단 상황 판단부(204)는 상기 가용대역폭을 이용하여 가용 비트레이트를 계산한다(408). 이후, 콘텐츠 판단부(206)는 요청된 콘텐츠의 특징 정보 및 상기 가용 비트레이트를 이용하여 상기 콘텐츠의 프레임 별 인코딩 파라미터를 설정하고(410), 인코딩부(208)는 상기 인코딩 파라미터에 따라 상기 콘텐츠를 인코딩하여 클라이언트(104)로 제공한다(412). 상기 과정은 콘텐츠의 인코딩이 완료될 때까지 지정된 프레임 간격, GOP 단위 또는 임의의 프레임 단위로 반복 수행된다(414). 즉, 본 발명의 실시예들에 따를 경우 네트워크 상태, 콘텐츠의 특성 및 클라이언트측 버퍼 상태 등을 고려하여 지정된 프레임 단위로, 또는 GOP 단위 등으로 지속적으로 인코딩 인자들을 보정하여 줌으로써 상황에 맞는 최적의 콘텐츠 인코딩을 수행할 수 있는 장점이 있다.
도 5는 도 4에 도시된 콘텐츠 인코딩 방법(400) 중 인코딩 파라미터 설정 과정(410)을 상세히 설명하기 위한 순서도이다. 본 발명의 실시예에서, 콘텐츠 판단부(206)에서의 최적 인코딩 파라미터 설정 알고리즘은 계산된 비트레이트 범위 내에서 인코딩 대상 프레임의 특성을 고려하여 최적의 인코딩 파라미터를 설정하도록 구성된다. 이때 조절하고자 하는 인코딩 파라미터는 전술한 바와 같이 QP(Quantization Parameters)와 FPS(Frame Per Sec)를 포함한다. QP가 증가하게 되면 비디오의 퀄리티는 감소하게 되고, 이와 반대로 FPS가 증가하게 되면 화면의 부드러움이 증가하게 된다. 본 발명의 실시예에 따른 인코딩 파라미터 설정 알고리즘에서는, 현재 화면의 복잡도가 바로 직전의 화면복잡도와 크게 차이가 나지 않는다는 가정을 전제로 한다. 또한, 콘텐츠 판단부(206)에서의 인코딩 설정값을 즉시 현재의 비디오 인코딩 결과에 실시간으로 적용된다는 전제도 포함한다.
먼저, 단대단 상황 판단부(204)로부터 계산된 가용 비트레이트 정보가 수신되는 경우(502), 콘텐츠 판단부(206)는 해당 콘텐츠에 대응되는 인코딩 데이터베이스(DB)가 존재하는지의 여부를 판단하고(504), 존재하지 않는 경우 새로 데이터베이스를 생성한다(506).
상기 인코딩 데이터베이스의 일 실시예를 도 6에 나타내었다. 도 6에 도시된 바와 같이, 인코딩 데이터베이스는 영상의 각 프레임의 화면복잡도(TEX)에 따라 복수 개의 단계로 구분된다. 도시된 실시예에서는 영상의 화면복잡도를 0 ~ 5,000 / 5,001 ~ 10,000 / 10,001 ~ 100,000 / 100,000 ~ 200,000 / 200,000 이상의 5개의 단계로 구분하였으나, 이는 예시적인 것으로서 단계의 개수 및 각 단계들의 범위는 달라질 수 있다.
또한, 도시된 바와 같이 상기 인코딩 데이터베이스는 각 단계 별 인코딩 파라미터 테이블을 포함한다. 상기 인코딩 파라미터 테이블의 가로축에는 양자화 파라미터(QP)가, 세로축에는 초당 프레임수(FPS)가 위치하며, 테이블 내의 각 셀에는 해당하는 QP 및 FPS에 따라 인코딩된 프레임의 실제 비트레이트가 저장된다. 일 실시예에서, 상기 테이블을 구성하는 QP의 값은 총 11단계 (1, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50)(최대값 51), FPS는 6 단계 (6, 10, 15, 18, 24 and 30)로 구분될 수 있으나 이는 단지 예시적인 것으로서 상기 각 단계들은 필요에 따라 적절하게 설정될 수 있다. 또한 도시된 실시예에서는 화면의 복잡도에 따라서 인코딩 데이터베이스를 구분하였으나, 전술한 바와 같이 콘텐츠의 종류, 카테고리 정보, 유저의 선호도 등 다양한 기준에 따라 인코딩 데이터베이스를 구분하는 것 또한 가능하다. 이와 같이 구성된 인코딩 데이터베이스의 설정값은 이후 동일 해상도(Resolution)의 영상 인코딩 시 적용될 수 있다. 또한 콘텐츠 판단부(206)에서 새로 인코딩 데이터베이스를 생성할 경우, 생성되는 각 각의 인코딩 파라미터 테이블의 각 셀 값은 비어 있거나 또는 기 설정된 디폴트 값이 기록될 수 있다.
전술한 과정을 거쳐 데이터베이스를 새로 생성하거나 또는 해당 데이터베이스의 존재를 확인한 경우, 다음으로 콘텐츠 판단부(206)는 상기 인코딩 데이터베이스를 검색하여 클라이언트(104)로부터 요청된 콘텐츠의 현재 인코딩 대상 프레임의 최적 인코딩 파라미터를 탐색한다(508, 510, 512). 전술한 바와 같이, 본 발명의 실시예에서 현재 인코딩 대상 프레임의 화면복잡도는 직전 프레임의 화면복잡도와 유사한 것으로 가정한다. 따라서 콘텐츠 판단부(206)는 현재 인코딩 대상 프레임의 직전 프레임의 화면복잡도를 이용하여 상기 현재 인코딩 대상 프레임의 인코딩 파라미터를 계산하게 된다. 예를 들어, 도 6에 도시된 실시예에서, 직전 프레임의 화면복잡도(TEX)가 8000이고 가용 비트레이트가 700Kbps인 경우, 콘텐츠 판단부(206)는 화면복잡도 범위가 5,000 ~ 10,000에 해당하는 인코딩 파라미터 테이블을 참조하여 상기 가용 비트레이트 범위 내에서 최적의 QP 및 FPS 값을 탐색한다. 도시된 실시예의 경우 테이블에 저장된 값 중 700Kbps를 넘지 않는 가장 큰 값은 695Kbps이고 해당 비트레이트에 대응되는 QP / FPS 쌍은 35 / 24이므로, 콘텐츠 판단부(206)는 도출된 QP / FPS 쌍을 현재 인코딩 대상 프레임의 인코딩을 파라미터로 설정하게 된다(512).
콘텐츠 판단부(206)는 기 설정된 가용 비트레이트를 초과하지 않는 범위 내에서 가용 비트레이트를 기준으로 인코딩 파라미터의 탐색 범위를 설정하고 설정된 범위내에서 인코딩 파라미터 테이블을 탐색하도록 구성될 수 있다. 예를 들어 가용 비트레이트가 700Kbps인 경우, 콘텐츠 판단부(206)는 600~700Kbps 범위 내에서 인코딩 파라미터 테이블을 탐색할 수 있다. 이 경우 만약 해당 범위 내의 데이터가 테이블 내에 존재하지 않는 경우, 콘텐츠 판단부(206)는 테이블 내의 다른 값들을 참조하여 근사값을 계산하거나, 또는 기 설정된 기준값을 적용하여 인코딩 파라미터를 생성할 수 있다(510).
상기와 같은 과정을 거쳐 인코딩 파라미터 테이블로부터 인코딩 파라미터가 선택되거나 또는 새로 인코딩 파라미터가 생성된 경우, 다음으로 콘텐츠 판단부(206)는 도출된 인코딩 파라미터에 보정이 필요한지의 여부를 판단한다(514). 예를 들어, 현재 인코딩 대상 프레임의 이전에 화면복잡도가 기 설정된 임계치를 초과하는 프레임이 N개(N은 1 이상의 자연수) 이상 연속되는 경우, 콘텐츠 판단부(206)는 가용 비트레이트 범위 내에서 현재 인코딩 대상 프레임의 양자화 파라미터 또는 초당 프레임수 중 하나 이상을 보정할 수 있다.
예를 들어, 과격한 액션 장면 등과 같이 화면복잡도가 매우 큰 프레임들이 연속되는 경우, 콘텐츠 판단부(206)는 가용 비트레이트의 범위 내에서 초당 프레임수가 증가되도록 상기 양자화 파라미터 또는 상기 초당 프레임수 중 하나 이상을 보정함으로써 영상의 끊김을 최소화하고 영상이 좀 더 부드러워지도록 할 수 있다(514, 516). 예를 들어, 콘텐츠 판단부(206)는 급작스러운 화면 변경에 의해 화면복잡도가 임계치 이상인 프레임들이 기 설정된 개수 이상 연속되는 경우 QP와 FPS를 각각 1씩 증가시키도록 구성될 수 있다. 이러한 인코딩 파라미터의 동적 변화는 화면복잡도가 임계치를 더 이상 초과하지 않을 때 까지 수행된다. 즉, 화면복잡도가 임계치 이하인 화면이 등장할 경우, 콘텐츠 판단부(206)는 인코딩 파라미터를 보정하지 않고 인코딩 파라미터 테이블에서 도출된 인코딩 파라미터를 그대로 적용한다.
상기와 같은 과정을 거쳐 최종적으로 인코딩 파라미터가 결정되면, 콘텐츠 판단부(206)는 결정된 인코딩 파라미터를 인코딩부(208)에 제공한다(518). 아울러, 콘텐츠 판단부(206)는 인코딩부(208)의 인코딩 파라미터에 따라 인코딩된 프레임의 실제 비트레이트를 이용하여 상기 선택된 인코딩 파라미터 테이블을 업데이트한다(520). 전술한 실시예에서, QP/FPS를 각각 35, 24로 적용하여 인코딩을 수행할 경우 인코딩된 프레임의 실제 비트레이트가 694Kbps라고 가정하자. 이 경우 콘텐츠 판단부(206)는 상기 실제 비트레이트 값을 이용하여 인코딩 파라미터 테이블의 해당 셀 값(695Kbps)을 업데이트한다. 예를 들어, 콘텐츠 판단부(206)는 인코딩 파라미터 테이블에 기 저장된 값을 새로 저장된 값으로 대체하거나, 또는 두 값의 평균값을 계산하여 이를 해당 셀의 값으로 업데이트할 수 있다.
한편, 본 발명의 실시예는 본 명세서에서 기술한 방법들을 컴퓨터상에서 수행하기 위한 프로그램을 포함하는 컴퓨터 판독 가능 기록매체를 포함할 수 있다. 상기 컴퓨터 판독 가능 기록매체는 프로그램 명령, 로컬 데이터 파일, 로컬 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체는 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 분야에서 통상의 지식을 가진 자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM, DVD와 같은 광 기록 매체, 플로피 디스크와 같은 자기-광 매체, 및 롬, 램, 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함할 수 있다.
이상에서 대표적인 실시예를 통하여 본 발명에 대하여 상세하게 설명하였으나, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 상술한 실시예에 대하여 본 발명의 범주에서 벗어나지 않는 한도 내에서 다양한 변형이 가능함을 이해할 것이다.
그러므로 본 발명의 권리범위는 설명된 실시예에 국한되어 정해져서는 안 되며, 후술하는 특허청구범위뿐만 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
100: 콘텐츠 제공 시스템
102: 콘텐츠 제공 서버
104: 클라이언트
106: 네트워크
200: 메시지 송수신부
202: 네트워크 측정부
204: 단대단 상황 판단부
206: 콘텐츠 판단부
208: 인코딩부
300: 메시지 송수신부
302: RTT 계산부
304: 버퍼 상태 판단부
306: 디코딩부

Claims (26)

  1. 콘텐츠를 요청한 클라이언트의 네트워크 상태에 따른 가용 비트레이트(Bitrate)를 계산하는 단대단 상황 판단부;
    상기 콘텐츠의 각 프레임의 특징 정보에 따라 복수 개의 단계로 구분된 복수 개의 인코딩 파라미터 테이블 중, 상기 콘텐츠의 현재 인코딩 대상 프레임의 직전 프레임의 특징 정보에 대응되는 하나의 인코딩 파라미터 테이블을 선택하고, 상기 하나의 인코딩 파라미터 테이블에 저장된 비트레이트 값 중 상기 가용 비트레이트를 넘지 않는 가장 큰 값과 대응되는 하나의 인코딩 파라미터(Encoding Parameter)를 선택하는 콘텐츠 판단부; 및
    선택된 상기 인코딩 파라미터에 따라 상기 콘텐츠를 인코딩하는 인코딩부를 포함하는 콘텐츠 제공 장치.
  2. 청구항 1에 있어서,
    상기 단대단 상황 판단부는, 상기 네트워크 상태로부터 도출되는 상기 클라이언트의 가용대역폭에 따라 상기 가용 비트레이트를 계산하는, 콘텐츠 제공 장치.
  3. 청구항 2에 있어서,
    상기 단대단 상황 판단부는, 상기 클라이언트가 연결된 네트워크의 종류에 따라 초기 비트레이트를 설정하는, 콘텐츠 제공 장치.
  4. 청구항 2에 있어서,
    상기 단대단 상황 판단부는, 상기 장치 및 상기 클라이언트 간의 라운드트립 타임 및 상기 클라이언트의 버퍼 오버플로우/언더플로우 예측 시간에 따라 상기 가용 비트레이트를 보정하는, 콘텐츠 제공 장치.
  5. 청구항 4에 있어서,
    상기 단대단 상황 판단부는, 상기 클라이언트로부터 버퍼 언더플로우 예측 시간이 수신되는 경우, 수신된 상기 버퍼 언더플로우 예측 시간과 상기 라운드트립 타임의 크기를 비교하고, 상기 버퍼 언더플로우 예측 시간이 상기 라운드트립 타임보다 작은 경우 상기 가용 비트레이트를 기 설정된 비율만큼 감소시키는, 콘텐츠 제공 장치.
  6. 청구항 4에 있어서,
    상기 단대단 상황 판단부는, 상기 클라이언트로부터 버퍼 오버플로우 예측 시간이 수신되는 경우, 수신된 상기 버퍼 오버플로우 예측 시간과 상기 라운드트립 타임의 크기를 비교하고, 상기 버퍼 오버플로우 예측 시간이 상기 라운드트립 타임보다 작은 경우 상기 가용 비트레이트를 기 설정된 비율만큼 증가시키는, 콘텐츠 제공 장치.
  7. 청구항 1에 있어서,
    상기 콘텐츠의 특징 정보는, 상기 콘텐츠의 화면복잡도, 종류, 카테고리, 또는 사용자 선호도 중 어느 하나인, 콘텐츠 제공 장치.
  8. 삭제
  9. 청구항 1에 있어서,
    상기 인코딩 파라미터는, 양자화 파라미터(QP; Quantization Parameter) 및 초당 프레임수(FPS; Frames Per Second)를 포함하는, 콘텐츠 제공 장치.
  10. 삭제
  11. 청구항 1에 있어서,
    상기 콘텐츠 판단부는, 선택된 인코딩 파라미터에 따라 인코딩된 프레임의 실제 비트레이트를 이용하여 상기 선택된 인코딩 파라미터 테이블을 업데이트하는, 콘텐츠 제공 장치.
  12. 청구항 9에 있어서,
    상기 콘텐츠 판단부는, 상기 현재 인코딩 대상 프레임 이전 N개(N은 1 이상의 자연수) 프레임 각각의 계산된 화면복잡도가 기 설정된 임계치를 초과하는 경우, 현재 인코딩 대상 프레임의 양자화 파라미터 또는 초당 프레임수 중 하나 이상을 보정하는, 콘텐츠 제공 장치.
  13. 청구항 12에 있어서,
    상기 콘텐츠 판단부는, 상기 가용 비트레이트 범위 내에서 상기 초당 프레임수가 증가되도록 상기 양자화 파라미터 또는 상기 초당 프레임수 중 하나 이상을 보정하는, 콘텐츠 제공 장치.
  14. 콘텐츠 제공 장치에서의 콘텐츠 제공 방법으로서,
    단대단 상황 판단부에서, 콘텐츠를 요청한 클라이언트의 네트워크 상태에 따른 가용 비트레이트(Bitrate)를 계산하는 단계;
    콘텐츠 판단부에서, 상기 콘텐츠의 각 프레임의 특징 정보에 따라 복수 개의 단계로 구분된 복수 개의 인코딩 파라미터 테이블 중, 상기 콘텐츠의 현재 인코딩 대상 프레임의 직전 프레임의 특징 정보에 대응되는 하나의 인코딩 파라미터 테이블을 선택하는 단계;
    상기 콘텐츠 판단부에서, 상기 하나의 인코딩 파라미터 테이블에 저장된 비트레이트 값 중 상기 가용 비트레이트를 넘지 않는 가장 큰 값과 대응되는 하나의 인코딩 파라미터(Encoding Parameter)를 선택하는 단계; 및
    인코딩부에서, 선택된 상기 인코딩 파라미터에 따라 상기 콘텐츠를 인코딩하는 단계를 포함하는 콘텐츠 제공 방법.
  15. 청구항 14에 있어서,
    상기 가용 비트레이트를 계산하는 단계는,
    상기 네트워크 상태로부터 도출되는 상기 클라이언트의 가용대역폭에 따라 상기 가용 비트레이트를 계산하는, 콘텐츠 제공 방법.
  16. 청구항 15에 있어서,
    상기 가용 비트레이트를 계산하는 단계는,
    상기 클라이언트가 연결된 네트워크의 종류에 따라 초기 비트레이트를 설정하는 단계를 더 포함하는, 콘텐츠 제공 방법.
  17. 청구항 15에 있어서,
    상기 가용 비트레이트를 계산하는 단계는, 상기 장치 및 상기 클라이언트 간의 라운드트립 타임 및 상기 클라이언트의 버퍼 오버플로우/언더플로우 예측 시간에 따라 상기 가용 비트레이트를 보정하는 단계를 더 포함하는, 콘텐츠 제공 방법.
  18. 청구항 17에 있어서,
    상기 가용 비트레이트를 보정하는 단계는, 상기 클라이언트로부터 버퍼 언더플로우 예측 시간이 수신되는 경우, 수신된 상기 버퍼 언더플로우 예측 시간과 상기 라운드트립 타임의 크기를 비교하고, 상기 버퍼 언더플로우 예측 시간이 상기 라운드트립 타임보다 작은 경우 상기 가용 비트레이트를 기 설정된 비율만큼 감소시키도록 구성되는, 콘텐츠 제공 방법.
  19. 청구항 17에 있어서,
    상기 가용 비트레이트를 보정하는 단계는, 상기 클라이언트로부터 버퍼 오버플로우 예측 시간이 수신되는 경우, 수신된 상기 버퍼 오버플로우 예측 시간과 상기 라운드트립 타임의 크기를 비교하고, 상기 버퍼 오버플로우 예측 시간이 상기 라운드트립 타임보다 작은 경우 상기 가용 비트레이트를 기 설정된 비율만큼 증가시키도록 구성되는, 콘텐츠 제공 방법.
  20. 청구항 14에 있어서,
    상기 콘텐츠의 특징 정보는, 상기 콘텐츠의 화면복잡도, 종류, 카테고리, 또는 사용자 선호도 중 어느 하나인, 콘텐츠 제공 방법.
  21. 삭제
  22. 청구항 14에 있어서,
    상기 인코딩 파라미터는, 양자화 파라미터(QP; Quantization Parameter) 및 초당 프레임수(FPS; Frames Per Second)를 포함하는, 콘텐츠 제공 방법.
  23. 삭제
  24. 청구항 14에 있어서,
    상기 인코딩 파라미터를 계산하는 단계는,
    선택된 인코딩 파라미터에 따라 인코딩된 프레임의 실제 비트레이트를 이용하여 상기 선택된 인코딩 파라미터 테이블을 업데이트하는 단계를 더 포함하는, 콘텐츠 제공 방법.
  25. 청구항 22에 있어서,
    상기 인코딩 파라미터를 계산하는 단계는,
    상기 현재 인코딩 대상 프레임 이전 N개(N은 1 이상의 자연수) 프레임 각각의 계산된 화면복잡도가 기 설정된 임계치를 초과하는 경우, 상기 가용 비트레이트 범위 내에서 현재 인코딩 대상 프레임의 양자화 파라미터 또는 초당 프레임수 중 하나 이상을 보정하는 단계를 더 포함하는, 콘텐츠 제공 방법.
  26. 청구항 25에 있어서,
    상기 보정하는 단계는, 상기 가용 비트레이트 범위 내에서 상기 초당 프레임수가 증가되도록 상기 양자화 파라미터 또는 상기 초당 프레임수 중 하나 이상을 보정하는, 콘텐츠 제공 방법.
KR1020130061129A 2013-05-29 2013-05-29 콘텐츠 제공 장치 및 방법 KR101514128B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020130061129A KR101514128B1 (ko) 2013-05-29 2013-05-29 콘텐츠 제공 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130061129A KR101514128B1 (ko) 2013-05-29 2013-05-29 콘텐츠 제공 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20140140364A KR20140140364A (ko) 2014-12-09
KR101514128B1 true KR101514128B1 (ko) 2015-04-21

Family

ID=52458257

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130061129A KR101514128B1 (ko) 2013-05-29 2013-05-29 콘텐츠 제공 장치 및 방법

Country Status (1)

Country Link
KR (1) KR101514128B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102080147B1 (ko) * 2018-06-20 2020-02-24 네이버 주식회사 적응형 데이터 전송을 위한 방법 및 시스템
KR20230069566A (ko) * 2021-11-12 2023-05-19 삼성전자주식회사 영상 송신 장치 및 방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100924309B1 (ko) * 2009-06-04 2009-11-02 전자부품연구원 시간확장성과 버퍼상태판단을 통한 품질 적응적 멀티미디어 데이터 스트리밍 방법 및 시스템

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100924309B1 (ko) * 2009-06-04 2009-11-02 전자부품연구원 시간확장성과 버퍼상태판단을 통한 품질 적응적 멀티미디어 데이터 스트리밍 방법 및 시스템

Also Published As

Publication number Publication date
KR20140140364A (ko) 2014-12-09

Similar Documents

Publication Publication Date Title
US11924263B2 (en) Methods and devices for efficient adaptive bitrate streaming
US9398488B2 (en) Video service buffer management in a mobile rate control enabled network
US20130304934A1 (en) Methods and systems for controlling quality of a media session
US20150163273A1 (en) Media bit rate estimation based on segment playback duration and segment data length
JP4309185B2 (ja) ストリーミング・メディアの輻輳制御メカニズム
US20150026309A1 (en) Systems and methods for adaptive streaming control
US20140181266A1 (en) System, streaming media optimizer and methods for use therewith
EP2290894A1 (en) A method, apparatus and system for adjusting multimedia encoding rate
US11765400B2 (en) Systems and methods for selecting an initial streaming bitrate
CN109729437B (zh) 流媒体自适应传输方法、终端和系统
KR101982290B1 (ko) 적응적 스트리밍 서비스의 체감 품질 향상을 위한 콘텐츠 특성 기반 스트리밍 시스템 및 방법
CN108401128B (zh) 一种视频通话中的拥塞控制方法
CN110602548B (zh) 一种超高清视频高质量无线传输的方法和系统
EP3103220A1 (en) System and method for dynamic effective rate estimation for real-time video traffic
CN104394484A (zh) 一种无线实时流媒体传输方法
CN105262699A (zh) 一种网络自适应编码调整方法及装置
US10277653B2 (en) Failure detection manager
US10116715B2 (en) Adapting encoded bandwidth
JP2017069849A (ja) 映像制御装置、映像配信システムおよび映像制御方法
WO2014209493A1 (en) State management for video streaming quality of experience degradation control and recovery using a video quality metric
US8904024B2 (en) System and method for low delay fast update for video streaming
KR101514128B1 (ko) 콘텐츠 제공 장치 및 방법
WO2014066975A1 (en) Methods and systems for controlling quality of a media session
KR101837637B1 (ko) 클라이언트 측 ack 조정 기반 적응 스트리밍 방법 및 장치
US20160277467A1 (en) Adapting Encoded Bandwidth

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
FPAY Annual fee payment

Payment date: 20180403

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190401

Year of fee payment: 5