KR20210135338A - 피어 투 피어(Peer to peer, P2P) 네트워크에서 스트리밍 콘텐츠를 방송하는 방법 - Google Patents

피어 투 피어(Peer to peer, P2P) 네트워크에서 스트리밍 콘텐츠를 방송하는 방법 Download PDF

Info

Publication number
KR20210135338A
KR20210135338A KR1020217035076A KR20217035076A KR20210135338A KR 20210135338 A KR20210135338 A KR 20210135338A KR 1020217035076 A KR1020217035076 A KR 1020217035076A KR 20217035076 A KR20217035076 A KR 20217035076A KR 20210135338 A KR20210135338 A KR 20210135338A
Authority
KR
South Korea
Prior art keywords
segment
peer
player
buffer
function
Prior art date
Application number
KR1020217035076A
Other languages
English (en)
Other versions
KR102472155B1 (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 스트림루트
Publication of KR20210135338A publication Critical patent/KR20210135338A/ko
Application granted granted Critical
Publication of KR102472155B1 publication Critical patent/KR102472155B1/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/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/632Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing using a connection between clients on a wide area network, e.g. setting up a peer-to-peer communication via Internet for retrieving video segments from the hard-disk of other client devices
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9005Buffering arrangements using dynamic buffer space allocation
    • 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/10Architectures or entities
    • H04L65/102Gateways
    • H04L65/1033Signalling gateways
    • H04L65/104Signalling gateways in the network
    • H04L65/4076
    • H04L65/4092
    • 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/60Network streaming of media packets
    • 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/60Network streaming of media packets
    • H04L65/61Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
    • H04L65/611Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for multicast or broadcast
    • 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/60Network streaming of media packets
    • H04L65/61Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
    • H04L65/613Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for the control of the source by the destination
    • 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
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • 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, manipulating MPEG-4 scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • H04N21/23439Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements for generating different versions

Abstract

본 발명은 클라이언트 디바이스(11)의 플레이어 상에서, 클라이언트 디바이스(11, 12)의 피어-투-피어 네트워크(10) 내의 방송 콘텐츠를 스트리밍하는 방법에 관한 것으로, 상기 콘텐츠는 복수의 품질 레벨로 이용 가능한 일련의 세그먼트로 구성되고, 상기 플레이어는 적응형 비트레이트 조절(adaptive bitrate regulation, ABR) 로직에 따라 세그먼트의 품질 레벨을 선택하도록 구성되며, 클라이언트 디바이스(11)는 피어-투-피어 네트워크(10) 내에서 전송하기에 적합한 형식으로 세그먼트를 저장하도록 구성된 제1 버퍼(M1)를 포함하고, 본 방법은, 디바이스(11)의 데이터 처리 수단(110)이,
a) 플레이어로부터 세그먼트에 대한 요청을 수신하는 단계, 및
b) 응답으로, 상기 플레이어의 ABR 로직과 관련하여 정의된 응답 시간이 만료되면 제1 버퍼(M1)로부터 상기 세그먼트를 제공하는 단계를 구현하는 것을 포함한다.

Description

