KR102472155B1 - 피어 투 피어(Peer to peer, P2P) 네트워크에서 스트리밍 콘텐츠를 방송하는 방법 - Google Patents
피어 투 피어(Peer to peer, P2P) 네트워크에서 스트리밍 콘텐츠를 방송하는 방법 Download PDFInfo
- Publication number
- KR102472155B1 KR102472155B1 KR1020217035076A KR20217035076A KR102472155B1 KR 102472155 B1 KR102472155 B1 KR 102472155B1 KR 1020217035076 A KR1020217035076 A KR 1020217035076A KR 20217035076 A KR20217035076 A KR 20217035076A KR 102472155 B1 KR102472155 B1 KR 102472155B1
- Authority
- KR
- South Korea
- Prior art keywords
- segment
- peer
- function
- player
- buffer
- Prior art date
Links
- 239000000872 buffer Substances 0.000 claims abstract description 63
- 230000004044 response Effects 0.000 claims abstract description 53
- 238000000034 method Methods 0.000 claims abstract description 31
- 238000012545 processing Methods 0.000 claims abstract description 15
- 230000005540 biological transmission Effects 0.000 claims abstract description 11
- 230000003044 adaptive effect Effects 0.000 claims abstract description 7
- 230000006870 function Effects 0.000 claims description 68
- 238000004590 computer program Methods 0.000 claims description 11
- 230000033228 biological regulation Effects 0.000 abstract description 3
- 239000012634 fragment Substances 0.000 description 10
- 238000004422 calculation algorithm Methods 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 4
- 230000007423 decrease Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000010355 oscillation Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 229920006395 saturated elastomer Polymers 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/60—Network 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/63—Control 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/632—Control 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9005—Buffering arrangements using dynamic buffer space allocation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/10—Architectures or entities
- H04L65/102—Gateways
- H04L65/1033—Signalling gateways
- H04L65/104—Signalling gateways in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/61—Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
- H04L65/611—Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for multicast or broadcast
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/61—Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
- H04L65/613—Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for the control of the source by the destination
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/80—Responding to QoS
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/234—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
- H04N21/2343—Processing 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
- H04N21/23439—Processing 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 for generating different versions
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Information Transfer Between Computers (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
- Computer And Data Communications (AREA)
Abstract
본 발명은 클라이언트 디바이스(11)의 플레이어 상에서, 클라이언트 디바이스(11, 12)의 피어-투-피어 네트워크(10) 내의 방송 콘텐츠를 스트리밍하는 방법에 관한 것으로, 상기 콘텐츠는 복수의 품질 레벨로 이용 가능한 일련의 세그먼트로 구성되고, 상기 플레이어는 적응형 비트레이트 조절(adaptive bitrate regulation, ABR) 로직에 따라 세그먼트의 품질 레벨을 선택하도록 구성되며, 클라이언트 디바이스(11)는 피어-투-피어 네트워크(10) 내에서 전송하기에 적합한 형식으로 세그먼트를 저장하도록 구성된 제1 버퍼(M1)를 포함하고, 본 방법은, 디바이스(11)의 데이터 처리 수단(110)이,
a) 플레이어로부터 세그먼트에 대한 요청을 수신하는 단계, 및
b) 응답으로, 상기 플레이어의 ABR 로직과 관련하여 정의된 응답 시간이 만료되면 제1 버퍼(M1)로부터 상기 세그먼트를 제공하는 단계를 구현하는 것을 포함한다.
a) 플레이어로부터 세그먼트에 대한 요청을 수신하는 단계, 및
b) 응답으로, 상기 플레이어의 ABR 로직과 관련하여 정의된 응답 시간이 만료되면 제1 버퍼(M1)로부터 상기 세그먼트를 제공하는 단계를 구현하는 것을 포함한다.
Description
본 발명은 피어 투 피어(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은 본 발명에 따른 방법을 구현하기 위한 구조물을 나타낸다.
도 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)
- 클라이언트 디바이스의 플레이어 상에서, 상기 클라이언트 디바이스의 피어-투-피어 네트워크 내의 방송 콘텐츠를 스트리밍하는 방법으로서,
상기 콘텐츠는 복수의 품질 레벨로 이용 가능한 일련의 세그먼트로 구성되고, 상기 플레이어는 적응형 비트레이트(adaptive bitrate, ABR) 조절 로직에 따라 세그먼트의 품질 레벨을 선택하도록 구성되며,
상기 클라이언트 디바이스는 상기 피어-투-피어 네트워크 내에서 전송하기에 적합한 형식으로 세그먼트를 저장하도록 구성된 제1 버퍼를 포함하고,
상기 방법은, 상기 클라이언트 디바이스의 데이터 처리 수단이,
(a) 상기 플레이어로부터 세그먼트에 대한 요청을 수신하는 단계, 및
(b) 응답으로, 상기 플레이어의 ABR 조절 로직과 관련하여 정의된 응답 마감 시간이 만료되면 상기 제1 버퍼로부터 상기 세그먼트를 제공하는 단계를 구현하는 것을 포함하고,
상기 ABR 조절 로직은 상기 세그먼트가 세그먼트 수신률을 나타내는 적어도 하나의 파라미터의 함수로 요구되는 품질 레벨을 계산하는 것을 가능하게 하는 제1 함수에 의해 정의되며,
제2 함수는 단계 (a)에서 세그먼트 수신율을 나타내는 상기 적어도 하나의 파라미터의 함수로서 상기 응답 마감 시간을 계산하는 것을 가능하게 하는, 방송 콘텐츠를 스트리밍하는 방법. - 제1항에 있어서,
상기 제2 함수는 상기 제1 함수로부터 구성되는, 방송 콘텐츠를 스트리밍하는 방법. - 제1항에 있어서,
상기 제2 함수는 세그먼트 수신율을 나타내는 상기 적어도 하나의 파라미터와 비교하여 단조적인, 방송 콘텐츠를 스트리밍하는 방법. - 제1항에 있어서,
상기 디바이스는 상기 플레이어에 의한 재생에 적합한 형식으로 세그먼트를 저장하도록 구성된 제2 버퍼를 더 포함하고, 상기 세그먼트는 단계 (b)에서 상기 제2 버퍼에 제공되는, 방송 콘텐츠를 스트리밍하는 방법. - 제4항에 있어서,
상기 세그먼트 수신율을 나타내는 상기 파라미터는 상기 제2 버퍼의 필 레벨(filling level) 및/또는 대역폭인, 방송 콘텐츠를 스트리밍하는 방법. - 제1항에 있어서,
상기 단계 (a)는 다음 세그먼트가 요구될 품질 레벨을 응답 마감 시간의 함수로서 예측하는 단계를 포함하는, 방송 콘텐츠를 스트리밍하는 방법. - 제6항에 있어서,
상기 다음 세그먼트가 요구될 품질 레벨의 예측을 검증하는 단계 (c)를 포함하는, 방송 콘텐츠를 스트리밍하는 방법. - 제7항에 있어서,
상기 예측된 품질 레벨 및 실제 요구되는 품질 레벨에 기초하여 제2 함수를 학습하는 단계를 포함하는, 방송 콘텐츠를 스트리밍하는 방법. - 제1항에 있어서,
상기 요구된 세그먼트는 상기 제1 버퍼에서 불완전한 형태로 이용 가능하고,
단계 (a)는 세그먼트 검색을 완료하는데 필요한 예상 기간의 함수로서 응답 마감 시간을 수정하는 단계를 포함하며,
상기 세그먼트는 수정된 응답 마감 시간이 만료되면 가장 빨리 단계 (b)에서 완전한 형태로 제공되는, 방송 콘텐츠를 스트리밍하는 방법. - 플레이어 상에서, 클라이언트 디바이스의 피어-투-피어 네트워크 내의 방송 콘텐츠를 스트리밍하기 위한 디바이스로서,
상기 콘텐츠는 복수의 품질 레벨로 이용 가능한 일련의 세그먼트로 구성되고, 상기 플레이어는 ABR 조절 로직에 따라 세그먼트의 품질 레벨을 선택하도록 구성되며,
상기 클라이언트 디바이스는 상기 피어-투-피어 네트워크 내에서 전송하기에 적합한 형식으로 세그먼트를 저장하도록 구성된 제1 버퍼 및 데이터 처리 수단을 포함하고,
상기 데이터 처리 수단은, 상기 플레이어로부터 세그먼트에 대한 요청을 수신한 후, 그에 응답하여, 상기 플레이어의 ABR 조절 로직과 관련하여 정의된 응답 마감 시간이 만료되면 상기 제1 버퍼로부터 상기 세그먼트를 제공하도록 구성되고,
상기 ABR 조절 로직은 상기 세그먼트가 세그먼트 수신률을 나타내는 적어도 하나의 파라미터의 함수로 요구되는 품질 레벨을 계산하는 것을 가능하게 하는 제1 함수에 의해 정의되며,
제2 함수는 단계 (a)에서 세그먼트에 대한 요청을 수신할 때 세그먼트 수신율을 나타내는 상기 적어도 하나의 파라미터의 함수로서 상기 응답 마감 시간을 계산하는 것을 가능하게 하는,
디바이스. - 제1항에 따른 방법을 실행하기 위한 코드 명령이 포함된 컴퓨터 판독가능한 기록 매체에 저장된 컴퓨터 프로그램으로서,
상기 컴퓨터 프로그램은 컴퓨터에 의해 실행될 때 콘텐츠 서버에 연결된 클라이언트 디바이스의 피어-투-피어 네트워크에서 스트리밍 콘텐츠를 방송하기 위한, 컴퓨터 판독가능한 기록 매체에 저장된 컴퓨터 프로그램. - 제1항에 따른 방법을 실행하기 위한 코드 명령이 포함된 컴퓨터 프로그램이 저장된 컴퓨터 판독 가능한 저장 매체로서,
상기 컴퓨터 프로그램은 콘텐츠 서버에 연결된 클라이언트 디바이스의 피어-투-피어 네트워크에서 스트리밍 콘텐츠를 방송하기 위한 것인, 컴퓨터 프로그램이 저장된 컴퓨터 판독 가능한 저장 매체. - 삭제
- 삭제
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 KR20210135338A (ko) | 2021-11-12 |
KR102472155B1 true 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)
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 | 에스케이하이닉스 주식회사 | 저장 장치 및 그 동작 방법 |
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 |
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 |
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 |
Family Cites Families (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150341812A1 (en) * | 2003-08-29 | 2015-11-26 | Ineoquest Technologies, Inc. | Video quality monitoring |
KR101275726B1 (ko) | 2005-08-12 | 2013-06-17 | 노키아 지멘스 네트웍스 게엠베하 운트 코. 카게 | 피어-투-피어 가입자 공동체를 위한 다중-소스 및 내성 주문형 비디오 스트리밍 시스템 |
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基盤のストリーミングサービスでバッファリングを行うシステムおよび方法、並びにクライアントでバッファリングを処理するアプリケーションを配布するシステム |
WO2012153173A2 (en) * | 2011-01-29 | 2012-11-15 | Redthorne Media, Llc | Feedback oriented private overlay network for content distribution |
CA2828489C (en) | 2011-02-28 | 2019-09-24 | Bittorrent, Inc. | Sharing content according to a protocol for 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 |
FR3094164B1 (fr) * | 2019-03-22 | 2021-10-29 | Streamroot | Procédé d’obtention d’un segment de données par un dispositif client apte à communiquer avec une pluralité de réseaux de diffusion de contenu |
FR3094597B1 (fr) | 2019-03-27 | 2021-06-11 | Streamroot | Procédé de diffusion de contenus en streaming dans un réseau pair à pair |
-
2019
- 2019-03-27 FR FR1903195A patent/FR3094597B1/fr active Active
-
2020
- 2020-03-27 JP JP2021556863A patent/JP7059509B1/ja active Active
- 2020-03-27 KR KR1020217035076A patent/KR102472155B1/ko active IP Right Grant
- 2020-03-27 AU AU2020245087A patent/AU2020245087B2/en not_active Ceased
- 2020-03-27 CA CA3135076A patent/CA3135076C/en active Active
- 2020-03-27 US US16/832,088 patent/US11128685B2/en active Active
- 2020-03-27 WO PCT/EP2020/058709 patent/WO2020193754A1/fr unknown
- 2020-03-27 SG SG11202110647QA patent/SG11202110647QA/en unknown
- 2020-03-27 EP EP20713032.9A patent/EP3949434A1/fr active Pending
-
2021
- 2021-09-13 US US17/472,735 patent/US11689596B2/en active Active
-
2023
- 2023-06-23 US US18/213,481 patent/US20230336600A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2020193754A1 (fr) | 2020-10-01 |
EP3949434A1 (fr) | 2022-02-09 |
SG11202110647QA (en) | 2021-10-28 |
FR3094597B1 (fr) | 2021-06-11 |
US11689596B2 (en) | 2023-06-27 |
AU2020245087A1 (en) | 2021-11-04 |
US20220021719A1 (en) | 2022-01-20 |
CA3135076A1 (en) | 2020-10-01 |
JP2022524639A (ja) | 2022-05-09 |
US11128685B2 (en) | 2021-09-21 |
US20230336600A1 (en) | 2023-10-19 |
KR20210135338A (ko) | 2021-11-12 |
AU2020245087B2 (en) | 2021-12-09 |
US20200351317A1 (en) | 2020-11-05 |
CA3135076C (en) | 2022-06-14 |
FR3094597A1 (fr) | 2020-10-02 |
JP7059509B1 (ja) | 2022-04-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102472155B1 (ko) | 피어 투 피어(Peer to peer, P2P) 네트워크에서 스트리밍 콘텐츠를 방송하는 방법 | |
US10623785B2 (en) | Streaming manifest quality control | |
JP2010517365A (ja) | プレフィックス・キャッシングに支援された、サービス品質を意識するピアツーピアのビデオ・オン・デマンド | |
US12108115B2 (en) | Method for playing on a player of a client device a content streamed in a network | |
CN110022498B (zh) | 一种实现码率切换的方法及装置 | |
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 | |
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 |