KR101780981B1 - P2p 비디오 스트리밍을 지원하기 위한 장치 및 방법 - Google Patents

P2p 비디오 스트리밍을 지원하기 위한 장치 및 방법 Download PDF

Info

Publication number
KR101780981B1
KR101780981B1 KR1020150134933A KR20150134933A KR101780981B1 KR 101780981 B1 KR101780981 B1 KR 101780981B1 KR 1020150134933 A KR1020150134933 A KR 1020150134933A KR 20150134933 A KR20150134933 A KR 20150134933A KR 101780981 B1 KR101780981 B1 KR 101780981B1
Authority
KR
South Korea
Prior art keywords
video
client
swarm
layer
chunks
Prior art date
Application number
KR1020150134933A
Other languages
English (en)
Other versions
KR20170035706A (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 KR1020150134933A priority Critical patent/KR101780981B1/ko
Publication of KR20170035706A publication Critical patent/KR20170035706A/ko
Application granted granted Critical
Publication of KR101780981B1 publication Critical patent/KR101780981B1/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
    • 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
    • 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/23418Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving operations for analysing video streams, e.g. detecting features or characteristics

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Information Transfer Between Computers (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

P2P(Peer-to-Peer) 비디오 스트리밍을 지원하기 위한 관리 장치가 제공된다. 본 관리 장치는 VOD 제공 서버에서 제공되는 복수의 비디오 컨텐츠의 ID들을 기록한 컨텐츠 ID 테이블 및 관리 테이블을 저장하는 저장부를 포함할 수 있다. 여기서, 상기 복수의 비디오 컨텐츠의 각각은 N 개의 계층별 비트 스트림을 포함하고, 상기 N 개의 계층별 비트 스트림은 N 개의 스웜과 각각 연관되어 있고, 상기 관리 테이블은 상기 복수의 ID에 각각 대응하는 스웜 할당 테이블들을 포함하고, 상기 스웜 할당 테이블들의 각각에는 복수의 클라이언트가 상기 N 개의 스웜에 시드 클라이언트 또는 피어 클라이언트로서 할당되어 기록되어 있다. 본 관리 장치는, 신규 클라이언트로부터 원하는 비디오 컨텐츠의 ID 및 상기 N 개의 계층별 비트 스트림 중 수신하기를 원하는 계층별 비트 스트림의 개수(K)에 관한 정보를 포함하는 등록 요청 메시지를 수신하는 것에 응답하여 상기 ID에 대응하는 스웜 할당 테이블에서의 상기 N개의 스웜 중에서 첫번째 스웜 내지 K번째 스웜의 각각에 할당된 적어도 하나의 클라이언트의 리스트가 상기 신규 클라이언트에게 전송되도록 제어하는 제어부를 더 포함할 수 있다.

Description

P2P 비디오 스트리밍을 지원하기 위한 장치 및 방법{Apparatus and Method for Facilitating Point-to-Point Video Streaming}
본 발명은 P2P 비디오 스트리밍에 관한 것으로, 더 구체적으로는 P2P 간의 비디오 스트리밍을 원활하게 하기 위한 기술에 관한 것이다.
근래에 VOD(Video On Demand) 서버를 이용하여 동 서버에 저장된 오디오 및 비디오와 같은 멀티미디어 컨텐츠를 언제 어디서든 사용자의 선택·요구에 따라 제공하는 VOD 서비스가 안정적으로 공급되고 있는 상황이다. 이러한 VOD 서비스를 위한 전송 방식은 크게 다운로드(download) 방식과 스트리밍(streaming) 방식으로 구분된다. 다운로드 전송 방식은, 멀티미디어 컨텐츠, 예컨대 비디오 클립 전체를 내려 받은 후 재생하는 방식이고, 스트리밍 전송 방식은 단말기에서 멀티미디어 컨텐츠의 비트 스트림을 수신하면서 재생을 동시에 수행하는 방식이다. 다운로드 전송 방식은, 멀티 미디어의 재생 구간이 긴 경우 전체 데이터의 크기도 크므로 이를 모두 다운로드한 후에 재생하려면 사용자가 많은 시간을 기다려야 하고 단말기 측면에서도 큰 저장 공간이 필요하게 된다. 이 때문에 최근에서 다운로드 전송 방식보다는 스트리밍 전송 방식으로 VOD 서비스를 제공하는 것이 보편화되어 있다.
최근에는 멀티미디어 스트리밍에 의해 멀티미디어 컨텐츠를 단말기에 효과적으로 제공할 수 있는 연구가 활발히 진행되고 있다. 특히, 멀티미디어 컨텐츠 중에서 대체로 용량이 큰 비디오 컨텐츠를 사용자가 원하는 시간에 맞춰 제공할 수 있는 방법에 관한 연구가 활발해지고 있다. 이러한 연구의 결과로 제시된 대표적인 솔루션으로서 P2P(Peer-to-peer) 비디오 스트리밍 방식이 알려져 있다. P2P 비디오 스트리밍은, 비디오 컨텐츠를, 예컨대 MPEG-4 포맷으로 인코딩한 비트 스트림(bit stream)을 복수개의 비디오 청크(video chunks)로 나누어 저장하고 있는 서버에서 일부 비디오 청크를 동 비디오 청크를 요구한 피어 노드(peer node)에 전송하면, 이 피어 노드가 임시 서버 역할을 수행하면서 자신이 수신하여 보유하고 있는 비디오 청크들을 다른 피어 노드의 요구에 따라 그로 제공하는 방식이다. 이러한 P2P 비디오 스트리밍은, 피어 노드 각각이 가지고 있는 자원을 다른 피어 노드와 공유할 수 있다는 장점을 갖는다.
현재까지 제시된 P2P 비디오 스트리밍 방식은 모두 컨텐츠를 MPEG-2, H.263, MPEG-4 파트 2 등의 표준에 따라 인코딩하여 얻은 비트 스트림을 스트리밍하는 데에 초점을 맞추고 있다. 공지된 바와 같이, H.264/MPEG-4 파트 10 또는 AVC(Advanced Video Coding) 표준에서는 SVC(Scalable Video Coding) 코딩 모드를 지원하고 있는 바이나, 이러한 코딩 모드에 따라 컨텐츠를 인코딩하여 얻은 다수의 계층별 비트 스트림(layered bit streams)을 P2P 간에 효율적으로 스트리밍할 수 있는 스트리밍 기법은 아직 개발되어 있지 않은 상황이다.
본 발명의 과제는 VOD 서버에서 제공하는, SVC 코딩 방식에 따라 인코딩된 비디오 컨텐츠의 계층별 비트 스트림을 P2P 간에 효율적으로 스트리밍할 수 있도록 하는 비디오 스트리밍 관리 장치 및 방법을 제공하는 것이다.
본 발명의 다른 과제는 비디오 스트리밍 관리 장치의 통제하에 피어 클라이언트로부터 P2P 비디오 스트리밍 서비스를 효율적으로 제공받을 수 있는 클라이언트 장치 및 그에 의해 수행되는 방법을 제공하는 것이다.
본 발명의 다른 과제는 피어 클라이언트로 P2P 비디오 스트리밍 서비스를 효율적으로 제공할 수 있는 클라이언트 장치 및 그에 의해 수행되는 방법을 제공하는 것이다.
본 발명이 해결하고자 하는 과제들은 이상에서 언급한 과제들에 제한되지 않으며, 언급되지 않은 또 다른 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
본 발명의 실시예들에 따르면, P2P(Peer-to-Peer) 비디오 스트리밍을 지원하기 위한 관리 장치가 제공된다. 본 관리 장치는, 복수의 클라이언트를 N 개의 스웜(swarms)에 할당하여 기록한 관리 테이블을 저장한 저장부를 포함할 수 있다. 여기서, 상기 N 개의 스웜은 비디오 컨텐츠를 SVC(Scalable Video Coding) 기법으로 인코딩하여 생성된 N 개의 계층별 비트 스트림(layered bit streams)과 각각 연관되어 있고, 상기 복수의 클라이언트의 각각은 상기 해당 클라이언트가 할당된 스웜에서 시드(seed) 클라이언트 또는 피어(peer) 클라이언트로 분류된다. 본 관리 장치는 신규 클라이언트로부터의 등록 요청 메시지에 응답하여 상기 신규 클라이언트를 상기 N 개의 스웜 중 적어도 하나의 스웜에 피어 클라이언트로서 등록하도록 구성된 제어부를 더 포함할 수 있다.
일 실시예에서, 상기 적어도 하나의 스웜에의 피어 클라이언트로서의 등록은 상기 신규 클라이언트를 상기 적어도 하나의 스웜에 할당하여 상기 관리 테이블을 갱신하는 동작을 포함할 수 있다.
일 실시예에서, 상기 신규 클라이언트로부터의 등록 요청 메시지는 상기 비디오 컨텐츠의 ID 및 상기 N 개의 계층별 비트 스트림 중 수신하기를 원하는 하나 이상의 계층별 비트 스트림에 관한 정보를 포함할 수 있다.
일 실시예에서, 상기 수신하기를 원하는 하나 이상의 계층별 비트 스트림에 관한 정보는 수신하기를 원하는 계층별 비트 스트림의 개수(K)에 관한 정보 및 수신하기를 원하는 계층별 비트 스트림들의 최상위 계층을 나타나는 정보 중 적어도 하나를 포함할 수 있고, 상기 제어부는, 상기 신규 클라이언트를 상기 N 개의 스웜 중 첫번째 스웜 내지 K번째 스웜에 각각 피어 클라이언트로서 등록하도록 더 구성될 수 있다.
일 실시예에서, 상기 제어부는, 상기 첫번째 스웜 내지 상기 K번째 스웜의 각각에 포함된 적어도 하나의 시드 클라이언트의 리스트 및 적어도 하나의 피어 클라이언트의 리스트가 상기 신규 클라이언트에 전송되도록 함으로써 상기 신규 클라이언트로 하여금 상기 첫번째 스웜 내지 상기 K번째 스웜의 각각에 포함된 상기 적어도 하나의 시드 클라이언트 또는 상기 적어도 하나의 피어 클라이언트로부터 상기 해당 스윔과 연관된 계층별 비트 스트림의 비디오 청크들(video chunks)을 수신할 수 있게 하도록 동작 가능하다.
일 실시예에서, 상기 제어부는 상기 신규 클라이언트로부터의 재등록 요청 메시지에 응답하여 상기 신규 클라이언트를 상기 N 개의 스웜 중 적어도 하나의 스웜에 피어 클라이언트로서 재등록하도록 더 구성될 수 있고, 상기 재등록 요청 메시지는, 상기 클라이언트가 상기 N 개의 계층별 비트 스트림 중 변경하여 수신하기로 결정한 적어도 하나의 계층별 비트 스트림에 관한 정보를 포함할 수 있다.
일 실시예에서, 상기 신규 클라이언트는 상기 첫번째 스웜 내지 상기 K번째 스웜과 연관된 계층별 비트 스트림들을 다운로드받아 디코딩함으로써 비디오 프레임들을 출력하여 재생할 수 있고, 상기 신규 클라이언트에서 현재 재생되는 비디오 프레임의 번호와 현재 다운로드되고 있는 비디오 프레임의 번호의 차이가 선정된 값 이상인 경우, 상기 N 개의 계층별 비트 스트림 중 변경하여 수신하기로 결정한 적어도 하나의 계층별 비트 스트림에 관한 정보는 상기 수신하기를 원하는 계층별 비트 스트림의 개수(K) 보다 증가된 개수 또는 상기 수신하기를 원하는 계층별 비트 스트림들의 최상위 계층 보다 상위 계층을 나타내는 정보를 포함할 수 있고, 상기 신규 클라이언트에서 상기 현재 재생되는 비디오 프레임의 번호와 상기 현재 다운로드되는 비디오 프레임의 번호의 차이가 상기 선정된 값 미만인 경우, 상기 N 개의 계층별 비트 스트림 중 변경하여 수신하기로 결정한 적어도 하나의 계층별 비트 스트림에 관한 정보는 상기 수신하기를 원하는 계층별 비트 스트림의 개수(K) 보다 감소된 개수 또는 상기 수신하기를 원하는 계층별 비트 스트림들의 최상위 계층 보다 하위 계층을 나타내는 정보를 포함할 수 있다.
일 실시예에서, 상기 N 개의 계층별 비트 스트림 중 첫번째 비트 스트림은 기본 계층(base layer)의 비트 스트림이며, 두번째 비트 스트림은 제1 향상 계층(enhancement layer 1)의 비트 스트림일 수 있다.
본 발명의 실시예들에 따르면, P2P(Peer-to-Peer) 비디오 스트리밍을 지원하기 위한 관리 장치가 제공된다. 본 관리 장치는, VOD 제공 서버에서 제공되는 복수의 비디오 컨텐츠의 ID들을 기록한 컨텐츠 ID 테이블 및 관리 테이블을 저장하는 저장부를 포함할 수 있다. 여기서, 상기 복수의 비디오 컨텐츠의 각각은 N 개의 계층별 비트 스트림을 포함하고, 상기 N 개의 계층별 비트 스트림은 N 개의 스웜과 각각 연관되어 있다. 또한, 상기 관리 테이블은 상기 복수의 ID에 각각 대응하는 스웜 할당 테이블들을 포함하고, 상기 스웜 할당 테이블들의 각각에는 복수의 클라이언트가 상기 N 개의 스웜에 시드 클라이언트 또는 피어 클라이언트로서 할당되어 기록되어 있다. 본 관리 장치는, 신규 클라이언트로부터 원하는 비디오 컨텐츠의 ID 및 상기 N 개의 계층별 비트 스트림 중 수신하기를 원하는 계층별 비트 스트림의 개수(K)에 관한 정보를 포함하는 등록 요청 메시지를 수신하는 것에 응답하여 상기 ID에 대응하는 스웜 할당 테이블에서의 상기 N개의 스웜 중에서 첫번째 스웜 내지 K번째 스웜의 각각에 할당된 적어도 하나의 클라이언트의 리스트가 상기 신규 클라이언트에게 전송되도록 제어하는 제어부를 더 포함할 수 있다.
일 실시예에서, 상기 제어부는, 상기 등록 요청 메시지를 수신하는 것에 응답하여, 상기 신규 클라이언트를 상기 ID에 대응하는 스웜 할당 테이블에서 상기 N 개의 스웜 중 K 개의 스웜에 피어 클라이언트로서 할당하도록 더 제어할 수 있다.
일 실시예에서, 상기 복수의 클라이언트 각각은 상기 해당 클라이언트가 할당된 스웜에서 상기 스웜과 연관된 계층별 비트 스트림의 수신 상태에 따라 시드 클라이언트 또는 피어 클라이언트로서 할당되어 있다.
일 실시예에서, 상기 적어도 하나의 클라이언트의 리스트는 적어도 하나의 시드 클라이언트의 리스트 및 적어도 하나의 피어 클라이언트의 리스트를 포함할 수 있다.
본 발명의 실시예들에 따르면, P2P 비디오 스트리밍 서비스를 제공받기 위해 클라이언트 장치에서 수행되는 방법이 제공된다. 본 방법은, 비디오 스트리밍 관리 장치로 등록 요청 메시지를 전송하는 단계를 포함할 수 있다. 여기서, 상기 비디오 스트리밍 관리 장치는 복수의 기존 클라이언트를 N 개의 스웜(swarms)에 할당하여 관리하고 있고, 상기 N 개의 스웜은 비디오 컨텐츠의 N 개의 계층별 비트 스트림(layered bit streams)과 각각 연관되어 있고, 상기 등록 요청 메시지는 상기 비디오 컨텐츠의 N 개의 계층별 비트 스트림 중 수신하기를 원하는 계층별 비트 스트림의 개수(K)에 관한 정보를 포함할 수 있다. 본 방법은, 상기 비디오 스트리밍 관리 장치로부터 상기 N 개의 스웜 중 첫번째 스웜 내지 K번째 스웜의 각각에 포함된 적어도 하나의 기존 클라이언트의 리스트를 수신하는 단계, 및 상기 첫번째 스웜 내지 상기 K번째 스웜의 각각에 포함된 적어도 하나의 기존 클라이언트로부터 상기 해당 스윔과 연관된 계층별 비트 스트림의 비디오 청크들을 수신하는 단계를 더 포함할 수 있다.
일 실시예에서, 상기 비디오 스트리밍 관리 장치로 등록 요청 메시지를 전송하는 단계는, 상기 클라이언트 장치의 통신 관련 정보에 따라 상기 수신하기를 원하는 계층별 비트 스트림의 개수(K)를 결정하는 단계를 포함할 수 있다.
일 실시예에서, 상기 통신 관련 정보는 상기 클라이언트 장치의 단말 기종, 상기 클라이언트 장치가 접속되어 있는 네트워크의 네트워크 상황 및 상기 클라이언트 장치로의 다운로드 상황 중 적어도 하나를 포함할 수 있다.
일 실시예에서, 상기 해당 스윔과 연관된 계층별 비트 스트림의 비디오 청크들을 수신하는 단계는, 상기 첫번째 스웜 내지 상기 K번째 스웜과 연관된 계층별 비트 스트림들을 다운로드받아 디코딩함으로써 비디오 프레임들을 출력하여 재생하는 단계를 포함할 수 있고, 상기 방법은, 현재 재생되는 비디오 프레임의 번호와 현재 다운로드되고 있는 비디오 프레임의 번호의 차이가 선정된 값 이상인 경우, 상기 수신하기를 원하는 계층별 비트 스트림의 개수(K) 보다 증가된 개수로 상기 비디오 스트리밍 관리 장치로 재등록 요청 메시지를 전송하는 단계를 더 포함할 수 있다.
일 실시예에서, 상기 해당 스윔과 연관된 계층별 비트 스트림의 비디오 청크들을 수신하는 단계는 상기 첫번째 스웜 내지 상기 K번째 스웜과 연관된 계층별 비트 스트림들을 다운로드받아 디코딩함으로써 비디오 프레임들을 출력하여 재생하는 단계를 포함할 수 있고, 상기 방법은, 현재 재생되는 비디오 프레임의 번호와 현재 다운로드되는 비디오 프레임의 번호의 차이가 상기 선정된 값 미만인 경우, 상기 수신하기를 원하는 계층별 비트 스트림의 개수(K) 보다 감소된 개수로 상기 비디오 스트리밍 관리 장치로 재등록 요청 메시지를 전송하는 단계를 더 포함할 수 있다.
본 발명의 실시예들에 따르면, P2P 비디오 스트리밍 서비스를 제공하기 위해 클라이언트 장치에서 수행되는 방법이 제공된다. 본 방법은, 비디오 스트리밍 관리 장치로부터 K 개의 스웜의 각각에 포함된 적어도 하나의 기존 클라이언트의 리스트를 수신하는 단계를 포함할 수 있다. 여기서, 상기 K 개의 스웜은 비디오 컨텐츠의 N 개의 계층별 비트 스트림과 각각 연관된 N 개의 스웜의 적어도 하위 일부를 구성한다. 본 방법은, 상기 K 개의 스웜의 각각에 포함된 적어도 하나의 기존 클라이언트로부터 상기 해당 스윔과 연관된 계층별 비트 스트림의 비디오 청크들을 수신하는 단계, 및 적어도 하나의 다른 클라이언트 장치로부터의 상기 K 개의 스웜 중 특정 스윔과 연관된 계층별 비트 스트림의 비디오 청크들의 전송 요청에 응답하여 상기 적어도 하나의 다른 클라이언트 장치로 상기 비디오 청크들을 전송하는 단계를 더 포함할 수 있다.
일 실시예에서, 상기 적어도 하나의 다른 클라이언트 장치는 복수의 다른 클라이언트 장치를 포함하며, 상기 전송하는 단계는, 상기 K 개의 스웜 중 하위 스웜과 연관된 계층별 비디오 스트림의 비디오 청크들을 전송 요청한 다른 클라이언트 장치 보다 상위 스웜과 연관된 계층별 비디오 스트림의 비디오 청크들을 전송 요청한 다른 클라이언트 장치에 대해 낮은 우선 순위를 두고 상기 복수의 다른 클라이언트 장치에 비디오 청크들을 전송하는 단계를 포함할 수 있다.
일 실시예에서, 상기 적어도 하나의 다른 클라이언트 장치는 복수의 다른 클라이언트 장치를 포함할 수 있으며, 상기 방법은, 상기 K 개의 스웜의 각각과 연관된 계층별 비트 스트림의 비디오 청크들을 디코딩함으로써 비디오 프레임들을 출력하여 재생하는 단계를 더 포함할 수 있고, 상기 전송하는 단계는, 현재 재생되는 비디오 프레임의 번호와 상기 K 개의 스웜 중 첫번째 스웜과 연관된 계층별 비디오 스트림의 현재 수신되는 비디오 청크에 대응하는 비디오 프레임의 번호와의 차이(D)가 선정된 값 미만인 경우, 상기 K 개의 스웜 중 하위 스웜과 연관된 계층별 비디오 스트림의 비디오 청크들을 전송 요청한 다른 클라이언트 장치 보다 상위 스웜과 연관된 계층별 비디오 스트림의 비디오 청크들을 전송 요청한 다른 클라이언트 장치에 대해 낮은 우선 순위를 두고 상기 복수의 다른 클라이언트 장치에 비디오 청크들을 전송하고, 상기 D가 선정된 값 이상인 경우, 상기 첫번째 스웜과 연관된 계층별 비디오 스트림의 비디오 청크들을 전송 요청한 다른 클라이언트 장치에 대한 우선 순위를 두번째 이상의 스웜과 연관된 계층별 비디오 스트림의 비디오 청크들을 전송 요청한 다른 클라이언트 장치에 대한 우선 순위 보다 낮추어 상기 복수의 다른 클라이언트 장치에 비디오 청크들을 전송하는 단계를 포함할 수 있다.
본 발명의 실시예들에 따르면, P2P 비디오 스트리밍을 지원하기 위한 방법이 제공된다. 본 방법은, 통신망을 통하여 클라이언트로부터 등록 요청 메시지를 수신하는 단계를 포함할 수 있다. 여기서 상기 등록 요청 메시지는 비디오 컨텐츠의 ID 및 비트 스트림 계층 정보를 포함할 수 있다. 본 방법은, 상기 등록 요청 메시지의 수신에 응답하여, 상기 ID에 대응되는 비디오 컨텐츠의 복수의 계층별 비트 스트림 중에서 상기 비트 스트림 계층 정보에 의해 식별되는 적어도 하나의 계층별 비트 스트림의 각각을 현재 수신하고 있거나 수신 완료한 적어도 하나의 피어 또는 시드 클라이언트에 관한 정보를 상기 통신망을 통하여 상기 클라이언트에게 전송하는 단계를 더 포함할 수 있다.
본 발명의 실시예들에 따르면, VOD 서버에서 제공하는, SVC 코딩 방식에 따라 인코딩된 비디오 컨텐츠의 계층별 비트 스트림이 P2P 간에 효율적으로 스트리밍되도록 함으로써 네트워크 자원 및 대역폭을 효율적으로 사용할 수 있게 되는 기술적 효과가 있다.
도 1은 본 발명의 일 실시예에 따른 비디오 스트리밍 관리 방법이 구현되는 네트워크 구성의 일 실시예를 도시한 도면이다.
도 2는 본 발명의 일 실시예에 따른 비디오 스트리밍 관리 장치의 구성을 도시한 도면이다.
도 3은 본 발명의 일 실시예에 따른 비디오 스트리밍 관리 장치에서 관리되는 스웜 할당 테이블의 일 실시예를 도시한 도면이다.
도 4는 본 발명의 일 실시예에 따른 비디오 스트리밍 관리 방법을 설명하기 위한 흐름도를 도시한 도면이다.
도 5는 본 발명의 일 실시예에 따라 P2P 비디오 스트리밍 서비스를 제공받기 위한 클라이언트의 구성을 도시한 도면이다.
도 6은 본 발명에 따라 P2P 비디오 스트리밍 서비스를 제공받기 위해 클라이언트에서 수행되는 방법의 일 실시예를 설명하기 위한 흐름도를 도시한 도면이다.
도 7은 본 발명에 따라 P2P 비디오 스트리밍 서비스를 제공하기 위해 클라이언트에서 수행되는 방법의 일 실시예를 설명하기 위한 흐름도를 도시한 도면이다.
본 발명의 이점들과 특징들 그리고 이들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해 질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 본 실시예들은 단지 본 발명의 개시가 완전하도록 하며 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려 주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다.
본 명세서에서 사용되는 용어는 단지 특정한 실시예를 설명하기 위해 사용되는 것으로 본 발명을 한정하려는 의도에서 사용된 것이 아니다. 예를 들어, 단수로 표현된 구성 요소는 문맥상 명백하게 단수만을 의미하지 않는다면 복수의 구성 요소를 포함하는 개념으로 이해되어야 한다. 또한, 본 발명의 명세서에서, '포함하다' 또는 '가지다' 등의 용어는 명세서 상에 기재된 특징, 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것일 뿐이고, 이러한 용어의 사용에 의해 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성이 배제되는 것은 아니다. 또한, 본 명세서에 기재된 실시예에 있어서 '모듈' 혹은 '부'는 적어도 하나의 기능이나 동작을 수행하는 기능적 부분을 의미할 수 있다.
덧붙여, 다르게 정의되지 않는 한 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미가 있는 것으로 해석되어야 하며, 본 발명의 명세서에서 명백하게 정의하지 않는 한 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 첨부된 도면을 참조하여 본 발명의 실시예를 보다 상세히 설명한다. 다만, 이하의 설명에서는 본 발명의 요지를 불필요하게 흐릴 우려가 있는 경우, 널리 알려진 기능이나 구성에 관한 구체적 설명은 생략하기로 한다.
도 1은 본 발명의 일 실시예에 따른 비디오 스트리밍 관리 방법이 구현되는 네트워크 구성의 일 실시예를 도시한 도면이다.
도 1에 도시된 바와 같이, 클라이언트 단말기들(155)(이하, '클라이언트들'이라 함)이 VOD서버(120)에 의해 제공되는 비디오 컨텐츠를 스트리밍 서비스에 의해 VOD 서버(120) 및/또는 피어 클라이언트(peer client)로부터 수신하기 위해 서로간에 그리고 VOD 서버(120)와 통신망(140)을 통해 접속되어 있다. 통신망(140)에는 본 발명의 일 실시예에 따른 비디오 스트리밍 관리 장치(130)가 더 접속되어 있는데, 비디오 스트리밍 관리 장치(130)는 피어 클라이언트들 간의 비디오 컨텐츠의 비트 스트림(bit stream)의 P2P 스트리밍을 관리·지원한다. 비디오 스트리밍 관리 장치(130)는 클라이언트들(155)을 '스웜'(swarm)이라는 그룹 단위로 묶어 관리하는데, 예컨대 도시된 실시예에서는 스웜(150-2)에는 2개의 클라이언트가 할당되어 관리되고 있고 스웜(150-3)에는 3개의 클라이언트가 할당되어 관리되고 있다. 동일 스웜에 할당된 클라이언트들은 서로간의 관계에 있어서 피어(피어 클라이언트 또는 피어 노드) 또는 시드(seed)(시드 클라이언트)로 분류될 수 있다. 비디오 스트리밍 관리 장치(130)는, 이하에서 후술하는 VOD 서버(120)와 물리적으로 구분된 별도의 장치로 구현될 수 있으나, 일 실시예에서는 VOD 서버(120)와 통합된 하나의 장치로 구현될 수 있다.
VOD 서버(120)는 비디오 컨텐츠 등의 멀티미디어 컨텐츠를 요청 기반으로 클라이언트(155)에 제공하기 위한 미디어 스트리밍 서버(media streaming server)로서, 하나 또는 그 이상의 프록시 서버(proxy server)를 포함할 수 있는 하나 이상의 서버급 컴퓨터로 구현될 수 있다. 일 실시예에서, VOD 서버(120)는 부하 균형 PC-클러스터 VOD 서버와 같은 PC-클러스터 기반의 VOD 서버로 구현될 수 있다. 일 실시예에서, VOD 서버(120)는 RVOD(Real VOD), SVOD(Subscription VOD) 등의 VOD 서비스를 제공하도록 구축된 서버일 수 있다. VOD 서버(120)는 자기 메모리, 자기 디스크 및 광 디스트 중 어느 하나로 구현된 데이터베이스(도시하지 않음)와 같은 대용량 저장 장치를 포함할 수 있다. 데이터베이스에는 비디오 컨텐츠와 같은 각종 멀티미디어 컨텐츠가 저장될 수 있다.
VOD 서버(120)는 WMS(Windows Media Server), WOWZA 스트리밍 서버, Adobe FMS(Flash Media Server), IIS(Internet Information Server), DSS(Darwin Streaming Server), red5, Helix Server 등의 미디어 서버를 포함할 수 있으나, VOD 서버(120)의 종류가 이에 제한되는 것은 아님을 인식하여야 한다. VOD 서버(120)는 MMS(Microsoft Media Server), MSBD(Media Stream Broadcast Distribution), RTSP(Real Time Streaming Protocol), RTMP(Real Time Messaging Protocol), RTMFP(Real Time Media Flow Protocol), HLS(HTTP Live Streaming), 스무드 스트리밍(Smooth Streaming) 등의 네트워크 스트리밍 프로토콜을 지원하는 미디어 서버로서 설계될 수 있다.
본 발명의 목적상, VOD 서버(120)에 의해 스트리밍을 통해 제공되는 데이터는, 비디오 컨텐츠를 H.264/MPEG-4 파트 10 또는 AVC(Advanced Video Coding) 표준에 채택되어 있는 SVC(Scalable Video Coding) 코딩 방식을 이용해 인코딩하여 얻은 복수의 계층별 비트 스트림(layered bit streams)인 것으로 가정한다. SVC 인코딩은 시간 스케일러빌러티(temporal scalability), 공간 스케일러빌러티(spatial scalability), SNR 스케일러빌러티 및 기타 관심영역(ROI)/객체 기반 스케일러빌러티를 제공하는 방식 및 이들을 결합한 방식으로 세분화된다. SVC인코딩은, 인코딩된 데이터를 디코딩할 수신측 단말에서 지원되는 영상의 해상도 및/또는 통신 채널의 상태에 따라 각기 다른 해상도로의 영상 재생을 위한 압축 데이터를 수신측에 전송할 수 있고 또한 수신측에서 추가의 압축 데이터만을 요청하여 받거나 이미 받고 있던 일부의 압축 데이터를 더 이상 받지 않음으로써 해상도를 변경하여 영상을 재생하는 것이 가능하다는 장점이 있는 것으로 알려져 있다.
SVC 인코딩 방식으로 비디오 데이터를 인코딩하면 기본 계층(Base layer)의 데이터 및 N개의 향상 계층(Enhancement layer 1-N)의 데이터를 얻는데(여기서, N은 임의의 정수), 수신측에서 기본 계층의 데이터만 수신하여 디코딩하면 저 화질(저 해상도)의 영상을 끊김 없이 재생할 수 있고, 나아가 그 상위 계층인 제1 향상 계층의 데이터를 같이 수신하여 기본 계층의 데이터와 함께 디코딩하면 조금 향상된 화질의 영상을 재생할 수 있고, 더 나아가 제2 향상 계층, 제3 향상 계층 등의 더 상위 계층의 데이터를 수신하여 기본 계층과 함께 디코딩하면 최고화질의 영상을 재생할 수 있게 된다. 이와 같이 일부 계층의 인코딩된 데이터(partial bit stream)만을 수신하여 디코딩을 하게 되면(partial decoding), 비트 스트림이 전송 과정에서 손실되더라도 결과적인 재상 영상의 화질이 눈에 거슬리는 방식으로 저하되는 것을 방지할 수 있고, 네트워크의 상태에 따라 가변되는 비트 레이트 제한 조건에 동적으로 적응이 가능하며, 포맷과 전력 요구 조건에 적응적으로 대처할 수 있다는 장점이 있다. 본 발명의 다양한 실시예들에 있어서, 복수의 계층별 비트 스트림은 기본 계층(Base layer) 비트 스트림 및 제1 향상 계층(Enhancement layer 1) 비트 스트림 내지 N번째 향상 계층(Enhancement layer N) 비트 스트림을 포함할 수 있고, 이들을 모두 총괄하여 '계층별 비트 스트림'이라 칭한다. 이러한 용어 정의에 따르면, 예컨대 첫번째 계층별 비트 스트림은 기본 계층 비트 스트림을 일컷고 세번째 계층별 비트 스트림은 제2 향상 계층 비트 스트림을 일컷는다.
클라이언트(155)는 본 발명의 일 실시예에 따라 통신망(140)을 통해 VOD 서버(120) 및/또는 비디오 스트리밍 관리 장치(130)와 통신함으로써 적어도 하나의 피어(시드) 클라이언트로부터 P2P 스트리밍 방식으로 비디오 청크들을 수신할 수 있다. 클라이언트(155)는 다른 피어 클라이언트들로부터의 P2P 스트리밍 서비스 요청에 응답하여 그들로 자신이 수신중이거나 수신 완료한 계층별 비트 스트림들의 비디오 청크들을 전송할 수 있다. 클라이언트(155)는, 웹 기반의 VOD 서버로부터 스트리밍 서비스를 제공받기 위하여 오페라(Opera), 파이어폭스(FireFox), 사파리(Safari), 인터넷 익스플로러(Internet Explorer), 마이크로소프트 엣지(Microsoft Edge), 구글 크롬(Google Chrome), 네비게이터(Navigator) 등의 PC용 웹 브라우저(web browser) 또는 오페라 미니(Opera Mini), 파이어폭스 모바일(Firefox Mobile), 모바일 사파리(Mobile Safari), 구글 모바일(Google Mobile) 등의 모바일용 웹 브라우저 중 적어도 하나를 탑재할 수 있다. 클라이언트(155)는 무선 랜 및/또는 유선 랜 모듈을 구비한 데스크탑(desktop) 또는 랩탑(laptop) PC, 태블릿 PC, 노트 북, 노트 패드 등의 휴대용 단말기, 스마트 폰 등과 같은 다양한 종류의 핸드헬드(Handheld) 기반의 무선 통신 장치, 워크스테이션, IPTV(Internet Protocol Television), 인터넷 TV(Internet Television), 지상파 TV, 케이블 TV 등의 스마트 TV 등을 포함할 수 있으나, 클라이언트 단말의 종류가 이에 제한되는 것은 아니다.
통신망(140)은 인터넷(Internet), 와이파이(WiFi) 네트워크, 근거리 통신망(Local Area Network: LAN), 광역 통신망(Wide Area Network: WAN), 부가가치 통신망(Value Added Network: VAN), 개인 근거리 무선통신(Personal Area Network: PAN), PCS(Personal Communication System), GSM(Global System for Mobile communications), PDC(Personal Digital Cellular), PHS(Personal Handy-phone System), PDA(Personal Digital Assistant), IMT(International Mobile Telecommunication)-2000, CDMA(Code Division Multiple Access)-2000, W-CDMA(W-Code Division Multiple Access), Wibro(Wireless Broadband Internet) 또는 4G(LTE/LTE-Advanced) 등의 이동 통신망 또는 위성 통신망 등과 같은 모든 종류의 유/무선 네트워크를 포함할 수 있으나, 통신망(140)의 종류가 이에 한정되는 것은 아니다.
도 2는 본 발명의 일 실시예에 따른 비디오 스트리밍 관리 장치의 구성을 도시한 도면이다. 도 3은 본 발명의 일 실시예에 따른 비디오 스트리밍 관리 장치에서 관리되는 스웜 할당 테이블의 일 실시예를 도시한 도면이다.
도 2에 도시된 바와 같이, 관리 장치(130)는 제어부(210), 저장부(220) 및 통신부(230)를 포함할 수 있다. 저장부(220)는 복수의 스웜 할당 테이블(300)을 저장할 수 있다(도 3 참조, 도 3에 도시된 스웜 할당 테이블(300)은 단지 예시의 목적상 데이터를 서로 연관시켜 저장하는 방식을 개념적으로 도시한 것일 뿐이고 도 3에 도시된 사항이 저장된 데이터의 구조를 예시하거나 암시하는 것이 아님을 인식하여야 할 것이다). 스웜 할당 테이블들(300)은 VOD 서버(120)에서 제공되는 비디오 컨텐츠들의 ID들에 각각 대응할 수 있다. 예컨대, VOD 서버(120)에서 제공되는 비디오 컨텐츠들의 개수가 200개라면 비디오 컨텐츠들에는 1부터 200까지에 대응하는 8 비트의 2진 값이 그 ID로서 할당될 수 있다. 스웜 할당 테이블(300)의 각각은 현재 스트리밍 서비스를 받고 있거나 받은 바 있는 복수의 클라이언트를 N 개의 스웜에 할당하여 기록한다. 여기서, N 개의 스웜은, VOD 서버(120)에서 제공되는, 비디오 컨텐츠를 SVC 기법으로 인코딩하여 생성된 N 개의 계층별 비트 스트림(layered bit streams)과 각각 대응될 수 있다. 클라이언트들(155)을 각 스웜에 할당하는 방식을, 예컨대 도 3을 참조하여 설명하면, 클라이언트 2가 첫번째 내지 세번째 계층별 비트 스트림을 수신하거나 수신 완료한 상태이므로 클라이언트 2는 첫번째 내지 세번째 스웜(스웜 1 내지 스웜 3)에 할당된다. 다른 예로서, 클라이언트(259)는 첫번째 계층별 비트 스트림만을 수신하고 있으므로 첫번째 스웜(스웜 1)에만 할당된다. 또한, 클라이언트들(155)의 각각은 해당 클라이언트가 할당된 스웜에서 피어 클라이언트 또는 시드 클라이언트로 분류될 수 있다. 클라이언트들(155)을 피어 클라이언트 또는 시드 클라이언트로 분류하는 방식을, 예컨대 도 3을 참조하여 설명하면, 클라이언트 2는 첫번째 내지 세번째 스웜(스웜 1 내지 스웜 3)에 할당되어 있는데, 첫번째 계층별 비트 스트림, 즉 기본 계층의 비트 스트림을 수신 완료한 상태이므로 첫번째 스웜에서는 시드로 분류되어 있고 두번째 및 세번째 계층별 비트 스트림, 즉 제1 및 제2 향상 계층의 비트 스트림을 수신중인 상태이므로 두번째 및 세번째 스웜에서는 피어로 분류되어 있다.
저장부(220)는 플래시 메모리 타입(flash memory type), 하드 디스크 타입(hard disk type), 멀티미디어 카드(MultiMedia Card: MMC), 카드 타입의 메모리(예를 들어, SD(Secure Digital) 카드 또는 XD(eXtream Digital) 카드 등), RAM(Random Access Memory), SRAM(Static Random Access Memory), ROM(Read-Only Memory), EEPROM(Electrically Erasable Programmable Read-Only Memory), PROM(Programmable Read-Only Memory), 자기 메모리, 자기 디스크 및 광 디스크 중 어느 하나의 저장 매체로 구현될 수 있으나, 당업자라면 저장부(220)의 구현 형태가 이에 한정되는 것이 아님을 알 수 있을 것이다.
제어부(210)는 통신부(230)를 통하여 새로이 비디오 컨텐츠를 수신하기를 원하는 신규 클라이언트(155)로부터 등록 요청 메시지를 수신하도록 구성될 수 있다. 여기서, 신규 클라이언트(155)로부터의 등록 요청 메시지는 수신하기를 원하는 비디오 컨텐츠의 ID를 포함할 수 있다. 제어부(210)는 등록 요청 메시지에 응답하여 신규 클라이언트(155)를 N 개의 스웜 중 적어도 하나의 스웜에 피어 클라이언트로서 등록하도록 구성될 수 있다. 이 경우, 스웜에의 피어 클라이언트로서의 등록은, 수신하기를 원하는 비디오 컨텐츠의 ID에 대응하는 스웜 할당 테이블에서 신규 클라이언트(155)를 적어도 하나의 스웜에 할당하여 해당 스웜 할당 테이블을 갱신하는 동작을 포함할 수 있다.
등록 요청 메시지는 N 개의 계층별 비트 스트림 중 수신하기를 원하는 하나 이상의 계층별 비트 스트림에 관한 정보를 더 포함할 수 있다. 일 실시예에서, 수신하기를 원하는 하나 이상의 계층별 비트 스트림에 관한 정보는, 수신하기를 원하는 계층별 비트 스트림의 개수(K)에 관한 정보 및 수신하기를 원하는 계층별 비트 스트림들의 최상위 계층을 나타나는 정보 중 적어도 하나를 더 포함할 수 있다. 예컨대, 신규 클라이언트(155)가 기본 계층과 제1 및 제2 향상 계층의 비트 스트림들을 수신하기를 원하는 경우, 수신하기를 원하는 계층별 비트 스트림의 개수(K)를 3으로 지정하거나 최상위 계층을 3으로 지정하여 등록 요청 메시지를 구성하여 관리 장치(130)로 전송하는 것이 가능하다. 제어부(210)는 수신하기를 원하는 하나 이상의 계층별 비트 스트림에 관한 정보를 참조하여 해당 스웜 할당 테이블을 갱신하도록 구성될 수 있다. 예컨대, K가 3인 경우, 제어부(210)는 신규 클라이언트(155)를 첫번째 스웜 내지 세번째 스웜에 할당하여 해당 스웜 할당 테이블(300)을 갱신할 수 있다.
제어부(210)는, 첫번째 스웜 내지 K번째 스웜의 각각에 포함된 적어도 하나의 시드 클라이언트의 리스트 및 적어도 하나의 피어 클라이언트의 리스트를 통신부(230)를 통해서 신규 클라이언트(155)에 전송하도록 더 구성될 수 있다. 일 실시예에서, 첫번째 스웜 내지 K번째 스웜의 각각에 포함된 클라이언트들의 리스트를 피어나 시드의 구별없이 구성하여 통신부(230)를 통해 신규 클라이언트(155)에 전송하도록 제어부(210)를 구성하는 것도 가능하다. 이 경우, 클라이언트들의 리스트에는 각 해당 클라이언트의 IP 주소 및 해당 IP의 포트 번호(port number)가 포함될 수 있다. 이에 따라, 신규 클라이언트(155)는 관리 장치(130)의 제어부(210)로부터 전송받은 리스트에 포함된 첫번째 스웜 내지 K번째 스웜의 각각에 포함된 클라이언트들 중 한 클라이언트로부터 해당 스윔과 연관된 계층별 비트 스트림의 비디오 청크들(video chunks)을 수신할 수 있게 된다. 예컨대, 스웜 1에 포함된 클라이언트가 클라이언트 1 내지 7이고 스웜 2에 포함된 클라이언트가 클라이언트 2 내지 4 및 7이고 스웜 3에 포함된 클라이언트가 클라이언트 2인 경우(도 3 참조), 신규 클라이언트(155)는, 스웜 1에 속한 클라이언트 5에게 P2P 스트리밍을 요청하여 기본 계층의 비트 스트림의 비디오 청크들을 수신받고, 스웜 2에 속한 클라이언트 3으로부터 제1 향상 계층의 비트 스트림의 비디오 청크들을 수신받고, 스웜 3에 속한 클라이언트 2로부터 제2 향상 계층의 비트 스트림의 비디오 청크들을 수신받을 수 있다.
제어부(210)는, 신규 클라이언트(155)로부터의 재등록 요청 메시지에 응답하여 신규 클라이언트(155)를 N 개의 스웜 중 적어도 하나의 스웜에 피어 클라이언트로서 재등록하도록 더 구성될 수 있다. 재등록 요청 메시지는, 신규 클라이언트(155)가 N 개의 계층별 비트 스트림 중 변경하여 수신하기로 결정한 계층별 비트 스트림의 개수에 관한 정보를 포함할 수 있다. 재등록은 신규 클라이언트(155)를 해당 스웜 할당 테이블에서 추가의 스웜에 할당하거나 일부 스웜에서 삭제하는 동작을 포함할 수 있다. 예컨대, 신규 클라이언트(155)가 스웜 1 및 2에 할당되어 첫번째 및 두번째 계층별 비트 스트림을 피어 클라이언트들로부터 수신하고 있다가(K가 2인 경우), 통신 상태가 좋아져 세번째 계층별 비트 스트림(제2 향상 계층)을 추가로 수신하고자 하는 경우, 변경하여 수신하기로 결정한 계층별 비트 스트림의 개수를 3으로 하여 재등록 요청 메시지를 관리 장치(130)로 전송하고, 관리 장치(130)의 제어부(210)는 이에 응답하여 신규 클라이언트(155)를 스웜 3에 피어 클라이언트로 추가로 할당하여 등록할 수 있다. 다른 예로서, 신규 클라이언트(155)가 스웜 1 내지 3에 할당되어 첫번째 내지 세번째 계층별 비트 스트림을 피어 클라이언트들로부터 수신하고 있다가(K가 3인 경우), 통신 상태가 악화되어 첫번째 및 두번째 계층별 비트 스트림만을 수신하고자 하는 경우, 변경하여 수신하기로 결정한 계층별 비트 스트림의 개수를 2로 하여 재등록 요청 메시지를 관리 장치(130)로 전송하고, 관리 장치(130)의 제어부(210)는 이에 응답하여 신규 클라이언트(155)를 해당 스웜 할당 테이블에서 스웜 3으로부터 탈퇴시켜 등록할 수 있다. 제어부(210)는 재등록이 추가 스웜에의 할당인 경우, 추가 할당된 스웜에 속한 클라이언트들의 리스트를 신규 클라이언트(155)에게 전송하여 신규 클라이언트(155)가 추가 할당된 스웜에 속한 클라이언트들 중 어느 한 클라이언트로부터 추가의 계층(예컨대, 전술한 예의 경우 제2 향상 계층)에 관한 P2P 스트리밍 서비스를 받을 수 있도록 할 수 있다.
이상으로 설명한 제어부(210)는, 응용 주문형 집적 회로(Application Specific Integrated Circuits: ASICs), 디지털 신호 처리기(Digital Signal Processors: DSPs), 디지털 신호 처리 소자(Digital Signal Processing Devices: DSPDs), 프로그램 가능 논리 소자(Programmable Logic Devices: PLDs), 현장 프로그램 가능 게이트 어레이(Field-Programmable Gate Arrays: FPGAs), 프로세서(processors), 제어기(controllers), 마이크로 컨트롤러(micro-controllers) 및 마이크로 프로세서(microprocessors) 중 적어도 하나에 기반한 하드웨어 플랫폼(hardware platform)으로서 구현될 수 있다. 제어부(210)는 또한 전술한 하드웨어 플랫폼 상에서 실행 가능한 펌웨어(firmware)/소프트웨어 모듈로 구현될 수 있다. 이 경우, 소프트웨어 모듈은 적절한 프로그램(program) 언어로 쓰여진 소프트웨어 애플리케이션(application)에 의해 구현될 수 있다.
통신부(230)는 VOD 서버(120) 및/또는 클라이언트(155)와 통신망(140)을 통해서, 예컨대 IP(Internet Protocol) 기반의 통신을 수행하기 위한 하드웨어 및 소프트웨어/펌웨어로 구현될 수 있다. 일 실시예에서, 통신부(230)는 TCP/IP 통신 프로토콜을 따르는 통신 인터페이스에 의해 구현될 수 있다.
도 4는 본 발명의 일 실시예에 따른 비디오 스트리밍 관리 방법을 설명하기 위한 흐름도를 도시한 도면이다.
본 방법은 새로이 비디오 컨텐츠를 수신하기를 원하는 신규 클라이언트(155)로부터 메시지가 수신되었는지를 검사하는 단계(S401)로부터 시작된다. 단계(S401)에서의 검사 결과 메시지가 수신되지 않은 것으로 판단된 경우 본 방법의 제어는 단계(S401)로 복귀한다. 단계(S401)에서의 검사 결과 메시지가 수신된 것으로 판단된 경우, 이어서 동 메시지가 등록 요청 메시지인지 재등록 요청 메시지 인지를 검사한다(단계(S402)). 단계(S402)에서의 검사 결과 동 메시지가 등록 요청 메시지인 것으로 판단된 경우, 등록 요청 메시지에 포함된, 수신하기를 원하는 비디오 컨텐츠의 ID 및 수신하기를 원하는 계층별 비트 스트림의 개수(K)에 관한 정보를 확인한다(단계(S403)). 단계(S404)에서는, 신규 클라이언트(155)를 비디오 컨텐츠의 ID에 대응하는 스웜 할당 테이블에서 K개의 스웜에 피어 클라이언트로서 할당·등록한다. 예컨대, 신규 클라이언트(155)를 첫번째 스웜 내지 K번째 스웜에 할당하여 등록할 수 있다. 단계(S405)에서는, 첫번째 스웜 내지 K번째 스웜의 각각에 포함된 클라이언트들의 리스트를 신규 클라이언트(155)에 전송하도록 제어한다. 이 경우, 클라이언트들의 리스트에는 각 해당 클라이언트의 IP 주소 및 해당 IP의 포트 번호(port number)가 포함될 수 있다.
한편, 단계(S402)에서의 판단 결과, 동 메시지가 재등록 요청 메시지인 것으로 판단된 경우, 단계(S406)에서 재등록 요청 메시지에 포함된, 변경하여 수신하기로 결정한 계층별 비트 스트림의 개수에 관한 정보를 확인한다. 단계(S406)에서의 확인 결과, 변경하여 수신하기로 결정한 계층별 비트 스트림의 개수가 기 수신하여 저장해 둔, 수신하기를 원하는 계층별 비트 스트림의 개수(K) 보다 큰 경우 신규 클라이언트(155)를 해당 스웜 할당 테이블에서 추가의 스웜에 등록시키고, 반면 변경하여 수신하기로 결정한 계층별 비트 스트림의 개수가 기 수신하여 저장해 둔, 수신하기를 원하는 계층별 비트 스트림의 개수(K) 보다 작은 경우, 신규 클라이언트(155)를 해당 스웜 할당 테이블에서 일부의 스웜으로부터 탈퇴시킨다(단계 (S407)). 예컨대, 신규 클라이언트(155)가 스웜 1 및 2에 할당되어 첫번째 및 두번째 계층별 비트 스트림을 피어 클라이언트들로부터 수신하고 있다가(K가 2인 경우), 변경하여 수신하기로 결정한 계층별 비트 스트림의 개수를 3으로 하여 재등록 요청 메시지를 전송한 경우, 신규 클라이언트(155)를 스웜 3에 피어 클라이언트로 추가로 할당하여 등록시키고, 이에 반해 변경하여 수신하기로 결정한 계층별 비트 스트림의 개수를 1로 하여 재등록 요청 메시지를 전송한 경우는, 신규 클라이언트(155)를 스웜 2에서 삭제 등록시킬 수 있다. 단계(S408)에서는, 재등록이 추가 스웜에의 할당 등록인 경우, 추가 할당된 스웜에 속한 클라이언트들의 리스트를 신규 클라이언트(155)에게 전송하여 신규 클라이언트(155)가 추가 할당된 스웜에 속한 클라이언트들 중 어느 한 클라이언트로부터 추가의 계층별 비트 스트림의 비디오 청크들을 P2P 스트리밍 방식으로 수신할 수 있도록 하고, 다시 단계(S401)로 복귀한다.
도 5는 본 발명의 일 실시예에 따라 P2P 비디오 스트리밍 서비스를 제공받기 위한 클라이언트의 구성을 도시한 도면이다.
도 5에 도시된 바와 같이, 클라이언트(155)는 제어부(510), 미디어 재생부(520), 저장부(530) 및 통신부(540)를 포함할 수 있다. 제어부(510)는, VOD 서버(120)로부터 비디오 컨텐츠를 수신하여 재생하기를 원하는 사용자로 하여금 키보드, 키패드, 터치패드, 마우스 등의 입력 장치(도시되지 않음)를 통해 비디오 컨텐츠의 타이틀(title)을 선택하도록 하고, 사용자의 선택에 응답하여 선택된 비디오 컨텐츠의 타이틀에 대응하는 ID를 식별하도록 구성될 수 있다. 일 실시예에서, 제어부(510)는 사용자로 하여금 원하는 비디오 컨텐츠의 ID를 직접 입력하게 하거나 복수의 ID를 사용자에게 표시해 주고 그 중 원하는 비디오 컨텐츠에 대응하는 특정의 ID를 선택하도록 구성될 수도 있다. 제어부(510)는 사용자로부터 수신하기를 원하는 계층별 비트 스트림의 개수(K)에 관한 정보를 입력부를 통해 입력받도록 더 구성될 수 있다. 일 실시예에서, 제어부(510)는 클라이언트의 단말 기종, 클라이언트가 접속되어 있는 네트워크의 네트워크 상황 및 클라이언트로의 다운로드 상황 중 적어도 하나를 포함하는 클라이언트의 통신 관련 정보에 따라 수신하기를 원하는 계층별 비트 스트림의 개수(K)를 자동으로 결정하도록 구성될 수 있다. 제어부(510)는 사용자가 선택한 비디오 컨텐츠의 ID와 수신하기를 원하는 계층별 비트 스트림의 개수(K)에 관한 정보를 등록 요청 메시지에 포함시켜 통신부(540)를 통해 비디오 스트리밍 관리 장치(130)로 전송하도록 더 구성될 수 있다.
제어부(510)는, 비디오 스트리밍 관리 장치(130)로부터 비디오 스트리밍 관리 장치(130)가 관리하는 N 개의 스웜 중 첫번째 스웜 내지 K번째 스웜의 각각에 포함된 적어도 하나의 기존 클라이언트의 리스트를 통신부(540)를 통해 수신하도록 구성될 수 있다. 제어부(510)는 첫번째 스웜 내지 K번째 스웜의 각각에 포함된 적어도 하나의 기존 클라이언트로부터 해당 스윔과 연관된 계층별 비트 스트림의 비디오 청크들을 통신부(540)를 통해 수신하도록 구성될 수 있다. 예컨대, 제어부(510)는 첫번째 스웜에 속한 피어 클라이언트 5(도 3 참조)에 P2P 스트리밍 서비스를 요청하여 그로부터 기본 계층의 비트 스트림의 비디오 청크들을 통신부(540)를 통해 수신할 수 있다. 또한, 제어부(510)는 두번째 스웜에 속한 피어 클라이언트 4(도 3 참조)에 P2P 스트리밍 서비스를 요청하여 그로부터 제1 향상 계층의 비트 스트림의 비디오 청크들을 통신부(540)를 통해 수신할 수 있다. 제어부(510)는 수신된 비디오 청크들이 저장부(530)에 저장되도록 제어할 수 있다.
미디어 재생부(520)는 수신한 비디오 청크들을 비디오 프레임들로 구성하여 재생하는 기능을 하도록 구성될 수 있다. 일 실시예에서, 미디어 재생부(520)는 H.264 디코더를 구현하는 소프트웨어 모듈을 포함할 수 있다. 일 실시예에서, 미디어 재생부(520)는 그래픽 프로세서(graphic processor)에 의해 구현될 수 있다. 미디어 재생부(520)는 저장부(530)에 저장된 비디오 청크들을 선정된 단위로 독출하여 디코딩하고, 디코딩 완료되어 출력된 데이터를 비디오 프레임들로 구성하여 재생하도록 구성될 수 있다. 이 경우, 미디어 재생부(520)는, 제어부(510)가 적어도 하나의 피어 클라이언트로부터 통신부(540)를 통해 비디오 청크들을 수신하여 저장부(530)에 저장하는 동안에도 비디오 프레임들을 재생할 수 있음을 인식하여야 한다.
다시 제어부(510)의 설명으로 돌아와서, 제어부(510)는 재등록 요청 메시지를 비디오 스트리밍 관리 장치(130)로 전송하도록 구성될 수 있다. 일 실시예에서, 제어부(510)는 미디어 재생부(520)에서의 비디오 프레임 재생 상태에 따라 수신하기를 원하는 계층별 비트 스트림의 개수(K) 보다 증가되거나 감소된 개수로 재등록 요청 메시지를 구성하여 비디오 스트리밍 관리 장치(130)로 전송하도록 구성될 수 있다. 제어부(510)는 클라이언트(155)와 동일 스웜(들)에 속하는 다른 피어 클라이언트(들)로부터의 P2P 스트리밍 서비스 요청에 응답하여 해당 스웜(들)과 연관된 계층별 비트 스트림(들)의 비디오 청크들을 다른 피어 클라이언트(들)에 전송하도록 더 구성될 수 있다. 이 경우, 제어부(510)는 비디오 청크들을 다른 피어 클라이언트(들)에 전송함에 있어 기본 계층의 비트 스트림을 요청한 피어 클라이언트(들)에 대해 디폴트(default)로 높은 우선 순위를 두고 청크 전송률을 높게 설정하도록 구성될 수 있다. 일 실시예에서, 제어부(510)는 클라이언트(155)의 비디오 프레임 재생 상태에 따라 P2P 스트리밍 서비스를 요청한 다른 피어 클라이언트들에 대한 우선 순위, 즉 청크 전송률들을 변경하여 설정하도록 구성될 수 있다.
제어부(510)는, 응용 주문형 집적 회로(Application Specific Integrated Circuits: ASICs), 디지털 신호 처리기(Digital Signal Processors: DSPs), 디지털 신호 처리 소자(Digital Signal Processing Devices: DSPDs), 프로그램 가능 논리 소자(Programmable Logic Devices: PLDs), 현장 프로그램 가능 게이트 어레이(Field-Programmable Gate Arrays: FPGAs), 프로세서(processors), 제어기(controllers), 마이크로 컨트롤러(micro-controllers) 및 마이크로 프로세서(microprocessors) 중 적어도 하나에 기반한 하드웨어 플랫폼(hardware platform)으로서 구현될 수 있다. 제어부(510)는 또한 전술한 하드웨어 플랫폼 상에서 실행 가능한 펌웨어(firmware)/소프트웨어 모듈로 구현될 수 있다. 이 경우, 소프트웨어 모듈은 적절한 프로그램 언어로 쓰여진 소프트웨어 애플리케이션에 의해 구현될 수 있다.
저장부(530)는 복수의 비디오 컨텐츠의 타이틀들(titles)을 그 ID들과 대응시켜 저장할 수 있다. 저장부(530)는 비디오 스트리밍 관리 장치(130)로부터 수신한 피어(시드) 클라이언트들의 리스트 - 이 리스트에 포함된 피어(시드) 클라이언트들은 비디오 스트리밍 관리 장치(130)가 관리하는 스웜들의 적어도 일부 스웜들의 각각에 포함된 피어(시드) 클라이언트들임 - 를 저장할 수 있다. 저장부(530)는 적어도 하나의 피어(시드) 클라이언트로부터 통신부(540)를 통해 수신한 비디오 청크들을 제어부(510)의 제어하에 버퍼링하여 저장할 수 있다. 저장부(530)는, 플래시 메모리 타입(flash memory type), 하드 디스크 타입(hard disk type), 멀티미디어 카드(MultiMedia Card: MMC), 카드 타입의 메모리(예를 들어, SD(Secure Digital) 카드 또는 XD(eXtream Digital) 카드 등), RAM(Random Access Memory), SRAM(Static Random Access Memory), ROM(Read-Only Memory), EEPROM(Electrically Erasable Programmable Read-Only Memory), PROM(Programmable Read-Only Memory), 자기 메모리, 자기 디스크 및 광 디스크 중 어느 하나의 저장 매체로 구현될 수 있으나, 당업자라면 저장부(530)의 구현 형태가 이에 한정되는 것이 아님을 알 수 있을 것이다.
통신부(540)는 VOD 서버(120), 비디오 스트리밍 관리 장치(130) 및 다른 피어(시드) 클라이언트(155)와 통신망(140)을 통해서, 예컨대 IP(Internet Protocol) 기반의 통신을 수행하기 위한 하드웨어 및 소프트웨어/펌웨어로 구현될 수 있다. 일 실시예에서, 통신부(540)는 TCP/IP 통신 프로토콜을 따르는 인터페이스에 의해 구현될 수 있다. 일 실시예에서, 통신부(540)는 WiFi 기능이 지원되는 무선랜(Wireless LAN) 모듈을 포함할 수 있다. 일 실시예에서, 통신부(540)에 포함되는 무선랜 모듈은 802.11a, 802.11b, 802.11g 등의 근거리 무선통신 프로토콜을 지원하도록 구성될 수 있다. 일 실시예에서, 통신부(540)는 데이터를 PSK, CKK, OFDM 등의 데이터 변조 방식에 따라 변조하여 전송하도록 구성될 수 있다. 일 실시예에서, 통신부(540)는 데이터 변조된 신호를 RF 변조하여 전송하도록 더 구성될 수 있다. 이 경우, 통신부(540)는 LTE-Ue와 같은 무선통신 인터페이스 프로토콜을 따르도록 설계될 수 있다.
도 6은 본 발명에 따라 P2P 비디오 스트리밍 서비스를 제공받기 위해 클라이언트에서 수행되는 방법의 일 실시예를 설명하기 위한 흐름도를 도시한 도면이다.
본 방법은 비디오 스트리밍 관리 장치(130)로 등록 요청 메시지를 전송하는 단계로부터 시작된다(S601). 이 단계에서는, 사용자로 하여금 입력 장치(도시되지 않음)를 통해 비디오 컨텐츠의 타이틀(title)을 선택하도록 하고, 사용자의 선택에 응답하여 선택된 비디오 컨텐츠의 타이틀에 대응하는 ID를 식별할 수 있다. 일 실시예에서, 사용자로 하여금 원하는 비디오 컨텐츠의 ID를 직접 입력하게 하거나 복수의 ID를 사용자에게 표시해 주고 그 중 원하는 비디오 컨텐츠에 대응하는 특정의 ID를 선택하도록 할 수도 있다. 이 단계에서는 또한 사용자로부터 수신하기를 원하는 계층별 비트 스트림의 개수(K)에 관한 정보를 입력부를 통해 입력받을 수 있다. 일 실시예에서, 클라이언트의 단말 기종, 클라이언트가 접속되어 있는 네트워크의 네트워크 상황 및 클라이언트로의 다운로드 상황 중 적어도 하나를 포함하는 클라이언트의 통신 관련 정보에 따라 수신하기를 원하는 계층별 비트 스트림의 개수(K)를 자동으로 결정할 수 있다. 비디오 컨텐츠의 ID와 수신하기를 원하는 계층별 비트 스트림의 개수(K)에 관한 정보를 사용자로부터 입력받으면, 이를 등록 요청 메시지에 포함시켜 통신부(540)를 통해 비디오 스트리밍 관리 장치(130)로 전송한다.
단계(S602)에서는, 비디오 스트리밍 관리 장치(130)로부터 비디오 스트리밍 관리 장치(130)가 관리하는 N 개의 스웜 중 첫번째 스웜 내지 K번째 스웜의 각각에 포함된 적어도 하나의 기존 클라이언트의 리스트를 통신부(540)를 통해 수신할 수 있다. 단계(S603)에서는, 첫번째 스웜 내지 K번째 스웜의 각각에 포함된 적어도 하나의 기존 클라이언트로부터 해당 스윔과 연관된 계층별 비트 스트림의 비디오 청크들을 통신부(540)를 통해 수신할 수 있다. 수신된 비디오 청크들은 제어부(510)의 제어하에 저장부(530)에 저장될 수 있다. 피어 클라이언트에 P2P 스트리밍 서비스를 요청하여 그로부터 비디오 청크들을 수신하는 절차는 공지되어 있으므로 이에 대한 상세한 설명은 생략한다. 단계(S604)에서는, 수신한 비디오 청크들을 비디오 프레임들로 구성하여 재생할 수 있다. 본 단계에서는, 저장부(530)에 저장된 비디오 청크들을 선정된 단위로 독출하여 디코딩하고, 디코딩 완료되어 출력된 데이터를 비디오 프레임들로 구성하여 재생할 수 있다. 이 경우, 제어부(510)가 적어도 하나의 피어 클라이언트로부터 통신부(540)를 통해 비디오 청크들을 수신하여 저장부(530)에 저장하는 동안에도, 즉 영상을 끝까지 재생하는데 필요한 모든 비디오 청크들의 수신이 완료되지 않은 상태에서도 비디오 프레임들을 재생할 수 있음을 인식하여야 한다.
단계(S605)에서는, 클라이언트(155)에서 변경된 해상도로 영상을 재생할 필요가 있다고 판단된 경우, 재등록 요청 메시지를 비디오 스트리밍 관리 장치(130)로 전송할 수 있다. 일 실시예에서, 미디어 재생부(520)에서의 비디오 프레임 재생 상태에 따라 수신하기를 원하는 계층별 비트 스트림의 개수(K) 보다 증가되거나 감소된 개수로 재등록 요청 메시지를 구성하여 비디오 스트리밍 관리 장치(130)로 전송할 수 있다. 일 실시예에서, 현재 재생되는 비디오 프레임의 번호와 현재 다운로드되고 있는 비디오 프레임의 번호의 차이가 선정된 값 이상인 경우, 등록 요청 메시지에 포함시켜 전송한 계층별 비트 스트림의 개수(K) 보다 증가된 개수로 비디오 스트리밍 관리 장치(130)로 재등록 요청 메시지를 전송할 수 있다. 예컨대, 수신하기를 원하는 계층별 비트 스트림의 개수(K)를 1로 하여 등록 요청 메시지를 비디오 스트리밍 관리 장치(130)로 전송한 후 피어 클라이언트들로부터 비디오 청크들을 수신하여 비디오 프레임들을 재생하다가, 통신 상태가 개선되어 피어 클라이언트들로부터 비디오 청크들이 원활하게 수신되는 경우 계층별 비트 스트림의 개수를 2나 3으로 변경하여 재등록 요청 메시지를 전송할 수 있다. 이 경우, 재등록 요청 메시지의 전송에 응답하여 비디오 스트리밍 관리 장치(130)로부터 추가의 스웜에 속한 피어(시드) 클라이언트들의 리스트를 수신하면 이 중 하나의 클라이언트에 P2P 스트리밍 서비스를 요청하여 추가의 스웜에 연관된 계층별 비트 스트림을 수신하되, 현재 수신하고 있는 계층별 비트 스트림들 중 최상위 계층의 비트 스트림으로서 받기 시작한 청크에 대응하는 비디오 청크부터 수신할 수 있다. 또한, 일 실시예에서, 현재 재생되는 비디오 프레임의 번호와 현재 다운로드되는 비디오 프레임의 번호의 차이가 선정된 값 미만인 경우, 등록 요청 메시지에 포함시켜 전송한 계층별 비트 스트림의 개수(K) 보다 감소된 개수로 비디오 스트리밍 관리 장치(130)로 재등록 요청 메시지를 전송할 수 있다. 예컨대, 수신하기를 원하는 계층별 비트 스트림의 개수(K)를 4로 하여 등록 요청 메시지를 비디오 스트리밍 관리 장치(130)로 전송한 후 피어 클라이언트들로부터 첫번째 내지 네번째 계층별 비트 스트림들(기본 계층 및 제1 내지 제3 향상 계층의 비트 스트림들)의 비디오 청크들을 수신하여 비디오 프레임들을 재생하다가, 통신 상태가 악화되어 피어 클라이언트들로부터의 비디오 청크 수신이 지연되는 경우 계층별 비트 스트림의 개수를 3이나 2로 변경하여 재등록 요청 메시지를 전송할 수 있다.
이상으로 설명한 실시예에 따르면, 클라이언트 장치는, 비디오 컨테츠의 계층별 비트 스트림들을 수신하고 있거나 수신 완료한 피어(시드) 클라이언트들을 스웜별로 할당하여 기록·관리하고 있는 비디오 스트리밍 관리 장치로부터 자신이 원하는 자원(비디오 컨텐츠의 적어도 하나의 계층별 비트 스트림)을 가지고 있는 피어(시드) 클라이언트들에 대한 정보를 수신하여 이들을 식별함으로써, 해당 자원을 가지고 있는 각 피어 클라이언트에 P2P 스트리밍 서비스를 요청하여 해당 자원을 스트리밍 방식으로 수신할 수 있게 된다.
도 7은 본 발명에 따라 P2P 비디오 스트리밍 서비스를 제공하기 위해 클라이언트에서 수행되는 방법의 일 실시예를 설명하기 위한 흐름도를 도시한 도면이다.
본 방법은 비디오 스트리밍 관리 장치(130)로부터 K 개의 스웜의 각각에 포함된 적어도 하나의 피어(시드) 클라이언트의 리스트를 수신하는 단계로부터 시작된다(단계(S701)). 여기서, K 개의 스웜은 비디오 컨텐츠를 SVC 인코딩 기법에 의해 인코딩하여 생성된 N 개의 계층별 비트 스트림과 각각 연관된 N 개의 스웜의 적어도 하위 일부를 구성할 수 있다. 예컨대, 비디오 컨텐츠가 5 개의 계층별 비트 스트림으로 인코딩된다면, 비디오 스트리밍 관리 장치(130)에서 관리하는 스웜의 개수는 5개이고, 이 경우 K개의 스웜은, (i) 스웜 1, (ii) 스웜 1 및 스웜 2, (iii) 스웜 1 내지 스웜 3, (iv) 스웜 1 내지 스웜 4 및 (v) 스웜 1 내지 스웜 5 중 하나가 될 수 있다. 단계(S702)에서는, K 개의 스웜의 각각에 포함된 적어도 하나의 피어(시드) 클라이언트로부터 해당 스윔과 연관된 계층별 비트 스트림의 비디오 청크들을 수신할 수 있다. 비디오 청크들을 수신하는 절차는 도 6과 관련하여 설명한 내용과 동일하므로 이에 대한 설명은 생략한다. 단계(S703)에서는, 수신한 비디오 청크들을 비디오 프레임들로 구성하여 재생한다.
단계(S704)에서는 적어도 하나의 다른 클라이언트 장치로부터의 K 개의 스웜 중 특정 스윔과 연관된 계층별 비트 스트림의 비디오 청크들을 전송해 달라는 요청을 수신한다. 예컨대, 클라이언트 A로부터 스웜 2와 연관된 비디오 청크들을 전송해 달라는 요청을 받을 수 있고, 클라이언트 B로부터 스웜 1과 연관된 비디오 청크들을 전송해 달라는 요청을 받을 수 있고, 클라이언트 C로부터 스웜 3과 연관된 비디오 청크들을 전송해 달라는 요청을 받을 수 있다. 단계(S705)에서는, 비디오 청크 전송 요청을 해 온 다른 클라이언트들에게 요청된 비디오 청크들을 전송할 수 있다.
단계(S705)를 수행함에 있어, 비디오 청크들을 요청한 다른 클라이언트들에 대해 우선 순위를 부여하여 우선 순위가 높은 다른 클라이언트에 대해 높은 전송률로 비디오 청크를 전송할 수 있다. 일 실시예에서, K 개의 스웜 중 하위 스웜과 연관된 계층별 비디오 스트림의 비디오 청크들을 전송 요청한 다른 클라이언트 보다 상위 스웜과 연관된 계층별 비디오 스트림의 비디오 청크들을 전송 요청한 다른 클라이언트에 대해 낮은 우선 순위를 두고 다른 클라이언트들에 비디오 청크들을 전송할 수 있다. 예컨대, 전술한 예의 경우, '클라이언트 B > 클라이언트 A > 클라이언트 C'와 같이 기본 계층의 비디오 청크들을 요청한 클라이언트 B에 대해 가장 높은 우선 순위를 두고 클라이언트 B에 가장 높은 청크 전송률로 비디오 청크들을 전송할 수 있다. 첫번째 스웜 내지 K번째 스웜과 연관된 계층별 비디오 스트림의 비디오 청크들을 전송 요청한 다른 클라이언트들에 대한 우선 순위는 아래의 수학식에 의해 정해지는 비율에 따를 수 있다.
Figure 112015092957710-pat00001
여기서, P(K)는 K번째 스웜과 연관된 비디오 청크들을 전송 요청한 다른 클라이언트에 대한 우선 순위이고, R은 등비 수열의 공비이다.
일 실시예에서, 비디오 청크들을 요청한 다른 클라이언트들에 대한 우선 순위를 클라이언트(155)의 비디오 프레임 재생 상태에 따라 변경하여 설정할 수도 있다. 즉, 현재 재생되는 비디오 프레임의 번호와 K 개의 스웜 중 첫번째 스웜과 연관된 계층별 비디오 스트림의 현재 수신되는 비디오 청크에 대응하는 비디오 프레임의 번호와의 차이(D)에 기초하여 우선 순위를 정하는 것이 가능하다. 예컨대, 클라이언트(155)가 기본 계층 및 제1 및 제2 향상 계층의 비트 스트림들을 수신하여 이를 비디오 프레임들로 구성하여 재생하고 있을 경우, 현재 120번째 프레임을 재생하고 있고 기본 계층의 비트 스트림의 현재 수신되는 비디오 청크가 500번째 비디오 프레임으로 구성된다면, 전술한 차이(D)는 380이 된다. 구체적으로, 차이(D)가 선정된 값 미만인 경우, K 개의 스웜 중 하위 스웜과 연관된 계층별 비디오 스트림의 비디오 청크들을 전송 요청한 다른 클라이언트 장치 보다 상위 스웜과 연관된 계층별 비디오 스트림의 비디오 청크들을 전송 요청한 다른 클라이언트 장치에 대해 낮은 우선 순위를 두고 복수의 다른 클라이언트 장치에 비디오 청크들을 전송하고, 차이 D가 선정된 값 이상인 경우, 첫번째 스웜과 연관된 계층별 비디오 스트림의 비디오 청크들을 전송 요청한 다른 클라이언트 장치에 대한 우선 순위를 두번째 이상의 스웜과 연관된 계층별 비디오 스트림의 비디오 청크들을 전송 요청한 다른 클라이언트 장치에 대한 우선 순위 보다 낮추는 것이 가능하다. 예컨대, 전술한 예에서 선정된 값이 500이라면 D(= 380)가 500 미만이므로, '클라이언트 B > 클라이언트 A > 클라이언트 C'와 같이 우선 순위를 정할 수 있는데, 통신 상태가 좋아져 400번째 비디오 프레임을 재생하고 있는 순간 기본 계층의 비트 스트림의 현재 수신되는 비디오 청크가 1,000번째 비디오 프레임으로 구성될 청크에 해당된다면 D가 600(1,000 - 400)이 되어 선정된 값인 500 이상이 되므로 기본 계층의 비디오 청크들을 요청한 클라이언트 B에 대한 우선 순위를 클라이언트 A에 대한 우선 순위 보다 낮출 수 있다('클라이언트 A > 클라이언트 B > 클라이언트 C').
본원에 개시된 실시예들에 있어서, 도시된 구성 요소들의 배치는 발명이 구현되는 환경 또는 요구 사항에 따라 달라질 수 있다. 예컨대, 일부 구성 요소가 생략되거나 몇몇 구성 요소들이 통합되어 하나로 실시될 수 있다. 또한 일부 구성 요소들의 배치 순서 및 연결이 변경될 수 있다.
이상에서는 본 발명의 다양한 실시예들에 대하여 도시하고 설명하였지만, 본 발명은 상술한 특정의 실시예들에 한정되지 아니하며, 상술한 실시예들은 첨부하는 특허청구범위에서 청구하는 본 발명의 요지를 벗어남이 없이 당해 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 다양하게 변형 실시될 수 있음은 물론이고, 이러한 변형 실시예들이 본 발명의 기술적 사상이나 범위와 별개로 이해되어져서는 아니 될 것이다. 따라서, 본 발명의 기술적 범위는 오직 첨부된 특허청구범위에 의해서만 정해져야 할 것이다.
120: VOD 서버
130: 비디오 스트리밍 관리 장치
140: 통신망
150-1 ~ 150-N: 스웜
155: 클라이언트
210: 제어부
220: 저장부
230: 통신부
300: 스웜 할당 테이블
510: 제어부
520: 미디어 재생부
530: 저장부
540: 통신부

Claims (22)

  1. 삭제
  2. 삭제
  3. 삭제
  4. 삭제
  5. 삭제
  6. 삭제
  7. 삭제
  8. 삭제
  9. 삭제
  10. 삭제
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. P2P 비디오 스트리밍 서비스를 제공하기 위해 클라이언트 장치에서 수행되는 방법으로서,
    비디오 스트리밍 관리 장치로부터 K 개의 스웜의 각각에 포함된 적어도 하나의 기존 클라이언트의 리스트를 수신하는 단계 - 상기 K 개의 스웜은 비디오 컨텐츠의 N 개의 계층별 비트 스트림과 각각 연관된 N 개의 스웜의 적어도 하위 일부를 구성함 -,
    상기 K 개의 스웜의 각각에 포함된 적어도 하나의 기존 클라이언트로부터 해당 스윔과 연관된 계층별 비트 스트림의 비디오 청크들을 수신하는 단계, 및
    적어도 하나의 다른 클라이언트 장치로부터의 상기 K 개의 스웜 중 특정 스윔과 연관된 계층별 비트 스트림의 비디오 청크들의 전송 요청에 응답하여 상기 적어도 하나의 다른 클라이언트 장치로 상기 비디오 청크들을 전송하는 단계를 포함하는 방법.
  19. 제18항에 있어서,
    상기 적어도 하나의 다른 클라이언트 장치는 복수의 다른 클라이언트 장치를 포함하며,
    상기 전송하는 단계는, 상기 K 개의 스웜 중 하위 스웜과 연관된 계층별 비디오 스트림의 비디오 청크들을 전송 요청한 다른 클라이언트 장치 보다 상위 스웜과 연관된 계층별 비디오 스트림의 비디오 청크들을 전송 요청한 다른 클라이언트 장치에 대해 낮은 우선 순위를 두고 상기 복수의 다른 클라이언트 장치에 비디오 청크들을 전송하는 단계를 포함하는, 방법.
  20. 제18항에 있어서,
    상기 적어도 하나의 다른 클라이언트 장치는 복수의 다른 클라이언트 장치를 포함하며,
    상기 방법은, 상기 K 개의 스웜의 각각과 연관된 계층별 비트 스트림의 비디오 청크들을 디코딩함으로써 비디오 프레임들을 출력하여 재생하는 단계를 더 포함하고,
    상기 전송하는 단계는
    현재 재생되는 비디오 프레임의 번호와 상기 K 개의 스웜 중 첫번째 스웜과 연관된 계층별 비디오 스트림의 현재 수신되는 비디오 청크에 대응하는 비디오 프레임의 번호와의 차이(D)가 선정된 값 미만인 경우, 상기 K 개의 스웜 중 하위 스웜과 연관된 계층별 비디오 스트림의 비디오 청크들을 전송 요청한 다른 클라이언트 장치 보다 상위 스웜과 연관된 계층별 비디오 스트림의 비디오 청크들을 전송 요청한 다른 클라이언트 장치에 대해 낮은 우선 순위를 두고 상기 복수의 다른 클라이언트 장치에 비디오 청크들을 전송하고,
    상기 D가 선정된 값 이상인 경우, 상기 첫번째 스웜과 연관된 계층별 비디오 스트림의 비디오 청크들을 전송 요청한 다른 클라이언트 장치에 대한 우선 순위를 두번째 이상의 스웜과 연관된 계층별 비디오 스트림의 비디오 청크들을 전송 요청한 다른 클라이언트 장치에 대한 우선 순위 보다 낮추어 상기 복수의 다른 클라이언트 장치에 비디오 청크들을 전송하는 단계를 포함하는, 방법.
  21. 제20항에 있어서,
    상기 첫번째 스웜 내지 K번째 스웜과 연관된 계층별 비디오 스트림의 비디오 청크들을 전송 요청한 다른 클라이언트들에 대한 우선 순위는 아래의 수학식 1에 의해 정해지는 비율에 따르는, 방법.
    수학식 1:
    Figure 112017023793927-pat00002
    Figure 112017023793927-pat00003

    여기서, P(K)는 K번째 스웜과 연관된 비디오 청크들을 전송 요청한 다른 클라이언트에 대한 우선 순위이고, R은 등비 수열의 공비임.
  22. 삭제
KR1020150134933A 2015-09-23 2015-09-23 P2p 비디오 스트리밍을 지원하기 위한 장치 및 방법 KR101780981B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020150134933A KR101780981B1 (ko) 2015-09-23 2015-09-23 P2p 비디오 스트리밍을 지원하기 위한 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150134933A KR101780981B1 (ko) 2015-09-23 2015-09-23 P2p 비디오 스트리밍을 지원하기 위한 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20170035706A KR20170035706A (ko) 2017-03-31
KR101780981B1 true KR101780981B1 (ko) 2017-09-26

Family

ID=58500949

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150134933A KR101780981B1 (ko) 2015-09-23 2015-09-23 P2p 비디오 스트리밍을 지원하기 위한 장치 및 방법

Country Status (1)

Country Link
KR (1) KR101780981B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11159614B2 (en) 2019-01-23 2021-10-26 Samsung Electronics Co., Ltd. Method and apparatus for managing data in a network based on swarm intelligence

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010515113A (ja) 2006-11-29 2010-05-06 トムソン ライセンシング コントリビューション認識ピアツーピアライブストリーミングサービス
JP2010522472A (ja) 2007-03-23 2010-07-01 ソニー株式会社 ピアツーピア間のファイル転送モデル及びクライアント−サーバ間のファイル転送モデルを用いてクライアントへファイルを転送するための方法及び装置
KR101020648B1 (ko) * 2009-02-13 2011-03-09 고려대학교 산학협력단 스케일러블 피투피 스트림 수신 방법 및 전송 방법
US8386630B1 (en) 2007-09-09 2013-02-26 Arris Solutions, Inc. Video-aware P2P streaming and download with support for real-time content alteration
KR101525471B1 (ko) * 2013-10-30 2015-06-03 주식회사 마블루스 비디오제공방법 및 비디오제공시스템

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010515113A (ja) 2006-11-29 2010-05-06 トムソン ライセンシング コントリビューション認識ピアツーピアライブストリーミングサービス
JP2010522472A (ja) 2007-03-23 2010-07-01 ソニー株式会社 ピアツーピア間のファイル転送モデル及びクライアント−サーバ間のファイル転送モデルを用いてクライアントへファイルを転送するための方法及び装置
US8386630B1 (en) 2007-09-09 2013-02-26 Arris Solutions, Inc. Video-aware P2P streaming and download with support for real-time content alteration
KR101020648B1 (ko) * 2009-02-13 2011-03-09 고려대학교 산학협력단 스케일러블 피투피 스트림 수신 방법 및 전송 방법
KR101525471B1 (ko) * 2013-10-30 2015-06-03 주식회사 마블루스 비디오제공방법 및 비디오제공시스템

Also Published As

Publication number Publication date
KR20170035706A (ko) 2017-03-31

Similar Documents

Publication Publication Date Title
JP6469788B2 (ja) メディアコンテンツの適応型ストリーミングのための品質情報の使用
RU2671946C2 (ru) Устройство и способ обработки информации
CA2848455C (en) Mobile multimedia real-time transcoding system, apparatus, storage medium and method
RU2650181C2 (ru) Устройство обработки информации и способ
US8543660B2 (en) Systems and methods for bridging and managing media content associated with separate media content networks
US9042449B2 (en) Systems and methods for dynamic transcoding of indexed media file formats
CN102547478B (zh) 基于cdn的流媒体触发式切片点播系统和方法
JP5859694B2 (ja) コンテンツのプレイアウトをサポートする方法及び装置
WO2020067592A1 (ko) 컨텐츠 인지 신경망을 이용하여 실시간으로 적응형 비디오를 전송하는 방법 및 장치
CN105191322A (zh) 使用按需转码的多画面网络数字视频记录的系统和方法
WO2015152608A2 (ko) 서브블록 기반 예측을 수행하는 인터 레이어 비디오 복호화 방법 및 그 장치 및 서브블록 기반 예측을 수행하는 인터 레이어 비디오 부호화 방법 및 그 장치
CN112868229A (zh) 用于流传输数据的方法和设备
EP3148200B1 (en) Information processing device and method selecting content files based on encoding parallelism type
US20170134736A1 (en) Information processing device and method
US20140189760A1 (en) Method and system for allocating wireless resources
US20150120819A1 (en) System and method for associating representations in adaptive streaming
CN107005700B (zh) 用于组成中间视频表示的方法
CN105681139A (zh) 用于传输自适应调整的文件的设备和方法
CN105103565B (zh) 服务器设备、客户端设备、内容分发方法以及计算机程序
Yao et al. Video streaming adaptation strategy for multiview navigation over DASH
CN109644286B (zh) 分发装置和方法、接收装置和方法、介质和内容分发系统
EP3525472A1 (en) Reception device, transmission device, and data processing method
KR101780981B1 (ko) P2p 비디오 스트리밍을 지원하기 위한 장치 및 방법
KR20200081161A (ko) 컨텐츠 스트리밍 장치, 시스템 및 방법
CN108271039B (zh) 一种文件发送方法及装置

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
GRNT Written decision to grant