피어 투 피어(Peer to peer, P2P) 네트워크에서 스트리밍 콘텐츠를 방송하는 방법
본 발명은 피어 투 피어(Peer to peer, P2P) 네트워크에서 스트리밍 콘텐츠를 방송하는 방법에 관한 것이다.
스트리밍은 오디오 또는 비디오 스트림을 "라이브"로, 즉, 클라이언트 디바이스가 인터넷에서 검색할 때 재생하기 위한 기술을 지칭한다. 따라서 재생하기 전에 오디오 또는 비디오 콘텐츠에서 모든 데이터를 검색하는 것을 요구하는 다운로드와 반대이다.
스트리밍의 경우 콘텐츠 저장은 일시적이고 부분적이며, 데이터는 클라이언트 버퍼(전형적으로 RAM)에 지속적으로 다운로드되고, 즉시 디코딩되며, 출력 인터페이스(화면 및/또는 스피커)로 전송된 다음 새로운 데이터로 대체된다.
전통적으로 콘텐츠는 스트리밍 서버에서 이용 가능하다. 액세스를 원하는 클라이언트는 첫 번째 세그먼트를 검색하라는 요청을 보낸다(세그먼트라는 용어는 일반적으로 재생의 몇 초에 대응하는 콘텐츠 데이터 블록을 의미하는 것으로 이해됨). 버퍼에 콘텐츠의 시작 부분을 읽을 만큼 데이터가 충분하면 재생이 시작된다. 백그라운드에서 스트림은 버퍼에 콘텐츠의 나머지 부분을 계속해서 공급하기 위해 연속하여 다운로드된다.
그러나 이러한 접근 방식은 많은 수의 클라이언트가 동일한 콘텐츠를 동시에 읽으려는 경우 한계를 가진다: 서버는 포화 상태가 되어 원활한 재생을 위한 충분한 속도로 콘텐츠를 제공할 수 없으며 저킹(jerking)이 발생한다.
최근에는 각 클라이언트가 다른 클라이언트에 대한 서버 역할을 하는 P2P(피어 투 피어)에 기반한 대안 전략이 제안되었으며, 이를 피어라고 한다. 콘텐츠 읽기를 시작한 피어는 이미 수신한 세그먼트를 다른 사람에게 재전송하는 등의 방식으로 관심 있는 클라이언트의 수에 관계없이 배포하는 것을 쉽게 할 수 있다. 예를 들어, 이 전략은 국제출원 WO 2012/154287호에 설명되어 있으며 충분하다.
그러나 대부분의 플레이어는 소위 적응형 비트레이트(adaptive bitrate, ABR) 논리를 구현하며 이는 P2P와 결합될 때 문제가 있는 것으로 판명되었다.
ABR의 일반적인 아이디어는 피어의 "용량"에 따라 검색된 세그먼트 품질의 자동 변형을 허용하는 것이다. 보다 정확하게는, 각 세그먼트는 여러 비트 전송률, 즉 데이터 전송률에 해당하는 여러 품질 레벨로 이용 가능하다. 더 나은 품질의 세그먼트는 더 나은 해상도, 낮은 압축률, 초당 더 많은 프레임 수를 가지므로 낮은 품질의 동일한 세그먼트보다 더 크다는 것으로 이해되기 때문이며, 이는 따라서 높은 데이터률을 유지하는 것이 중요하다.
ABR은 일반적으로 관찰된 대역폭 및/또는 버퍼 필 레이트(fill rate)라는 두 가지 기준을 기반으로 선택될 수 있는 최상의 품질을 각 세그먼트에 대해 자동으로 결정하려고 시도한다.
첫 번째 경우 알고리즘이 예상 대역폭이 더 높은 품질을 지원하기에 충분하다고 판단하면 클라이언트에게 이러한 품질로 전환하도록 (또는 반대로 대역폭이 너무 낮은 경우 품질을 낮추도록) 명령할 것이다. 두 번째 경우, 원리는 버퍼를 다른 간격으로 나누는 것인데, 각 간격은 버퍼의 채워짐이 증가함에 따라 점점 더 높은 품질(만일 감소하면 점점 낮아짐)에 대응한다.
두 경우 모두, ABR 알고리즘에는 P2P 스트리밍 컨텍스트에서 사용될 수 있는 근본적인 비호환성이 없지만, 문제는 ABR 알고리즘이 간단한 스트리밍 시나리오, 즉 콘텐츠 서버의 요청에 따라 모든 세그먼트를 검색하는 경우에 작동하도록 설계되었다는 것이다.
그러나 실제로 P2P 스트리밍은 플레이어가 실제로 요청하기 전에 전용 P2P 캐시에 P2P 세그먼트를 다운로드함으로써 "사전 버퍼링"을 수행한다. 실제로 P2P 스트리밍의 목적은 원본 콘텐츠 서버를 가능한 한 적게 (그리고 최후의 수단으로) 요청하는 것이며, 이 서버에 세그먼트의 직접 요청은 비디오 버퍼에 더 이상 세그먼트가 없을 위험이 있고 재생이 중단("재버퍼링")될 위험이 있는 경우에만 이루어지고, 그렇지 않으면 P2P 네트워크에 최대한 의존하게 된다.
세그먼트는 요청된 후 몇 초 안에 P2P 캐시에서 버퍼로 로드될 수 있기 때문에 플레이어의 관점에서 매우 높은 겉보기 대역폭(apparent bandwidth)을 초래한다. 또한 비디오 버퍼 필 레이트는 인위적으로 높다.
이는 네트워크의 실제 용량에 관계없이 현재 품질이 최대 품질이 아닌 경우 품질을 향상시키기 위해 ABR에 의해 제어되지 않는 결정으로 이어지며, 그 품질은 반드시 지원하지 못할 수도 있는 품질이다.
기껏해야 스트림의 품질에 불안정한 진동을 초래한다. 최악의 경우 재생 중단이 반복되고 콘텐츠 서버에서 수많은 불필요한 요청이 발생한다.
ABR 로직을 제어할 수 있는 것이 바람직하지만 불행히도 이것은 종종 플레이어에 따라 다르며 수정 가능한 것은 고사하고 접근도 매우 어렵다. 따라서 P2P 스트리밍 컨텍스트에서 모든 ABR 알고리즘을 제어하는 방법을 갖는 것이 바람직할 것이다.
본 발명은 이러한 상황을 개선할 것이다.
따라서 본 발명은 클라이언트 장비의 P2P 네트워크 내에서 클라이언트 디바이스의 플레이어에게 방송되는 콘텐츠를 스트리밍하는 방법에 관한 것으로서, 상기 콘텐츠는 복수의 품질 레벨로 이용 가능한 일련의 세그먼트로 구성되고, 상기 플레이어는 적응형 비트레이트(adaptive bitrate regulation, ABR) 조절 로직에 따라 세그먼트의 품질 레벨을 선택하도록 구성되며, 클라이언트 디바이스는 P2P 네트워크 내에서 전송하기에 적합한 형식으로 세그먼트를 저장하도록 구성된 제1 버퍼를 포함하고, 방법은, 디바이스의 데이터 처리 수단이,
(a) 플레이어로부터 세그먼트에 대한 요청을 수신하는 단계, 및
(b) 상기 플레이어의 ABR 로직과 관련하여 정의된 응답 시간이 만료되면 제1 버퍼로부터 상기 세그먼트의 응답을 전달하는 단계를 구현하는 것을 포함한다.
이 방법은 응답에 인위적인 지연을 추가하여 ABR 알고리즘에 피드백 정보를 영리하게 제공한다.
유리하고 비제한적인 특징에 따르면:
ㆍ 상기 ABR 로직은 상기 세그먼트가 세그먼트 수신율을 나타내는 적어도 하나의 파라미터의 함수로 요구되는 품질 레벨을 계산하는 것을 가능하게 하는 제1 함수에 의해 정의된다.
ㆍ 제2 함수는 단계 (a)에서 세그먼트 수신율을 나타내는 상기 적어도 하나의 파라미터의 함수로서 상기 응답 시간을 계산하는 것을 가능하게 한다.
ㆍ 제2 함수는 제1 함수로부터 구성된다.
ㆍ 제2 함수는 세그먼트 수신율을 나타내는 상기 적어도 하나의 파라미터에 대해 단조적이다.
ㆍ 디바이스는 플레이어에 의한 재생에 적합한 형식으로 세그먼트를 저장하도록 구성된 제2 버퍼를 더 포함하고, 상기 세그먼트는 단계 (b)에서 제2 버퍼에 제공된다.
ㆍ 세그먼트 수신율을 나타내는 상기 파라미터는 제2 버퍼의 필 레벨(fill level) 및/또는 대역폭이다.
ㆍ 단계 (a)는 계산된 응답 시간의 함수로서 다음 세그먼트가 요구될 품질 레벨을 예측하는 단계를 포함한다.
ㆍ 방법은, 다음 세그먼트가 요구될 상기 품질 레벨 예측을 검증하기 위한 단계 (c)를 포함한다.
ㆍ 방법은, 예측되고 실제 요구되는 품질 레벨에 기초하여 제2 함수를 학습하는 단계를 포함한다.
ㆍ 요구된 세그먼트의 이용 가능성은 제1 버퍼에서 불완전하다. 단계 (a)는 세그먼트 검색을 완료하는데 필요한 예상 시간의 함수로서 계산된 응답 시간을 수정하는 단계를 포함하며, 세그먼트는 수정된 응답 시간이 만료되면 가장 빨리 단계 (b)에서 완전한 형태로 제공된다.
제2 양태에 따르면, 본 발명은 클라이언트 디바이스의 P2P 네트워크 내의 방송 콘텐츠를 플레이어 상에서 스트리밍하기 위한 디바이스로서, 상기 콘텐츠는 복수의 품질 레벨로 이용 가능한 일련의 세그먼트로 구성되고, 상기 플레이어는 ABR 로직에 따라 세그먼트의 품질 레벨을 선택하도록 구성되며, 클라이언트 디바이스는 P2P 네트워크 내에서 전송하기에 적합한 형식으로 세그먼트를 저장하도록 구성된 제1 버퍼 및 데이터 처리 수단을 포함하고, 데이터 처리 수단은, 플레이어로부터 세그먼트에 대한 요청을 수신한 후, 그에 응답하여, 상기 플레이어의 ABR 로직과 관련하여 정의된 응답 시간이 만료되면 제1 버퍼로부터 상기 세그먼트를 제공하도록 구성되는, 디바이스를 제안한다.
제3 양태 및 제4 양태에 따르면, 본 발명은 콘텐츠 서버에 연결된 클라이언트 디바이스의 P2P 네트워크에서 콘텐츠를 스트리밍하는 제1 양태에 따른 방법을 실행하기 위한 코드 명령을 포함하는 컴퓨터 프로그램 제품; 및 콘텐츠 서버에 연결된 클라이언트 디바이스의 P2P 네트워크에서 콘텐츠를 스트리밍하기 위해, 제1 양태에 따른 방법을 실행하기 위한 코드 명령을 포함하는 컴퓨터 프로그램 제품을 포함하는 컴퓨터 장비 판독 가능한 저장 수단을 제안한다.
본 발명의 다른 특징 및 이점은 바람직한 실시예의 이하의 설명을 읽으면 나타날 것이다. 이 설명은 다음과 같은 첨부 도면을 참조하여 제공될 것이다:
도 1은 본 발명에 따른 방법을 구현하기 위한 구조물을 나타낸다.
도 2는 본 발명에 따른 방법의 바람직한 실시예를 도시한다.
구조
도 1을 참조하면, 본 발명은 도시된 바와 같이 네트워크(1) 내에서 방송되는 콘텐츠를 스트리밍하는 방법을 제안한다. 여기서, 네트워크(1)는 대규모 통신망, 특히 인터넷이다. 이 네트워크(1)는 클라이언트 디바이스(11, 12)의 피어-투-피어 네트워크(10)를 포함한다. 각 클라이언트 디바이스(11, 12)는 전형적으로 네트워크(1)에 연결된 PC, 스마트폰, 태블릿 등과 같은 개인용 컴퓨터 디바이스이며, 프로세서, 콘텐츠 재생을 위한 인터페이스, 및 랜덤 액세스 메모리 및/또는 대용량 메모리와 같은 데이터 저장 수단과 같은 데이터 처리 수단(110)을 가진다.
재생은 플레이어, 즉 데이터 처리 수단(110)에 의해 실행되는 애플리케이션에 의해 구현되며, 이는 전용 애플리케이션, 특히 HTML5와 호환되는 인터넷 브라우저, 운영 시스템의 모듈 등 다양한 특성을 가질 수 있다.
이하의 설명에서는 플레이어가 "있는 그대로" 즉, 이 방법의 구현을 위해 또는 P2P 스트리밍을 위해 수정되지 않은 것으로 가정될 것이다. 특히, 플레이어는 적응형 비트레이트 조절 로직(ABR)을 구현하며, 즉, 재생될 상기 콘텐츠는 복수의 품질로 이용 가능한 일련의 세그먼트로 구성되며 플레이어는 이 ABR 로직에 따라 요구할 품질을 자동으로 결정할 수 있다. 다양한 품질은 상이한 비트 전송률, 즉 시간 단위당 (따라서 세그먼트당) 가변 데이터 볼륨에 해당한다. 당연히 더 나은 품질의 콘텐츠에는 더 높은 비트 전송률이 필요하다는 것이 이해될 수 있다.
이하에서 ABR 로직의 개념에 대해 더 자세히 설명하겠지만 이 방법의 맥락에서 ABR 로직이 제어되거나 심지어는 알려질 필요도 없다는 것만 이해될 것이다: 이 방법은 완전히 보편적이며 임의의 기준에 따라 ABR 로직을 구현하는 모든 플레이어에게 적용된다. ABR 로직이 사전 정의되어 있고 클라이언트 소프트웨어(아래 참조)가 이를 겪을 뿐이라고 가정할 것이다.
또한, 디바이스(11)(더 정확하게는 데이터 저장 수단)는 두 개의 버퍼(M1 및 M2)("버퍼"라고도 함), 전형적으로 랜덤 액세스 메모리의 두 영역을 가지며, 각각은 일시적으로 콘텐츠의 전체 또는 일부를 (보여지는 것처럼 다른 방식으로) 저장할 수 있다 (일시라는 용어는 세그먼트가 재생된 직후에 메모리에서 삭제됨을 의미하는 것으로 이해되고, 직접 다운로드의 경우와 같이 장기간 저장되지 않는다). 예를 들어, 브라우저를 통해 재생하는 경우 모든 세그먼트는 전형적으로 비디오가 재생되는 브라우저나 탭이 늦게 닫히면 삭제(즉, 버퍼가 재설정됨)된다.
제1 버퍼(M1)는 "피어 투 피어 캐시(peer-to-peer cache)"라고 한다. 이는 "원시(raw)" 형식이라는 형식으로 세그먼트를 저장한다. 원시 세그먼트라는 용어는 피어-투-피어 네트워크(10) 내에서의 전송에 적합하지만 디바이스(11)에서의 재생에는 적합하지 않은 형식을 의미하는 것으로 이해된다.
제2 버퍼(M2)는 "비디오 버퍼"라고 한다. 이는 플레이어에 의해 제어되며 "변환된" 형식이라는 형식으로 세그먼트를 저장한다. 변환된 세그먼트라는 용어는 디바이스(11)에서의 재생(특히 플레이어용)에 적합하지만 피어 투 피어 네트워크(10) 내에서의 전송에는 적합하지 않은 형식으로 원시 세그먼트로부터 변환된 것을 의미하는 것으로 이해된다(아래 참조)
서두에서 설명된 바와 같이, 디바이스(11, 12)는 피어 투 피어 네트워크(10)의 "피어"("노드"라고도 함)이다.
"피어 투 피어 네트워크(10)의 클라이언트 디바이스(11, 12)"는 피어 투 피어 네트워크 프로토콜에 의해 네트워크(1)에 연결된 디바이스를 의미하는 것으로 이해된다. 다시 말하면, 각 피어의 데이터 처리 수단은 예를 들어 플레이어(예: 웹 브라우저의 확장)에 통합될 수 있는 특정 프로그램("피어-에이전트(Peer-Agent, PA)"라고 하는 클라이언트 소프트웨어)을 구현하고, 이는 예를 들어 피어 투 피어 사용을 위해 플레이어(예를 들어, 웹 브러우저의 확장)에 통합되거나, 전용 어플리케이션의 대상이 되거나, 또는 심지어는 임의의 다른 온-보드 소프트웨어(예를 들어, 인터넷 접근 박스 또는 멀티미디어 박스의 플레이어, 즉, "셋톱 박스")에 통합될 수도 있다. 이 방법은 주로 이 클라이언트 소프트웨어를 통해 구현된다. 본 설명의 나머지 부분에서, 클라이언트 소프트웨어는 플레이어에 세그먼트를 제공하기 위해 플레이어와 통신하지만 독립적으로 작동한다고 가정될 것이다. 보다 정확하게는 플레이어의 역할은 재생 그 자체, 즉 세그먼트의 렌더링인 반면 클라이언트 소프트웨어의 역할은 단순히 플레이어에 대한 세그먼트를 획득하는 것이며 클라이언트 소프트웨어는 플레이어를 작동하고 특히 그의 ABR 로직을 작동한다.
설명된 바와 같이, 피어 투 피어 또는 P2P 네트워크는 네트워크(1) 내의 분산된 서브-네트워크이며, 여기서 데이터는 중앙 서버를 거치지 않고 네트워크(10)의 두 클라이언트 디바이스(11, 12) 사이에서 직접 전송될 수 있다. 따라서 모든 클라이언트 디바이스(11, 12)는 클라이언트와 서버 모두로 작동할 수 있도록 한다. 따라서 피어(11, 12)는 "시더(seeder)"(즉, 데이터 제공자) 및/또는 "리처(leecher)"(즉, 데이터 수신자)로 정의된다.
구체적으로 오디오 또는 비디오 콘텐츠, 즉 특정 기간의 매체인 상기 콘텐츠는 피어-투-피어 네트워크(10)에 연결된 서버(2)에 데이터를 저장하기 위한 수단에 저장된 일련의 세그먼트(재생 목록이라고 함)로 구성되고, 설명된 대로 여러 품질 레벨로 이용 가능하다. 세그먼트는 미리 결정된 길이, 전형적으로 콘텐츠의 1초 또는 2초를 갖지만 몇 분의 1초(a fraction of a second)에서부터 약 10초 까지의 범위일 수 있다. 주어진 콘텐츠의 모든 세그먼트는 일반적으로 동일한 길이를 가지며 여기에서는 ρ로 설명될 것이다.
서버(2)는 콘텐츠 서버(CDN이라고 함)이고, 바람직하게는 네트워크(1)에 존재하고 피어-투-피어 네트워크(10)에 연결된다. 다시 말하면, 이는 주어진 스트리밍 프로토콜에 따라 다양한 콘텐츠의 세그먼트를 제공하는 인터넷 네트워크(1)의 하나의 (또는 그 이상의) 서버이다. 세그먼트가 "m3u8" 재생 목록 파일에 나열된 "ts" 파일인 경우 HLS(HTTP 라이브 스트리밍)을 예시로 들 수 있다. HLS는 콘텐츠에 대한 MPEG2 형식을 암시하며, DASH, Smooth 스트리밍 또는 HDS 스트리밍 프로토콜도 언급될 수 있다. 원시 세그먼트는 WebRTC 유형 프로토콜을 통해 피어 간에 교환될 수 있다.
서버(2)는 (서버(2)에서 이 피어(11, 12)로 처음 전송하기 전에) 처음에 피어에 콘텐츠가 없는 한 세그먼트의 기본 소스이다. 콘텐츠는 처음부터 서버(2)에 완전히 저장되거나(앞서 언급한 VOD의 경우와 같이) 실시간으로 생성되며(라이브 스트리밍의 경우와 같이), 후자의 경우 그들을 구성하는 세그먼트의 목록은 동적으로 진화한다.
라이브 스트리밍은 동시에 진행되는 콘서트, 회의, 스포츠 이벤트, 비디오 게임 플레이 등과 같은 "라이브" 이벤트와 관련된 콘텐츠를 실시간으로 방송할 것을 제안한다. 영화와 같이 이미 충분히 존재하는 콘텐츠의 스트리밍에 비해 라이브 스트리밍의 방송 콘텐츠는 관련 이벤트가 발생함에 따라 효과적으로 생성된다. 기술적으로, 텔레비전 라이브 방송의 경우와 같이 이러한 콘텐츠는 약간의 지연이 있어야만 방송될 수 있다. 사용자는 가능한 한 적은 지연을 원할 것이다. 이러한 지연은 일반적으로 1분 정도이지만 약 20초까지 줄어들 수 있다. 이는 언제든지 사용할 수 있는 소수의 세그먼트(최대 수십 개)의 재생 목록을 만들며, 이 목록의 세그먼트는 회전에 따라 동적으로 갱신된다: 이벤트가 진행됨에 따라 새로운 세그먼트가 생성되고 "오래된" 세그먼트는 수신되며 (예상 지연이 끝날 때) 클라이언트에 의해 재생되고 마지막으로는 목록을 떠난다.
후자의 경우(라이브 스트리밍) 콘텐츠는 연속 스트림으로 보는 것이 바람직하다. 따라서 세그먼트의 시퀀스는 동적이며, 즉, 정기적으로 업데이트된다. 새로운 세그먼트가 생성될 때마다 시퀀스 끝에 추가되고 시퀀스의 첫 번째 세그먼트(가장 오래된 세그먼트)가 삭제된다. 나머지는 모두 FIFO 목록과 비교될 수 있는 이동 메커니즘에 따라 이동한다. 목록의 첫 번째 세그먼트(가장 오래된 세그먼트)는 재생 지점에 있는 세그먼트, 다시 말하면 "라이브" 세그먼트(따라서 세그먼트가 재생되자마자 재생 목록에서 제거됨) 또는 콘텐츠 서버가 콘텐츠가 지연되어 재생되는 것을 수락하는 경우(일부 플랫폼에서는 최대 2시간 지연된 라이브 스트리밍을 제안함) "과거" 세그먼트일 수 있으며, 이를 디지털 비디오 레코더(Digital video recorder, DVR)라고 한다.
이 방법은 모든 맥락에서 구현될 수 있다.
"추적기"라고 하는 피어 관리 서버(3)는 또한 바람직하게는 피어-투-피어 네트워크(10)에 연결된다. 추적기(3)는 데이터 처리 수단 및 저장 수단을 갖는다. 이는 (각 클라이언트 디바이스(11, 12)에 의해 구현된 클라이언트 소프트웨어를 제어함으로써) 피어(11, 12) 간의 교환을 조정하지만 데이터 전송에 직접 관련되지 않고 파일 사본을 가지고 있지 않다.
ABR
언급한 바와 같이, 제2 버퍼(M2)의 대역폭(즉, 관찰된 데이터 레이트)과 (값, 즉, 초당 또는 세그먼트의 갯수 당 또는 레이트 당) 필 레벨 각각을 기반으로 하는 두 가지 주요 유형의 (가능하면 조합으로) ABR 로직이 있다. 다시 말해, 플레이어는 제2 버퍼(M2)의 대역폭 및/또는 필 레이트/볼륨을 모니터링하고 결과적으로 요구되는 세그먼트의 품질 레벨이 수정되어야 하는지 여부에 대한 결정을 내린다.
일반적으로 두 경우 모두 ABR 로직은 세그먼트 수신율을 나타내는 적어도 하나의 파라미터의 함수로 선택될 품질 레벨(비트레이트)을 계산하는 것을 가능하게 하는 제1 함수를 통해 정의될 수 있으며, 예를 들어, 도 2에 표시된 (왼쪽 부분은 플레이어 측을 나타내고 오른쪽 부분은 클라이언트 소프트웨어 측을 나타내는) 곡선을 참조한다.
세그먼트 수신율을 나타내는 상기 파라미터는 모니터링되는 파라미터이며, 이는 디바이스(11) 및/또는 네트워크(10)가 세그먼트를 "충분히 빠르게" 수신할 수 있는 능력을 나타내는 임의의 파라미터일 수 있음을 이해해야 한다. 이전에 설명된 바와 같이, 공지된 ABR 로직은 일반적으로 제2 버퍼(M2) 및/또는 대역폭의 파라미터로서 필 레벨을 사용한다.
ABR 로직의 유형에 관계없이, 상기 제1 함수는 최소 품질 값과 최대 품질 값 사이에서 주로 단조 증가한다. 선호되는 모델은 첫 번째 및 세 번째 상수 구간(piece)를 포함하여 (두 개의 특이점에서 연결되는) 3개의 구간을 가지는 연속 구간 함수의 모델이다.
따라서 도 2(왼쪽 부분)의 예에서 제2 버퍼(M2)(초로 표시)의 필 레벨을 기반으로 하는 ABR 로직의 예시가 표시되며 다음을 확인할 수 있다:
- 최소 임계값 Bmin 이하의 필 레벨의 경우, 비트레이트는 최소 비트레이트 Rmin(즉, 버퍼가 위험할 정도로 비어 있다는 것이고, 이는 세그먼트를 획득하는 데 어려움이 있다는 것을 나타내며 이후 품질은 재충전을 촉진하기 위해 최소임)과 동일하게 설정됨;
- 최대 임계값 Bmax 이상의 필 레벨의 경우, 비트레이트는 최대 비트레이트 Rmax(버퍼가 가득 차있으므로 최대 품질을 제공하는 데 위험이 없음)와 동일하게 설정됨;
- 둘 사이에는 증가하는, 바람직하게는 선형인 곡선이 있음 - 도 2의 예에서, 이는 방정식 R=Rmin+(B-Bmin)*(Rmax-Rmin)/(Bmax- Bmin)을 가짐 - 이는 버퍼가 가득 찰수록 품질이 좋다는 것을 의미함.
대역폭을 기반으로 하는 ABR 로직에 대해서도 유사한 곡선이 획득된다.
아래에서 볼 수 있듯이, 본 방법은 로직을 변경하는지 않고 세그먼트에 대한 요청을 충족하기 전에 추가된 응답 시간을 통해 ABR을 속임으로써 ABR을 제어하는것을 제안한다. 실제로, 세그먼트의 제공을 단순히 지연시키는 것은 제2 버퍼(M2)의 대역폭 및 필 레벨을 인위적으로 제한하여서, 세그먼트의 예상 품질에서 작용하는 것을 가능하게 한다.
이를 위해, 표현된 예시들에서 세그먼트 수신율을 나타내는 상기 적어도 하나의 파라미터의 함수로서 상기 응답 시간을 허용하는 제2 함수가 정의되며, 따라서 이는 다시 제2 버퍼(M2)의 필 레벨이다.
제2 함수는 바람직하게는 제1 함수에서 구성(또는 심지어 학습됨, 아래 참조)되며, 즉, ABR 로직은 제2 함수를 통해 맵핑될 수 있다. 따라서, 바람직한 실시예에 따르면, 제2 함수는 세그먼트 수신율을 나타내는 상기 적어도 하나의 파라미터와 비교하여 단조적이며, 일반적으로(특히, 이하에서 발전될 제2 버퍼(M2)의 필 레벨에 기초한 ABR 로직의 경우) 제1 및 제2 함수는 세그먼트 수신율(특히, 증가하는 함수)을 나타내는 상기 적어도 하나의 파라미터에 대해 동일한 단조성을 갖는다. 실제로 제2 함수는 ABR 로직의 제1 함수와 가장 유사한 경우가 많으며(다시 두 개의 극단 세그먼트를 포함하는 세 구간을 가지는 연속 구간 함수임), 예를 들어 도 2의 오른쪽에 표시된 대응하는 곡선을 참조한다.
예를 들어, 맵핑은 제1 함수에서 두 점, 특히 좌표 {Bmin, Rmin=f1(Bmin)} 및 {Bmax, Rmax=f1(Bmax)}를 연결하는 특이점을 취하고 두 개의 대응하는 점 {Bmin, rmin=f2(Bmin)} 및 {Bmax, rmax=f2(Bmax)}에 기초하여 제2 함수를 구성하는 것으로 구성될 수 있다. 바람직하게는, 제2 함수는 제1 함수와 동일한 단조성, 특히 상기 두 지점을 통해 연결된 3개의 구간을 갖는 연속 구간 함수로 구성된다.
따라서, 우측의 도 2의 예시에서 제2 함수는 다음과 같이 구성된다:
- 최소 임계값 Bmin 이하의 필 레벨의 경우 응답 시간은 최소값 ρmin, 바람직하게는 0으로 설정됨. 즉, 시간이 추가되지 않음(다시 말하면, 버퍼가 위험할 정도로 비어 있고 수신된 세그먼트를 직접 제공할 위험이 없음),
- 최대 임계값 Bmax 이상의 필 레벨의 경우 응답 시간은 최대값 ρmax, 바람직하게는 세그먼트의 길이 p와 동일하게 설정됨(이는 비디오 버퍼의 필 레이트를 더 이상 증가시키지 않도록 하는 것을 가능하게 하며, P2P 캐시는 이전 세그먼트가 완전히 재생된 경우에만 새로운 세그먼트를 제공하여 마진을 유지함).
- 둘 사이에는 증가하는, 바람직하게는 선형인 곡선이 있
- 둘 사이에는 증가하는, 바람직하게는 선형인 곡선이 있음 - 도 2의 예에서, 이는 방정식 ρ=ρmin+ (B-B min)*(ρmax―ρmin)/(Bmax―Bmin)을 가짐 - 이는 버퍼가 가득 찰수록 응답 시간이 길어져 필 레이트가 더 이상 증가하는 것을 방지한다는 것을 의미함.
제1 및 제2 함수가 세그먼트 수신율을 나타내는 상기 적어도 하나의 파라미터와 비교하여 역 단조성을 가질 수도 있음을 유의하며(즉, 제1 함수가 감소할 때 제2 함수가 증가하고 그 반대도 마찬가지임), 이는 특히 ABR 로직이 대역폭을 기반으로 하는 경우(그러면 제1 함수는 증가하고 제2 함수는 감소함)이다.
이 방법은 주어진 응답 시간 어플리케이션 전략에 제한되지 않을 것이며, 통상의 기술자는 이러한 아이디어를 ABR 로직, 플레이어가 모니터링하는 파라미터의 유형, P2P 네트워크의 동작 등에 적용할 수 있을 것이다. 일반적으로 ABR 로직을 정의하는 제1 함수에서 응답 시간을 정의하는 제2 함수를 구성하는 것으로 충분하다고 이해될 것이다.
재생
본 설명의 나머지 부분에서 초점은 다른 디바이스(12) 및/또는 서버(2)로부터 콘텐츠를 검색하는 프로세스, 즉, 제1 버퍼(M1)가 적어도 하나의 품질 레벨로 적어도 하나의 원시 세그먼트를 이미 저장, 가능하면 콘텐츠를 구성하는 시퀀스의 하위 시퀀스에 저장하고 있는 프로세스에 있을 수 있는 클라이언트 디바이스(11)에 있을 것이다.
이후, 본 방법은 처리 수단(110)에 의해 단계 (a)의 장비로부터 세그먼트에 대한 요청을 수신하기 위한 구현으로 시작한다. 이 경우, 요청은 다음 세그먼트가 제2 버퍼(M2)(반드시 재생할 다음 세그먼트가 필요한 것은 아니지만 일반적으로 버퍼링된 고급 세그먼트가 있음)에 들어가도록 하는 것이다. 상기 요청은 플레이어로부터 수신되고, 바람직하게는 세그먼트가 요구되는 품질 레벨, 즉 (ABR 로직의 적용에 의한) 비트레이트를 정의한다.
상기 세그먼트는 이 단계에서 플레이어가 요구하는 품질로 제1 버퍼(M1)에서 적어도 부분적으로(즉, 적어도 하나의 프래그먼트) 이용 가능한 것으로 가정된다. 이 세그먼트/세그먼트 프로그먼트가 다른 품질이면 시간이 충분하지 않기 때문에 일반적으로 콘텐츠 서버(2)에서 직접 다시 검색되어야 한다.
설명된 바와 같이, 단계 (a)는 플레이어의 상기 ABR 로직에 대해 정의된 응답 시간의 계산을 포함하고, 특히 ABR 로직에 의해 모니터링되는 파라미터(세그먼트 수신율을 나타내는 상기 적어도 하나의 파라미터), 바람직하게는 제2 버퍼(M2)의 필 레벨 및/또는 대역폭의 함수로서 플레이어의 상기 ABR 로직에 대해 정의된 응답 시간의 계산을 포함하는 것이 유리하다. 단계 (a)는 필요한 경우 세그먼트 수신율을 나타내는 상기 파라미터의 "측정"을 포함한다.
설명된 바와 같이, 응답 시간을 정의하는 제2 함수는 바람직하게는 최소 응답 시간 값과 최대 값 사이의 세그먼트 수신율을 나타내는 상기 파라미터로 증가한다.
검색된 다음 세그먼트의 프래그먼트만 있는 경우(세그먼트가 불완전한 형태로 사용 가능하다고 함), 바람직하게 계산된 응답 시간은, 응답 시간의 한 프래그먼트만 실제로 적용되어야 한다는 사실을 반영하기 위해 프래그먼트의 길이에 따라 수정된다. 실제로 제2 버퍼(M2)는 프래그먼트가 아닌 완전한 세그먼트로만 제공될 수 있으며, 아이디어는 제1 버퍼(M1)에서 이 세그먼트를 완료(검색 완료)하는 시간에 암시적으로 해당하는 대기 기간이 이미 있을 것이라는 사실을 반영하여 단축된 응답 시간의 끝에 완전한 방식으로 세그먼트를 제공하는 것이다. 따라서, 단계 (a)는 세그먼트 검색을 완료하는 데 필요한 예상 시간을 기반으로 계산된 응답 시간을 수정하는 것을 포함한다.
예를 들어, 공식 ρ'=ρ-tdw를 적용할 수 있으며, 여기서 ρ'는 수정된 응답 시간이고 tdw는 세그먼트 검색을 완료하는 데 필요한 예상 기간이다. 따라서 완전한 세그먼트를 제공하기 전에 tdw에 ρ'의 적용을 더한 시간을 기다리는 것은 애플리케이션 ρ와 동일하므로 전체 시간이 동일하게 유지된다.
단계 (b)에서, 상기 요구된 세그먼트는 상기 응답 시간이 만료되면 제1 버퍼(M1)로부터의 요청에 대한 응답으로 제공된다. "상기 응답 시간이 만료되면 제공됨"은 응답 시간이 만료되기 전(기껏해야 만료 시점에, 또는 일부 경우에는 심지어 이후에만, 아래 참조)에는 플레이어에게 그것이 없음을 의미하는 것으로 이해된다. 대부분의 경우 세그먼트는 응답 시간이 만료되면 한 번에 전송되지만 디바이스(1) 내에서 이를 스트리밍하는 것, 즉 제1 버퍼(M1)에서 점진적으로(비트별로) 전송하는 것 또한 가능하므로, 응답 시간이 만료되면 마지막 비트가 (가장 빨리) 전송(그러면, 응답 시간은 "세그먼트의 마지막 비트의 전송 시간"임)된다는 것을 이해할 것이다. 실제로 완전한 세그먼트만 재생 가능하지만 일부 플레이어는 세그먼트의 하위 세그먼트를 허용할 수 있다. 이러한 점진적인 전송은 세그먼트가 완전히 수신되지 않는 한 아무 것도 변경하지 않으며, 플레이어에 의해 이용 가능하지 않으므로 제공되는 것으로 간주되지 않지만 대역폭 측정을 용이하게 할 수 있다.
세그먼트의 프래그먼트만 제1 버퍼(M1)에서 이용 가능하고, 세그먼트 검색을 완료하는 데 필요한 예상 기간에 따라 응답 시간이 수정된 경우 일반적으로 세그먼트는 수정된 응답 시간이 만료되면 단계 (b)에서도 제공된다. 설명된 바와 같이, 제공이 프래그먼트화될 수 있지만 완전한 세그먼트의 하위 세그먼트(완전히 다운로드된 세그먼트에서 획득된 연속적인 세그먼트 조각에 해당)는 (가장 자주 서로 다른 조각에 해당하는 일부 데이터 부분만 다운로드된) 불완전한 세그먼트와 혼동되어서는 안된다. 요청에 대한 응답으로 제1 버퍼(M1)에서 완전한 형태로 사용 가능한 세그먼트만 (필요한 경우 점진적으로) 제공될 수 있으므로 (프래그먼트가 아님) 다운로드가 예상보다 오래 걸리는 경우 수정된 응답 시간이 만료된 후에만 세그먼트가 완전한 형태로 사용 가능하다. 따라서 완전한 세그먼트는 수정된 응답 시간이 만료되는(즉, 이전이 아니라) 가장 이른 시기에 제공되지만, 가능하면 그 이후에 제공된다. 실제로 완전한 세그먼트는 다음의 두 가지 조건이 충족될 때 제공된다: 세그먼트가 완전한 형태로 사용 가능함(그 다운로드가 완료됨), 및 수정된 응답 시간이 만료됨.
바람직하게는, 모든 경우에 세그먼트가 제2 버퍼(M2)에 제공되고, 이에 따라, 단계 (b)는 제1 버퍼(M1)의 상기 세그먼트의 디바이스(11) 상에서의 재생에 적합한 형태로의 변환을 포함할 수 있다. 이 단계는 원시 세그먼트를 첫 번째와 달리 디바이스(11)의 플레이어에 의해 재생될 수 있는 변환된 세그먼트로 변환하는 단계로 구성된다.
예를 들어, 플레이어가 HTML5와 호환되는 브라우저의 내장 플레이어인 경우, 변환은 브라우저의 API 미디어 소스 확장(API Media Source Extension)을 사용하여 세그먼트의 비디오 데이터를 주입하는 단계로 구성된다.
당연히, 단계 (b)는 유리하게는, 제2 버퍼(M2)에 저장된 이전 세그먼트의 동시 재생을 포함하여 세그먼트가 "회전"하는 단계를 포함한다. (b) 단계에서 검색된 세그먼트가 곧 차례로 재생될 것이다.
이제 재생이 지속되는 한, 단계 (a)와 (b)가 반복될 수 있다: 시간의 적용은 ABR을 안정화하고, 최악의 경우 새로운 ABR 결정으로 인해 플레이어가 요구하는 품질 레벨이 어찌되었건 변경되는 경우에 세그먼트는 새로운 요구되는 품질 수준에 따라 P2P 네트워크에서 로드될 것이므로 사용자는 방해받지 않을 것이다.
예측
특히 바람직한 방식으로, 단계 (a)는 가능한 다음 ABR 결정을 예측, 즉 다음 세그먼트가 요구될 품질 레벨을 예측하는 단계를 더 포함한다(즉, 다음 단계 (a)의 발생 시).
실제로 제1 함수를 적용하면 계산된 응답 시간을 적용하기 전에 ABR에서 요구하는 품질 레벨이 변경될지 여부를 결정하는 것이 가능하다.
계산을 용이하게 하기 위해 길이가 p인 완전한 세그먼트가 제공되었다고 가정할 것이다. 따라서, 단계 (b)의 끝에서, 제2 메모리(M2)의 필 레벨은 p만큼, 즉 세그먼트의 길이만큼 증가될 것이다. 반면에 응답 시간 ρ이 경과하고 제2 메모리(M2)의 콘텐츠와 동일한 지속 시간이 재생되고 삭제되었으므로, 새로운 필 레벨 Bn은 (세그먼트의 마지막 제공 시에) 공식 Bn=Bn-1+r-rn 에 의해 이전 Bn-1 에 대해 상대적으로 표현될 수 있다(세그먼트 수신율을 나타내는 파라미터가 대역폭인 경우에도 유사한 계산이 이루어질 수 있음에 유의한다). 따라서 f1(Bn)을 계산하여 다음 ABR 결정을 예측하고 필요한 경우 품질 레벨의 변화를 예상하고 올바른 품질 레벨의 미래 세그먼트를 요구하는 것으로 충분하다(이것이 "프리페치"임). 따라서 사용자가 귀찮아질 확률은 훨씬 더 낮다.
이 방법은 단계 (b)의 끝에서 예측을 검증하는 단계 (c)를 포함할 수 있다는 것을 유의한다(필요한 경우 다음 단계 (a)의 발생과 혼동됨).
보다 정확하게는 ABR 로직이 "새로운" 요구된 품질 레벨, 즉 다음 세그먼트에 요구되는 품질 레벨을 계산하기 위해 다시 시작되며, 이와 관련하여 세그먼트에 대한 해당 요청이 클라이언트 소프트웨어로 전송된다. 검증은 단순히 다음 세그먼트에 대해 예측된 품질 레벨과 실제로 요구되는 품질 레벨을 비교하는 것으로 구성된다.
학습
제1 실시예에 따르면, 제1 함수는 알려진 것으로 가정되고, 제2 함수는 이 제1 함수로부터 미리 구성될 수 있다.
그러나 다른 경우에는 플레이어가 완전히 닫혀 있으면 제1 함수가 잘 알려지지 않거나 전혀 알려지지 않을 수 있다.
그런 다음, 특히 학습 수단으로 ABR 결정의 예측을 사용함으로써 제1 함수 및/또는 제2 함수를 점진적으로 학습하는 것이 가능하다: 각 세그먼트에 대해 예측 및 실제로 이루어진 결정, 즉 예측된 품질 레벨과 학습 루프를 구성하는 실제로 요구되는 품질 레벨은 단계 (c)에서 비교된다.
특히 기본 함수에서 시작하여 시간이 지남에 따라 파라미터를 변경함으로써 제1 또는 제2 함수를 추정하는 것이 가능하다. 예를 들어, 제1 함수는 세 개의 세그먼트를 가지는 구간 함수를 가정하여 네 개의 파라미터 Bmin, Rmin, Bmax 및 Rmax 의 값을 통해 파라미터화될 수 있으며, 유사하게 제2 함수도 세 개의 세그먼트를 가지는 구간 함수를 가정하여 네 개의 매개변수 Bmin, ρmin, Bmax 및 ρmax 값을 통해 파라미터화될 수 있다(따라서, 총 6개의 변수).
따라서 콘텐츠의 첫 번째 세그먼트에서 클라이언트 소프트웨어는 아마 응답 시간을 부정확하게 계산할 것이고, 이는 예기치 않은 ABR 결정과 통제되지 않은 품질 레벨 변경으로 이어질 것이나, 알고리즘이 빠르게 개선되고 ABR 로직은 완전히 통제 하에 있을 것이다.
특히, 예를 들어 신경망과 같은, 학습 알고리즘이 사용될 수 있다.
학습이 수행되는 데이터는 후속 세션 동안 학습 단계와 관련된 문제를 제거하거나 제한하기 위해 세션 사이에 유지될 수 있다.
플레이어의 버전 번호 변경과 같은 일부 요소는 저장된 파라미터를 무효화하고 새로운 학습 단계를 위해 빈 파라미터를 다시 시작하기 위해 사용될 수 있다.
대안적으로/추가적으로, 학습된 함수는 예를 들어 P2P 메시지를 통해 다른 피어(12) 또는 피어 관리 서버(3)로 전송될 수 있다.
디바이스 및 컴퓨터 프로그램 제품
제2 양태에 따르면, 본 발명은 적응 비트레이트 조절 로직(ABR)에 따라 세그먼트의 품질 레벨을 선택하도록 구성된 플레이어 상에서 콘텐츠를 재생하기 위한 이 방법의 구현을 위한 클라이언트 디바이스(11)에 관한 것이다.
이러한 디바이스(11)는, 이하를 포함한다:
- 일련의 세그먼트로 구성된 콘텐츠의 적어도 하나의 세그먼트를 임시로 저장하는 제1 버퍼(M1) - 각 원시 세그먼트는 피어-투-피어 네트워크(10) 내에서 전송에 적합한 형식임 -;
- 상기 콘텐츠의 적어도 하나의 변환된 세그먼트를 플레이어에 의해 재생하기에 적합한 형식으로 일시적으로 저장하는 제2 버퍼(M2); 그리고
- 데이터 처리 수단(110).
전형적으로 프로세서인, 데이터 처리 수단(110)은 세그먼트에 대한 요청을 수신한 후, 상기 플레이어의 ABR 로직에 대해 정의된 응답 시간의 만료 시 상기 세그먼트를 제1 버퍼(M1)에 제공하는 것(전형적으로 제2 버퍼(M2)로의 주입에 의해 플레이어에게)을 구현하도록 구성된다.
다른 양태에 따르면, 본 발명은 클라이언트 디바이스(11) 상에서 (데이터 처리 수단, 특히 클라이언트 디아비스(11)의 데이터 처리 수단에서) 클라이언트 디바이스(11, 12)의 피어-투-피어 네트워크(10) 내의 방송 콘텐츠를 스트리밍하기 위한 본 발명의 제1 양태에 따른 방법을 실행하도록 하는 코드 명령을 포함하는 컴퓨터 프로그램 제품; 뿐만 아니라 이러한 컴퓨터 프로그램 제품이 있는 컴퓨터 디바이스(예를 들어, 클라이언트 디바이스(11)의 메모리)에 의해 재생 가능한 저장 수단에 관한 것이다.

Claims (14)

  1. 클라이언트 디바이스(11)의 플레이어 상에서, 상기 클라이언트 디바이스(11, 12)의 피어-투-피어 네트워크(10) 내의 방송 콘텐츠를 스트리밍하는 방법으로서,
    상기 콘텐츠는 복수의 품질 레벨로 이용 가능한 일련의 세그먼트로 구성되고, 상기 플레이어는 적응형 비트레이트(adaptive bitrate, ABR) 조절 로직에 따라 세그먼트의 품질 레벨을 선택하도록 구성되며,
    상기 클라이언트 디바이스(11)는 상기 피어-투-피어 네트워크(10) 내에서 전송하기에 적합한 형식으로 세그먼트를 저장하도록 구성된 제1 버퍼(M1)를 포함하고,
    상기 방법은, 상기 디바이스(11)의 데이터 처리 수단(110)이,
    (a) 상기 플레이어로부터 세그먼트에 대한 요청을 수신하는 단계, 및
    (b) 응답으로, 상기 플레이어의 ABR 로직과 관련하여 정의된 응답 시간이 만료되면 상기 제1 버퍼(M1)로부터 상기 세그먼트를 제공하는 단계를 구현하는 것을 포함하는,
    방송 콘텐츠를 스트리밍하는 방법.
  2. 제1항에 있어서,
    상기 ABR 로직은 상기 세그먼트가 세그먼트 수신율을 나타내는 적어도 하나의 파라미터의 함수로 요구되는 품질 레벨을 계산하는 것을 가능하게 하는 제1 함수에 의해 정의되는, 방송 콘텐츠를 스트리밍하는 방법.
  3. 제2항에 있어서,
    제2 함수는 단계 (a)에서 세그먼트 수신율을 나타내는 상기 적어도 하나의 파라미터의 함수로서 상기 응답 시간을 계산하는 것을 가능하게 하는, 방송 콘텐츠를 스트리밍하는 방법.
  4. 제3항에 있어서,
    상기 제2 함수는 상기 제1 함수로부터 구성되는, 방송 콘텐츠를 스트리밍하는 방법.
  5. 제3항 또는 제4항에 있어서,
    상기 제2 함수는 세그먼트 수신율을 나타내는 상기 적어도 하나의 파라미터와 비교하여 단조적인, 방송 콘텐츠를 스트리밍하는 방법.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서,
    상기 디바이스(11)는 상기 플레이어에 의한 재생에 적합한 형식으로 세그먼트를 저장하도록 구성된 제2 버퍼(M2)를 더 포함하고, 상기 세그먼트는 단계 (b)에서 상기 제2 버퍼(M2)에 제공되는, 방송 콘텐츠를 스트리밍하는 방법.
  7. 제2항 내지 제5항 중 어느 한 항을 인용하는 제6항에 있어서,
    상기 세그먼트 수신율을 나타내는 상기 파라미터는 상기 제2 버퍼(M2)의 필 레벨(fill level) 및/또는 대역폭인, 방송 콘텐츠를 스트리밍하는 방법.
  8. 제1항 내지 제7항 중 어느 한 항에 있어서,
    상기 단계 (a)는 다음 세그먼트가 요구될 품질 레벨을 계산된 응답 시간의 함수로서 예측하는 단계를 포함하는, 방송 콘텐츠를 스트리밍하는 방법.
  9. 제8항에 있어서,
    상기 다음 세그먼트가 요구될 품질 레벨의 예측을 검증하는 단계 (c)를 포함하는, 방송 콘텐츠를 스트리밍하는 방법.
  10. 제9항에 있어서,
    상기 예측된 품질 레벨 및 실제 요구되는 품질 레벨에 기초하여 제2 함수를 학습하는 단계를 포함하는, 방송 콘텐츠를 스트리밍하는 방법.
  11. 제1항 내지 제10항 중 어느 한 항에 있어서,
    상기 요구된 세그먼트는 상기 제1 버퍼(M1)에서 불완전한 형태로 이용 가능하고,
    단계 (a)는 세그먼트 검색을 완료하는데 필요한 예상 시간에 기초하여 계산된 응답 시간을 수정하는 단계를 포함하며,
    상기 세그먼트는 수정된 응답 시간이 만료되면 가장 빨리 단계 (b)에서 완전한 형태로 제공되는, 방송 콘텐츠를 스트리밍하는 방법.
  12. 플레이어 상에서, 클라이언트 디바이스(11, 12)의 피어-투-피어 네트워크(10) 내의 방송 콘텐츠를 스트리밍하기 위한 디바이스(11)로서,
    상기 콘텐츠는 복수의 품질 레벨로 이용 가능한 일련의 세그먼트로 구성되고, 상기 플레이어는 ABR 로직에 따라 세그먼트의 품질 레벨을 선택하도록 구성되며,
    상기 클라이언트 디바이스(11)는 상기 피어-투-피어 네트워크(10) 내에서 전송하기에 적합한 형식으로 세그먼트를 저장하도록 구성된 제1 버퍼(M1) 및 데이터 처리 수단(110)을 포함하고,
    상기 데이터 처리 수단(110)은, 상기 플레이어로부터 세그먼트에 대한 요청을 수신한 후, 그에 응답하여, 상기 플레이어의 ABR 로직과 관련하여 정의된 응답 시간이 만료되면 상기 제1 버퍼(M1)로부터 상기 세그먼트를 제공하도록 구성되는, 디바이스(11).
  13. 제1항 내지 제11항 중 어느 한 항에 따른 방법을 실행하기 위한 코드 명령을 포함하는 컴퓨터 프로그램 제품으로서, 상기 프로그램이 컴퓨터에 의해 실행될 때 콘텐츠 서버(2)에 연결된 클라이언트 디바이스(11, 12, 13)의 피어-투-피어 네트워크(10)에서 스트리밍 콘텐츠를 방송하기 위한, 컴퓨터 프로그램 제품.
  14. 컴퓨터 프로그램 제품이 제1항 내지 제11항 중 어느 한 항에 따른 콘텐츠 서버(2)에 연결된 클라이언트 디바이스(11, 12, 13)의 피어-투-피어 네트워크(10)에서 스트리밍 콘텐츠를 방송하기 위한 방법을 실행하기 위한 코드 명령을 포함하는 컴퓨터 판독 가능한 저장 수단.
KR1020217035076A 2019-03-27 2020-03-27 피어 투 피어(Peer to peer, P2P) 네트워크에서 스트리밍 콘텐츠를 방송하는 방법 KR102472155B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
FRFR1903195 2019-03-27
FR1903195A FR3094597B1 (fr) 2019-03-27 2019-03-27 Procédé de diffusion de contenus en streaming dans un réseau pair à pair
PCT/EP2020/058709 WO2020193754A1 (fr) 2019-03-27 2020-03-27 Procédé de diffusion de contenus en streaming dans un réseau pair à pair

Publications (2)

Publication Number Publication Date
KR20210135338A true KR20210135338A (ko) 2021-11-12
KR102472155B1 KR102472155B1 (ko) 2022-11-28

Family

ID=67262682

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217035076A KR102472155B1 (ko) 2019-03-27 2020-03-27 피어 투 피어(Peer to peer, P2P) 네트워크에서 스트리밍 콘텐츠를 방송하는 방법

Country Status (9)

Country Link
US (3) US11128685B2 (ko)
EP (1) EP3949434A1 (ko)
JP (1) JP7059509B1 (ko)
KR (1) KR102472155B1 (ko)
AU (1) AU2020245087B2 (ko)
CA (1) CA3135076C (ko)
FR (1) FR3094597B1 (ko)
SG (1) SG11202110647QA (ko)
WO (1) WO2020193754A1 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR3094597B1 (fr) 2019-03-27 2021-06-11 Streamroot Procédé de diffusion de contenus en streaming dans un réseau pair à pair
EP3873097A1 (en) 2020-02-28 2021-09-01 Streamroot Method for playing on a player of a client device a content streamed in a network
EP3886451A1 (en) 2020-03-26 2021-09-29 Streamroot Method for playing on a player of a client device a content streamed in a network
EP4016954B1 (en) * 2020-12-18 2023-12-20 Streamroot Method for controlling a player playing a data stream streamed in a peer-to-peer network
KR20220142195A (ko) * 2021-04-14 2022-10-21 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
EP4080892A1 (en) * 2021-04-20 2022-10-26 Streamroot Method for playing on a player of a client device a content streamed in a network
EP4080891A1 (en) * 2021-04-20 2022-10-26 Streamroot Method for playing on a player of a client device a content streamed in a network
US11652876B2 (en) * 2021-07-22 2023-05-16 Rovi Guides, Inc. Assisted delivery service for networks
US11805169B2 (en) 2021-09-16 2023-10-31 Apple Inc. Content delivery network data sharing between mobile devices
CN114666609A (zh) * 2022-03-31 2022-06-24 北京奇艺世纪科技有限公司 视频数据下载方法、装置、电子设备及存储介质
EP4300916A1 (en) * 2022-06-27 2024-01-03 Streamroot A controller for controlling a player in a peer-to-peer network

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210139431A (ko) * 2019-03-22 2021-11-22 스트림루트 복수 개의 콘텐츠 전송 네트워크와 통신할 수 있는 클라이언트 디바이스에 의하여 데이터 세그멘트를 획득하기 위한 방법

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150341812A1 (en) * 2003-08-29 2015-11-26 Ineoquest Technologies, Inc. Video quality monitoring
CA2618328C (en) * 2005-08-12 2015-12-15 Nokia Siemens Networks Gmbh & Co. Kg A multi-source and resilient video on demand streaming system for a peer-to-peer subscriber community
US8335873B2 (en) * 2006-09-14 2012-12-18 Opentv, Inc. Method and systems for data transmission
JP5529177B2 (ja) * 2011-01-19 2014-06-25 ネイバー ビジネス プラットフォーム コーポレーション P2p基盤のストリーミングサービスでバッファリングを行うシステムおよび方法、並びにクライアントでバッファリングを処理するアプリケーションを配布するシステム
US20130031211A1 (en) * 2011-01-29 2013-01-31 Dustin Johnson Feedback oriented private overlay network for content distribution
EP2681869B1 (en) 2011-02-28 2018-01-31 Bittorrent, Inc. Peer-to-peer live streaming
US8489760B2 (en) * 2011-03-31 2013-07-16 Juniper Networks, Inc. Media file storage format and adaptive delivery system
US8964977B2 (en) 2011-09-01 2015-02-24 Sonic Ip, Inc. Systems and methods for saving encoded media streamed using adaptive bitrate streaming
US8949440B2 (en) 2012-07-19 2015-02-03 Alcatel Lucent System and method for adaptive rate determination in mobile video streaming
EP2833640A1 (en) * 2013-08-02 2015-02-04 British Telecommunications public limited company Video caching
US9124947B2 (en) * 2013-09-04 2015-09-01 Arris Enterprises, Inc. Averting ad skipping in adaptive bit rate systems
US9699236B2 (en) 2013-12-17 2017-07-04 At&T Intellectual Property I, L.P. System and method of adaptive bit-rate streaming
US9692800B2 (en) * 2014-06-11 2017-06-27 Google Inc. Enhanced streaming media playback
US9769536B2 (en) * 2014-12-26 2017-09-19 System73, Inc. Method and system for adaptive virtual broadcasting of digital content
US9756112B2 (en) * 2015-02-11 2017-09-05 At&T Intellectual Property I, L.P. Method and system for managing service quality according to network status predictions
US10244270B2 (en) * 2015-03-25 2019-03-26 Amazon Technologies, Inc. Determining initial bit rate for adaptive bit rate video playback
US9641578B2 (en) 2015-04-02 2017-05-02 Arris Enterprises, Inc. Minimizing unicast bandwidth in an adaptive bit rate system
FR3034943B1 (fr) * 2015-04-07 2017-04-14 Streamroot Inc Procede de lecture en continu sur un equipement client d'un contenu diffuse au sein d'un reseau pair a pair
US10476926B2 (en) * 2015-06-12 2019-11-12 Telefonaktiebolaget Lm Ericsson (Publ) System and method for managing ABR bitrate delivery responsive to video buffer characteristics of a client
WO2017063189A1 (en) * 2015-10-16 2017-04-20 Qualcomm Incorporated Deadline signaling for streaming of media data
US20170272783A1 (en) 2016-03-16 2017-09-21 Telefonaktiebolaget Lm Ericsson (Publ) Architecture for interconnected set-top boxes
US11366909B2 (en) * 2016-06-10 2022-06-21 OneTrust, LLC Data processing and scanning systems for assessing vendor risk
US10390070B2 (en) * 2017-03-31 2019-08-20 Intel Corporation Methods and apparatus for adaptive video transmission based on channel capacity
US10728305B2 (en) * 2018-07-24 2020-07-28 At&T Intellectual Property I, L.P. Adaptive bitrate streaming techniques
US11509703B2 (en) * 2018-09-26 2022-11-22 Vmware, Inc. System and method for widescale adaptive bitrate selection
US11622140B2 (en) * 2018-12-19 2023-04-04 Yahoo Assets Llc Selective streaming of video segments based on buffer data and download rate range
FR3094597B1 (fr) 2019-03-27 2021-06-11 Streamroot Procédé de diffusion de contenus en streaming dans un réseau pair à pair

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210139431A (ko) * 2019-03-22 2021-11-22 스트림루트 복수 개의 콘텐츠 전송 네트워크와 통신할 수 있는 클라이언트 디바이스에 의하여 데이터 세그멘트를 획득하기 위한 방법

Also Published As

Publication number Publication date
CA3135076C (en) 2022-06-14
JP7059509B1 (ja) 2022-04-26
US20220021719A1 (en) 2022-01-20
US11689596B2 (en) 2023-06-27
US11128685B2 (en) 2021-09-21
SG11202110647QA (en) 2021-10-28
WO2020193754A1 (fr) 2020-10-01
FR3094597B1 (fr) 2021-06-11
US20200351317A1 (en) 2020-11-05
AU2020245087B2 (en) 2021-12-09
EP3949434A1 (fr) 2022-02-09
JP2022524639A (ja) 2022-05-09
FR3094597A1 (fr) 2020-10-02
KR102472155B1 (ko) 2022-11-28
CA3135076A1 (en) 2020-10-01
AU2020245087A1 (en) 2021-11-04
US20230336600A1 (en) 2023-10-19

Similar Documents

Publication Publication Date Title
KR102472155B1 (ko) 피어 투 피어(Peer to peer, P2P) 네트워크에서 스트리밍 콘텐츠를 방송하는 방법
CN110198495B (zh) 一种视频下载和播放的方法、装置、设备和存储介质
JP2010517365A (ja) プレフィックス・キャッシングに支援された、サービス品質を意識するピアツーピアのビデオ・オン・デマンド
US11925862B2 (en) Method for playing on a player of a client device a content streamed in a network
WO2022123066A1 (en) Method for playing on a player of a client device a content streamed in a network
US20230396845A1 (en) Method for playing on a player of a client device a content streamed in a network
US20220337897A1 (en) Method for playing on a player of a client device a content streamed in a network
US11637881B2 (en) Method for playing on a player of a client device a content streamed in a network

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant