KR101410621B1 - 비디오 스트리밍의 끊김없는 되감기 및 재생을 위한 서버측 지원 - Google Patents

비디오 스트리밍의 끊김없는 되감기 및 재생을 위한 서버측 지원 Download PDF

Info

Publication number
KR101410621B1
KR101410621B1 KR1020117020525A KR20117020525A KR101410621B1 KR 101410621 B1 KR101410621 B1 KR 101410621B1 KR 1020117020525 A KR1020117020525 A KR 1020117020525A KR 20117020525 A KR20117020525 A KR 20117020525A KR 101410621 B1 KR101410621 B1 KR 101410621B1
Authority
KR
South Korea
Prior art keywords
video stream
delete delete
streaming
stream
streaming data
Prior art date
Application number
KR1020117020525A
Other languages
English (en)
Other versions
KR20110116204A (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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=42397792&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=KR101410621(B1) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by 구글 인코포레이티드 filed Critical 구글 인코포레이티드
Publication of KR20110116204A publication Critical patent/KR20110116204A/ko
Application granted granted Critical
Publication of KR101410621B1 publication Critical patent/KR101410621B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/16Analogue secrecy systems; Analogue subscription systems
    • H04N7/173Analogue secrecy systems; Analogue subscription systems with two-way working, e.g. subscriber sending a programme selection signal
    • H04N7/17309Transmission or handling of upstream communications
    • H04N7/17318Direct or substantially direct transmission and handling of requests
    • 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/231Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion
    • H04N21/23106Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion involving caching operations
    • 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/238Interfacing the downstream path of the transmission network, e.g. adapting the transmission rate of a video stream to network bandwidth; Processing of multiplex streams
    • H04N21/2387Stream processing in response to a playback request from an end-user, e.g. for trick-play
    • 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/65Transmission of management data between client and server
    • H04N21/658Transmission by the client directed to the server
    • H04N21/6581Reference data, e.g. a movie identifier for ordering a movie or a product identifier in a home shopping application
    • 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/65Transmission of management data between client and server
    • H04N21/658Transmission by the client directed to the server
    • H04N21/6587Control parameters, e.g. trick play commands, viewpoint selection
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/83Generation or processing of protective or descriptive data associated with content; Content structuring
    • H04N21/845Structuring of content, e.g. decomposing content into time segments
    • H04N21/8455Structuring of content, e.g. decomposing content into time segments involving pointers to the content, e.g. pointers to the I-frames of the video stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/76Television signal recording

Abstract

시스템 및 방법은 비디오 스트림의 끊김 없고, 확장성 있는 되감기 및 재생을 위한 서버 측 지원을 제공한다. 비디오 스트림은 네트워크 저장 장소에 저장 및 인덱싱된다. 비디오 스트림은 프레임 레벨로 인덱싱될 수 있고, 이때, 비디오 스트림의 각 내부 프레임은 비디오 스트림의 내부 프레임의 파일 오프셋과 내부 프레임을 나타내는 인덱스를 가진다. 비디오 스트림이 방송되고 있는 중의 사용자의 비디오 스트림에 대한 되감기 요청은 사용자의 요청으로부터의 되감기 시간 조건을 추출함으로써 처리된다. 추출된 되감기 시간 값은 요청된 파일 오프셋을 계산하는 데에 사용된다. 요청된 시간에서의 비디오 스트림 시작은 검색되어, 사용자에 요청에 따라 재생된다. 시스템은 또한 비디오 스트림의 끊김 없는 되감기 및 복수의 스트리밍 데이터 센터 사이의 확장성 있는 시스템 성능을 위한 서버 측 지원을 제공한다.

Description

비디오 스트리밍의 끊김없는 되감기 및 재생을 위한 서버측 지원{SERVER-SIDE SUPPORT FOR SEAMLESS REWIND AND PLAYBACK OF VIDEO STREAMING}
본 발명은 인터넷과 같은 원격통신 네트워크 상에서 일반적인 비디오 스트리밍 방법에 관한 것으로, 더욱 자세하게는 실시간 비디오 스트림의 끊김없는 되감기 및 재생을 위한 서버측 지원을 제공하는 방법에 관한 것이다.
비디오 스트리밍 시스템은 인터넷 기반의 방송과 같은 서비스를 통하여 다수의 사용자에게 실시간 비디오 스트림을 전달(deliver)할 수 있다. 종래의 비디오 스트리밍 시스템은 클라이언트 장치(machine) 상에서 동작하는(running) 비디오 플레이어를 사용자에게 제공한다. 비디오 플레이어는 클라이언트 장치의 로컬(local) 메모리에 비디오 스트림을 수신 및 버퍼링(buffer)한다. 사용자의 비디오 스트림의 되감기 및 그 이후의 재생 요청에 응답하여, 비디오 플레이어는 로컬 메모리로부터 버퍼링된 비디오에 접근(access)한다. 비디오 스트림 되감기를 위한 이러한 클라이언트측 지원은 스트리밍 서버로부터 수신된 비디오 스트림을 저장하고, 후속의 스트리밍 데이터 패킷의 수신을 계속하는 동안 되감기를 위한 시간 조건(timing requirement)을 계산하기 위하여 고속 중앙 처리 장치(CPU), 적절한 메모리 및 디스크 용량과 같은 많은 양의 클라이언트측 계산 리소스를 필요로 한다. 결과적으로, 사용자는 전형적으로 처리 지연을 겪게 되고, 저질의(degraded) 스트리밍 서비스를 경험하게 된다.
실시간 비디오 스트림을 되감기하기 위한 기존의 클라이언트측 지원의 실행에 의해 직면하는 다른 문제는 비디오 스트리밍 시스템의 확장성(scalability)의 결여이다. 실시간 비디오 스트림은 보통 수천만 또는 수백만의 시청자들에게 동시에 방송된다. 비디오 스트리밍 시스템은 종종 다수의 서브 시스템을 포함하고, 서브 시스템 각각은 실시간 비디오/오디오 피드를 수신하기 위한 복수의 수신(incoming) 스트리밍 서버와, 비디오 스트림을 처리하기 위한 복수의 스트림 핸들러(handler)와, 시청자에게 요청된 비디오 스트림을 제공하는 복수의 비디오 스트리밍 서버를 포함한다. 사용자 경험의 질적 하락 없는 아카이빙(archiving) 및 검색(retrieving)은 비디오 스트리밍 시스템의 서버측에서 더 효율적인 비디오 스트림 아카이빙/검색 및 확장성을 요구한다.
방법, 시스템 및 컴퓨터 프로그램 매체(product)는 비디오 스트림의 끊김없는 되감기 및 재생을 위한 서버측 지원을 제공한다.
비디오 스트리밍 시스템의 일실시예는 복수의 스트리밍 데이터 센터 컴퓨터 시스템을 포함한다. 스트리밍 데이터 센터 컴퓨터 시스템은 수신 스트리밍 서버 컴퓨터 시스템, 하나 또는 그 이상의 스트림 핸들러, 스트리밍 아카이빙 데이터베이스 시스템, 로컬 인덱스 데이터베이스 시스템 및 하나 또는 그 이상의 스트리밍 서버 시스템을 포함한다. 스트리밍 데이터 센터 컴퓨터는 다양한 비디오 피드(feed)로부터 네트워크 연결을 통하여 수신되는 비디오/오디오 스트림을 수집하고, 아카이빙 및 인덱싱(indexing)을 위한 스트림 핸들러에게 비디오 스트림을 분배한다. 스트리밍 데이터 센터는 또함 사용자 클라이언트 디바이스로부터 스트리밍 요청을 수신하고, 사용자에게 요청된 서비스를 제공한다.
스트리밍 아카이빙 데이터베이스 시스템은 스트리밍 데이터 센터에 의해 기여된(contrubuted) 비디오 스트림 인덱싱 정보를 저장한다. 일실시예로서, 스트리밍 데이터 센터로부터의 각각의 비디오 스트림에 대하여 비디오 스트림의 각 GOP의 인덱스를 저장하는 GOP 레벨 인덱스 파일이 있다. 다른 실시예로, 각 비디오 스트림에 대하여 비디오 스트림의 내부 프레임 각각의 인텍스를 저장하는 프레임 레벨 인덱스 파일이 있다.
방법의 일실시예는 사용자 디바이스로부터 스트리밍 요청을 수신하고, 요청을 처리(serve)할 스트림 핸들러를 식별하는 것을 포함한다. 비디오 스트림이 방송되고 있는 도중의 되감기 요청에 응답하여, 상기 방법은 되감는 시간 조건을 추출하고, 되감는 시간 조건에 대응하는 파일 오프셋을 계산하고, 요청된 비디오 스트림을 스트리밍하는 것을 포함한다. 상기 시간 조건은 비디오 방송의 시작과 비교하여 되감기 요청에 의해 결정된다. 상기 시간에 대응되는 비디오 부분을 위한 비디오로의 오프셋은 인덱스로부터 결정되고, 상기 비디오 부분에 대응되는 데이터는 복원되어 클라이언트 디바이스에 스트리밍된다.
본 발명의 특징과 장점은 본 명세서 기술된 사항에 모두 포함되는 것은 아니며, 특히 많은 부가적인 특징 및 장점이 도면, 상세한 설명 및 청구항의 관점으로부터 통상적인 기술자에게 자명할 수 있다. 더욱이, 상세한 설명에 사용된 언어는 원칙적으로 가독성(readability) 및 설명의 목적으로 선택되었고, 공개된 주제를 정의(delineate)하거나, 한정(circumscribe)하기 위해 선택된 것이 아님을 알아야 한다.
도 1은 비디오 스트리밍의 끊김없는 되감기 및 재생을 위한 서버측 지원을 위한 스트리밍 시스템을 갖는 환경을 나타내는 블럭 다이어그램이다.
도 2a는 비디오 스트리밍의 끊김없는 되감기 및 재생을 위한 스트리밍 데이터 센서를 나타내는 블럭 다이어그램이다.
도 2b는 비디오 스트림 시청을 위한 스트리밍 요청을 처리(handling)하기 위한 스트리밍 데이터 센터를 나타내는 블럭 다이어그램이다.
도 3은 수신 스트리밍 서버의 블럭 다이어그램이다.
도 4는 실시간 비디오 스트리밍의 끊김없는 되감기 및 재생을 위한 스트림 핸들러의 블럭 다이어그램이다.
도 5는 스트리밍 데이터 센서에 의해 비디오 스트림을 처리하는 플로우 차트이다.
도 6은 스트리밍 데이터 센서에 의해 요청된 스트리밍을 제공하는 것에 대한 플로우 차트이다.
도 7은 향상된 확장성을 가진 복수의 스트리밍 데이터 센서 사이의 비디오 스트리밍 요청을 제공하는 것에 대한 플로우 차트이다.
도면은 본 발명의 목적을 설명하기 위한 목적으로 다양한 실시예를 묘사하고 있으며, 발명은 이러한 예시되어 있는 구성에 한정되는 것은 아니다. 해당 기술분야의 숙련된 기술자는 여기에 설명된 본 발명의 원리에서 벗어남이 없이 다음의 논의로부터 대체적인 구성 및 방법의 실시예를 인식할 수 있을 것이다.
도 1은 클라이언트(100)으로부터 비디오 스트리밍 요청을 수신하고, 요청된 스트리밍 데이터를 클라이언트(100)로 전송하는 일실시예에 따른 스트리밍 시스템(100)을 설명하는 블럭 다이어그램이다. 시스템(100)은 데이터 센터 디스패쳐(dispatcher) 컴퓨터 시스템(114)("데이터 센터 디스패쳐(114)"), 공유 인덱스 데이터베이스 컴퓨터 시스템(118)("공유 인덱스 데이터베이스(118)") 및 하나 또는 그 이상의 스트리밍 데이터 센터 컴퓨터 시스템(200A-N)("스트리밍 데이터 센터(200)")를 포함한다. 이 컴퓨터 시스템 각각은 하나 또는 그 이상의 컴퓨터를 포함하며, 바람직하게는 하나 또는 그 이상의 프로세서와, 높은 성능의 디스크 저장 어레이(예를 들어 1Tb) 및 가용 메모리(예를 들어 1Gb)를 가지는 서버 등급의 컴퓨터를 포함할 수 있다. 클라이언트(100)와 스트리밍 데이터 센터(200)은 인터넷과 같은 컴퓨터 네트워크(112)를 경유하여 상호 연결된다. 데이터 센터 디스패쳐(114)는 클라이언트(100) 및 스트리밍 데이터 센터(200)와 통신한다. 각각의 스트리밍 데이터 센터(200)는 공유 인덱스 데이터베이스(118)에 비디오 스트림 인덱싱 정보를 기록하고, 공유 인덱스 데이터 베이스(118)로부터 비디오 스트림 인덱싱 정보를 복원하고, 각각의 비디오 스트림을 하나 또는 그 이상의 클라이언트(100)에 제공함으로써 복수의 비디오 스트림을 처리한다. 도면을 간단화하고 명확화하기 위해서 도 1에서는 오직 두 개의 클라이언트(110)와, 네 개의 스트리밍 센터(200)만이 도시되어 있으나, 실제로는 더 많은 개수의 클라이언트(110)와 스트리밍 데이터 센터(200)가 작동될 수 있다.
예시된 환경은 스트리밍 데이터 센터(200)에 의해 제공되는 비디오 스트리밍 서비스를 시청하는 다수의 사용자/시청자들이 있는 전형적인 시나리오를 나타낸다. 이 시나리오에서, 사용자는 클라이언트(110)을 사용하여 비디오 스트리밍 서비스 요청을 데이터 센터 디스패쳐(114)를 통하여 스트리밍 데이터 센터(200)에 전송하고, 스트리밍 데이터 센터(200)로부터 직접 요청된 서비스를 수신한다(즉, 데이터 센터 디스패쳐(114)를 통과함이 없이). 데이터 센터 디스패쳐(11)는 각 스트리밍 센터의 부하(load)와 같은 몇가지의 원칙(criteria)에 기초하여 스트리밍 데이터 센터(200) 중의 하나에 스트리밍 서비스 요청을 전송한다. 데이터 센터 디스패쳐(11)에 의해 선택된 스트리밍 데이터 센터(200)는 클라이언트로부터 스트리밍 서비스 요청을 수신하고, 요청된 서비스를 네트워크(112)를 통하여 클라이언트(100)에 제공한다.
도 1에 예시된 개별적인 엔티티(entities)로 돌아가면, 각 클라이언트(110)는 비디오 스트리밍 서비스를 요청하기 위해서 사용자에 의해 사용된다. 예를 들어, 사용자는 클라이언트(110)를 사용하여 방송되는 비디오 스트림을 시청하고, 비디오 스트림을 재생하고, 비디오 스트림을 정지하고, 또는 비디오가 여전히 방송되고 있는 동안 특정한 시간 지점으로 비디오 스트림을 되감기 위한 요청을 전송한다. 클라이언트(110)는 모바일 전화기, PDA(personal digital assistant), IP 기반 비디오 플레이어와 같은 디바이스는 물론 개인용 컴퓨터(예를 들어, 데스크탑, 노트북, 랩탑)와 같은 어떤 타입의 컴퓨터도 될 수 있다. 클라이언트(110)는 전형적으로 프로세서, 디스플레이 디바이스(또는 디스플레이 디바이스로의 출력), 임무를 수행중에 사용자에 의해 사용된 데이터를 저장하는 하드 드라이브 또는 플래시 메모리와 같은 로컬 저장장치, 및 클라이언트 단말(110)는 네트워크(112)를 통하여 시스템(100)에 결합하기 위한 네트워크 인터페이스를 포함한다.
클라이언트(110)는 비디오 스트림을 재생하기 위한 비디오 플레이어(120)(예를 들어, 어도브 시스템의 플래시 재생기)를 가진다. 비디오 플레이어(120)는 독립된(standalone) 어플리케이션 또는 네트워크 브라우저와 같은 다른 어플리케이션에 플러그-인(plug-in)일 수 있다. 클라이언트(110)가 일반적인 목적의 디바이스(예를 들어, 데스크탑 컴퓨터, 모바일폰)인 경우에, 플레이어(120)는 전형적으로 컴퓨터에 의해 실행되는 소프트웨어로서 전형적으로 구현될 수 있다. 클라이언트(110)가 전용(dedicated) 디바이스(예를 들어, 전용 비디오 플레이어)인 경우, 플레이어(120)는 하드웨어로 구현되거나, 하드웨어와 소프트웨어의 결합으로 구현될 수 있다. 이러한 모든 구성은 본 발명과 관련하여 기능적으로 동등하다. 플레이어(120)는 비디오 피드의 선택, 시작, 종료 및 비디오 피드를 되감기 위한 사용자 인터페이스 제어(그리고 대응되는 어플리케이션 프로그램 인터페이스)를 포함한다. 또한, 플레이어(120)는 비디오 스트리밍의 진행, 예를 들어, 비디오 스트림의 전체 시간과 관련하여 현재 재생 시간(알려져 있는 경우)을 지시하도록 구성되는 자체 사용자 인터페이스 타임라인 슬라이더(timeline slider)을 포함할 수 있다. 타임라인 슬라이더는 사용자 인터페이스에서 직접 조작(manipulation)을 위하여 더 구성될 수 있으며, 타임라인 슬라이더를 이용하여 사용자는 이전에 방송 부분을 시청하기 위해 비디오 스트림을 되감기를 원하는 경우 얼마나 많은 부분(예를 들어 몇 분)을 구체화하는 타임라인 슬라이더를 움직일 수 있다. 다른 타입의 사용자 인터페이스 제어(예를 들어, 버튼, 키보드 제어)는 또한 플레이어(120)의 재생 및 되감기 기능을 제어하도록 구성될 수 있다.
네트워크(112)는 클라이언트(110)와 스트리밍 데이터 센터(200) 사이에 통신을 가능하게 한다. 일실시예에서, 네트워크(112)는 인터넷이며, 현재 알려져 있거나 후속적으로 개발되어 클라이언트(110)가 스트리밍 데이터 센터(200)와 통신할 수 있도록 표준화된 인터넷워킹(internetworking) 통신 기술 및 프로토콜을 사용한다.
이러한 기술(description)의 목적을 위해, 비디오 스트림은 인터넷상의 스트리밍 미디어 컨텐츠 제공자에 의해 방송되는 라이브 스포츠, 음악, 뉴스 및 엔터테인먼트와 같은 실시간 비디오 피드로부터의 비디오 스트림이다. 비디오 스트림은 또한 인터넷 상의 스트리밍 미디어 컨텐츠 제공자에 의해 재방송되는 녹화된 라이브 콘서트, 티비 쇼 또는 영화와 같은 녹화된 피드로부터의 비디오 스트림을 포함한다. 각 비디오 스트림은 스트림 식별(ID)에 의해 식별된다. 비디오 스트림은 복수의 내부 프레임(I 프레임), 예측 프레임(P 프레임)을 포함하고, 코덱에 따라 양방향적으로 예상된(bi-directionally predicted) 프레임(B 프레임)을 포함할 수도 있다. 비디오 스트림의 복수의 비디오 프레임은 그림 그룹(GOP)으로 더 그룹화될 수 있으며, 이 각 GOP는 적어도 하나의 내부 프레임을 포함한다. 비디오 스트림은 하나 또는 그 이상의 관련된 파일로 네트워크 저장장치에 저장되어 있으며, 이 관련된 파일 각각은 복수의 오디오/비디오 데이터 패킷으로 구성된다. 비디오의 피드/소스(티비 방송 스테이션 또는 인터넷 기반 비디오 스트림 제공자)는 엔코더에 연결된다. 엔코더는 수신된 비디오 스트림을 캡쳐 및 디지털화하고, 그것을 압축하고, 결과 데이터를 추가적인 처리를 위한 비디오 서버에 전달하는 역할을 한다.
데이터 센터 디스패쳐(114)는 일반적으로 클라이언트(110)로부터 전송된 사용자 스트림 요청이 도메인 네임 서버(DNS) 조회(lookup)을 필요로 하는 경우에 사용된다. 예를 들어, 사용자로부터 요청된 스트림은 "http://host.com/stream_id"에 위치할 수 있다. 사용자를 대표하여 클라이언트(110)는 데이터 디스패쳐(114)와 통신하여 스트림 "stream_id"를 호스팅하고 있는 호스트 서버 "host.com"의 인터넷 프로토콜(IP) 주소를 알아 낸다. 데이터 센터 디스패쳐(114)는 스트리밍 데이터 센터의 부하와 같은 몇 가지의 원칙에 기반하여 스트리밍 데이터 센터(200) 중 하나에 스트리밍 서비스 요청을 분배한다. 스트리밍 데이터 센터 각각의 부하는 데이터 센터당 대역폭(bandwidth) 사용량 및 각 스트리밍 데티어 센터에 할당된 대역폭 수용용량(capacity) 값을 기초로 계산될 수 있다. 데이터 센터 디스패쳐(114)는 대역폭 사용량이 그것의 전체 수용용량에 가까운 스트리밍 데이터 센터로 스트리밍 요청을 전송하는 것을 피함으로써 부하의 균형을 맞춘다. 해당 기술 분야의 통상의 기술자에게 이미 알려진 다른 부하 밸런싱 메커니즘도 이용 가능하다.
공유 인덱스 데이터베이스(118)는 방송 비디오 스트림을 되감기 위한 스트리밍 데이터 센터(200)에 의해 기여된 비디오 스트림 인덱싱 정보를 저장한다. 일실시예에서, 스트리밍 데이터 센터(200)로부터의 각각의 비디오 스트림에 대하여, 비디오 스트림의 각 GOP의 인덱스를 저장하는 GOP-레벨 인덱스 파일이 존재한다. 구체적으로, GOP-레벨 인덱스 파일은 튜플(stream_ID, file_offset, time_stamp)에 각 GOP의 첫 번째 내부 프레임의 인덱스를 보관한다. 다른 실시예에서, 각 비디오 스트림에 대해, 비디오 스트림의 각 내부 프레임의 인덱스를 저장하는 프레임-레벨 인덱스 파일이 존재한다. 상기 인덱스는 각 내부 프레임에 대한 상기 튜플(stream_ID, file_offset, time_stamp)을 저장한다. "Stream_ID"는 상기 내부 프레임이 속하는 비디오 스트림을 식별한다. "file offset"은 비디오 스트림 파일의 바이트 단위로 상기 내부 프레임이 시작하는 위치를 나타낸다(indicate). 상기 "file_offset" 값은 아카이브된 파일의 시작으로부터 계산되는 절대적인 숫자의 값이다(예를 들어, byte 0). "time stamp"는 비디오 스트림의 아카이브된 파일의 내부 프레임이 시작하는 시간을 나타낸다. 상기 "time_stamp" 값은 비디오 스트림 시작 재생 시간으로부터 계산되는 절대적인 숫자의 값이다(예를 들어, 0 밀리초).
일실시예에서, 상기 인덱싱 정보는 글로벌(global) 비디오 스트림 인덱싱 파일로서 저장된다. 상기 글로벌 비디오 스트림 인덱스 파일은 스트리밍 데이터 센터(200)에 의해 처리된 각 비디오 스트림에 대한 인덱스를 포함한다. 특정 스트리밍 데이터 센터(200)으로부터의 인덱스는 스트리밍 데이터 센터 식별(identification)에 의해 추가적으로 식별될 수 있다. 상기 인덱싱 정보는 확장성을 가진 복수의 스트리밍 데이터 센터(200) 사이의 사용자 스트리밍 요청을 제공하기 위한 스트리밍 데이터 센터(200)에 의해 공유된다. 스트리밍 데이터 센터(200)와 공유 비디오 스트림 인덱싱 데이터베이스(118)는 도 3 및 4와 관련하여 아래에 더 기술된다.
도 2a는 일 구성에 따른 비디오 스트리밍의 끊김없는 되감기 및 재생을 위한 서버측 지원을 위한 스트리밍 데이터 센터(200)을 나타내는 블럭 다이어그램이다. 스트리밍 데이터 센터(200)는 수신 스트리밍 서버(210), 하나 또는 그 이상의 스트림 핸들러(220), 스트림 아카이빙 데이터베이스(230), 도 1의 공유 데이터베이스(118)의 지역적(local) 사본인 로컬 인덱스 데이터베이스(240), 하나 또는 그 이상의 스트리밍 서버(250)를 포함한다.
도 2a에 도시된 바와 같이, 수신 서버(210)는 그것에 결합되는 복수의 스트림 핸들러(220)를 가지며, 각 스트림 핸들러(220)는 스트렘 핸들러 ID를 가진다. 각각의 수신 비디오 스트림에 대하여, 수신 서버(210)는 스트림 핸들러(220) 중 하나를 선택하고, 상기 선택된 스트림 핸들러(220)로 이 수신 비디오 스트림을 위한 모든 데이터 패킷을 향하게 한다.
스트리밍 데이터 센터(200)는 또한 클라이언트로부터의 스트리밍 요청을 처리하기 위하여 복수의 스트리밍 서버(250)를 포함한다. 스트리밍 서버(250)는 방송 비디오 스트림을 시청하기 위한 요청 및 방송 스트림을 되감기 위한 요청의 두 개의 타입의 스트리밍 요청을 처리한다. 방송 비디오 스트림에 대한 시청(시청 요청)을 위한 스트리밍 요청은 되감기를 위한 시간(timing) 정보를 포함하지 않는다. 방송 스트림을 되감기 위한 스트리밍 요청(되감기 요청)는 비디오 스트림이 방송되고 있는 중에 비디오 스트림을 되감기 위한 원하는 양/오프셋에 대한 시간 정보를 포함한다. 이와 같이, 스트리밍 서버(250)는 상기 요청에 타이밍 정보가 존재하는지 아닌지, 즉, 다른 어떤 형식적인 의미가 필요한지에 따라서, 상기 요청을 구별한다.
되감기 요청에 응답하여, 스트리밍 서버(250)는 로컬 인덱스 데이터베이스(240)에 의해 확인된 상기 요청에서의 시간 정보에 대응되는 파일 오프셋을 찾고, 스트리밍 아카이브 데이터베이스(230)에 저장된 비디오 스트림의 파일 오프셋으로부터 요청된 비디오 스트림 시작의 데이터 패킷을 읽는다.
예를 들어, 클라이언트(110)의 플레이어(120)는 방송되는 비디오 스트림의 타임라인 뷰(view)를 사용자에게 제공한다. 사용자는 마우스를 가지고 타임라인 슬라이더에서 한 위치를 선택할 수 있다. 플레이어(120)는 타임라인 슬라이더상에서 상기 선택된 위치를 대응되는 시간 정보에 맵핑시킨다. 예를 들어, 실시간 방송 비디오가 2 시간의 길이를 갖는다고 가정하면, 사용자는 타임라인 슬라이더에서 시작과 끝 사시의 중간 지점의 위치를 선택하면, 그 때 이 위치는 1:00 으로 매핑된다. 이 시간 정보는 비디오 스트리밍 요청에 포함되고, 처리를 위하여 스트리밍 서버에 전송된다.
예시적인 되감기 요청으로 http://www.hostserver.com/play?id=StreamID&timestamp 와 같은 URL 형식이 있으며, 이때 streamID 는 요청된 스트림의 stream ID 이며, timestamp 는 비디오 스트림의 시작과 관련한 시작 시간의 시간 값을 나타내는 숫자의 값이다. 예를 들어, 사용자는 "http://www.hostserver.com/lplay?id=Stream12&time=600,"과 같은 URL과 함께 비디오 스트림을 위한 요청을 발행할 수 있으며, 이 URL은 그것의 스트림 ID "Stream12"에 의해 식별된 비디오 스트림과, 600번째 초(즉, 마지막 10번째 분)까지의 비디오 스트림의 되감기를 요청한다. 시간 정보(예를 들어, 타임스탬프 값)는 비디오 스트림이 실시간 비디오 피드(예를 들어 실시간 방송)로부터인지 또는 녹화된 비디오 소스(예를 들어, 녹화된 실시간 이벤트의 재방송)로부터인지에 관계없이 사용자 되감기 요청을 나타낸다. 일 구성으로, 고속-포워딩(fast-forwarding) 요청은 지원되지 않는다.
위에서 기술된 스트리밍 요청 및 응답을 더욱 예시하기 위해, 다음의 의사 코드(pseudo-code)는 스트리밍 요청/응답을 위한 데이터를 저장하는 스트리밍 서버(250)에 의해 사용되는 데이터 구조를 나타낸다:
//video streaming request example//
Message LiveAchieveRequest {
required message<StreamID> stream;
required int64 start_time; //relative time value
}
//video streaming response example//
Message LiveAchieveResponse {
enum Status {
OK = 0;
ERROR_STREAM_NOT_EXIST = 1;
ERROR_INVALID_TIME = 2;
}
required Status status = 1;
byte_offset: 9000; //Starts part-way into the stream file
data_source <filepath: /home/storage/HD/archive_1234>;
}
방송 비디오 스트림을 시청하기 위한 시청 요청(subscribe request)은 시간 정보를 포함하지 않는다. 각 스트림 서버(250)는 복수의 스트림 핸들러(220)와 직접적으로 통신할 수 있다. 클라이언트로부터의 스트림 요청은 스트림 ID를 포함한다. 스트림 ID가 주어지면, 스트리밍 서버(250)는 스트림 ID를 위하여 로컬 인덱스 데이터베이스(240)를 확인함으로써 요청된 비디오 스트림에 대하여 어떤 스트림 핸들러(220)가 책임이 있는지를 찾고, 식별된 스트림 핸들러(220)에 가입(subscrive)하고, 비디오 스트림의 시작으로부터 요청된 비디오 스트림의 데이터 패킷을 요청한다. 도 2B는 위의 기술에 따라 스트림 핸들러로부터 직접적으로 요청된 비디오를 스트리밍하기 위한 스트리밍 데이터 센터를 나타내는 블럭 다이어그램이다.
이제부터 도 3으로 돌아가면, 일 구성으로, 스트리밍 데이터 센터(200)의 수신 스트리밍 서버(210)는 프로토콜 해석 모듈(212), 데이터 추출 모듈(214) 및 로드 밸런서(216)를 포함한다. 수신 스트리밍 서버(210)는 비디오 스트림 피드(310)으로부터 비디오 스트림을 수신하고, 모듈(212, 214, 216)을 이용하여 비디오 스트림을 처리하고, 상기 처리된 비디오 스트림 데이터(320)를 추가적인 인덱싱 및 아카이빙을 위하여 선택된 스트림 핸들러(220)로 전송한다. 수신 스트리밍 서버(210)는, 예를 들어, WOWZA® Media Server or Adobe® Flash Media Server와 같은 스트리밍 서버일 수 있다. 수신 스트리밍 서버(210)는 Real Time Streaming Protocol(RTSP)과 같은 표준 비디오 스트리밍 프로토콜이나, 플래시 플레이어와 스트리밍 서버 사이의 인터넷상에서 오디오/비디오 데이터를 스트리밍하기 위한 Adobe Systems® 사에 의해 개발된 Real Time Messaging Protocol(RTMP)과 같은 고유(proprietary) 프로토콜을 사용하여 비디오 스트림을 받아들일 수 있다.
프로토콜 해석 모듈(212)는 비디오 스트림에 사용된 스트리밍 프로토콜을 식별함으로써 비디오 스트림 피드(310)으로부터 수신된 비디오 스트림을 처리한다. 예를 들어, 수신 스트리밍 서버(210)는 RTMP 프로토콜을 사용하는 비디오 스트림을 수신하고, 플래시 플레이어로 하여금 비디오 스트림을 RTMP 프로토콜로 재생하도록 허락하는 역할을 하는 스트리밍 서버이다. 프로토콜 해석 모듈(212)는 수신된 비디오 스트림에서 RTMP 스트리밍 프로토콜을 식별하고, 하나 또는 그 이상의 스트림 핸들러(220)에게 비디오 스트림 정보의 하나로서 상기 프로토콜 정보를 전송한다.
데이터 추출 모듈(214)는 수신된 비디오 스트림으로부터 오디오/비디오 데이터를 추출하고, 상기 추출된 오디오/비디오 데이터를 오디오/비디오 데이터 패킷으로 형성하고, 추출된 오디오/비디오 데이터 패킷을 하나 또는 그 이상의 스트림 핸들러(220)에게 전송한다. 일 구성으로, 오디오/비디오 패킷은 User Datagram Protoco(UDP)를 사용하는 스트림 핸들러(220)에 전송되는 표준 네트워크 데이터 패킷이다. 다른 구성으로, 다른 인터넷 프로토콜을 이용하여 상기 수신된 비디오 스트림을 네트워크 패킷으로 추출할 수 있다.
로드 밸런서(216)는, 수신 비디오 스트림에 대해서, 스트림 핸들러(220) 중 어느 하나의 것이 로드 밸런싱 알고리즘을 이용하여 아카이빙 및 인덱싱을 위한 비디오 스트림을 수신할지를 결정한다. 일 구성으로, 로드 밸런서(216)는 각 스트림 핸들러(220)의 트래픽 부하(load)에 기반하여 비디오 스트림을 위한 복수의 스트림 핸들러(220) 사이에서 하나의 스트림 핸들러(220)를 선택한다. 로드 밸런서(216)는 수신된 비디오 스트림을 처리하기 위하여 가장 가벼운 트래픽 부하를 가지는 스트림 핸들러(200)를 선택할 수 있다. 다른 구성은 수신된 비디오 스트림을 처리하기 위한 스트림 핸들러(220)를 선택하기 위해 로드 밸런서로 하여금 구분되는(distinct) 스트림의 개수, 프로세서 이용률 또는 패킷 처리율의 단위와 같은 다른 결정 인자를 포함하도록 허용할 수 있다.
스트림 핸들러(220) 추가적인 처리를 위하여 수신 스트리밍 서버(210)로부터 전송된 비디오 스트림의 복수의 오디오/비디오 데이터 패킷을 수신한다. 도 4는 도 2a에 도시된 스트림 핸들러(220)의 블럭 다이어그램이다. 스트림 핸들러(220)는 스트림 아카이빙 모듈(222)와 요청 처리 모듈(224)를 포함한다. 스트림 아카이빙 모듈(222)는 공유 인덱스 데이터베이스(118)에 스트림 인덱싱 정보(420)를 기록하고, 스트림 아카이빙 데이터베이스(230)에 수신된 오디오/비디오 데이터 패킷을 아카이빙/저장한다. 되감기 요청에 대해, 요청 처리 모듈(224)는 되감기 요청에서의 시간 정보에 기반하여 로컬 인덱스 데이터베이스(240)로부터 파일 오프셋 정보를 검색하고, 상기 파일 오프셋 정보를 스트리밍 서버(250)에 전송한다. 비디오 스트림을 시청하기 위한 스트리밍 요청에 대해, 처리 모듈(224)은 수신 스트리밍 서버(210)로부터 수신된 요청 비디오 스트림의 데이터 패킷을 스트리밍 서버(250)에 직접적으로 전송한다.
스트림 아카이빙 모듈(222)은 비디오 스트림 및/또는 비디오 스트림 정보(예를 들어, 비디오 스트리밍 프로토콜)의 복수의 오디오/비디오 데이터 패킷을 수신하고, 상기 데이터 패킷을 스트림 아카이빙 데이터베이스(230)에 저장한다. 일 구성으로, 전제 비디오 스트림은 스트림 아카이빙 데이터베이스(230)에 하나의 아카이브된 파일로서 저장된다. 아카이브된 비디오 스트림은 스트림 ID를 통하여 스트림 아카이빙 데이터베이스(230)으로부터 검색(retrieve)될 수 있다. 주어진 비디오 스트림에 속하는 모든 데이터 패킷은 아카이빙 및 검색 목적을 위하여 같은 스트림 ID를 공유한다.
스트리밍 아카이빙 모듈(222)은 아카이브된 파일의 인덱싱 정보를 공유 인덱스 데이터베이스(118)에 기록한다. 아카이브된 비디오 스트림을 인덱싱하기 위해서, 일 구성으로, 아카이빙 모듈(222)는 비디오 스트림의 각 내부 프레임의 인덱스를 인덱스 파일에 저장한다. 상기 인덱스는 각 내부 프레임에 대한 튜플(stream_ID, file_offset, time_stamp)을 저장한다. 예를 들어, 바이트 123에 위치하고, 21,000 밀리초에서 재생을 시작하는 내부 프레임에 대해서, 내부 프레임의 인덱스는 인덱스 파일에서의 (stream12, 123, 21000)이다. 유사하게, 바이트 345에 위치하고, 24,000 밀리초에서 재생을 시작하는 같은 비디오 스트림의 다른 내부 프레임에 대해서, 인덱스는 (stream12, 345, 24000)이다. 전체 비디오 스트림의 인덱스 파일은 인덱스 리스트이며, 인덱스 리스트의 각각은 비디오 스트림의 내부 프레임에 대응된다. 인덱스는 비디오 스트림의 내부 프레임의 처리 순서에 따라 배열된다.
공유 인덱스 데이터베이스(118)에 인덱싱 정보를 기록하는 것을 빠르게 하기 위해서, 다른 하나의 구성으로, 스트림 아카이빙 모듈(222)은 비디오 스트림의 각 GOP의 인덱스를 인덱스 파일에 보관한다. 구체적으로, 스트림 아카이빙 모듈(222)은 각 GOP의 첫 번째 내부 프레임의 인덱스를 (stream_ID, file-offset, time_stamp)의 형태로 보관한다. 예를 들어, 5개의 GOP를 가지는 비디오 스트림 및 첫 번째 내부 프레임에 의해서 나타나는 각 GOP에 대해서, 비디오 스트림의 인덱스 파일이 다음의 테이블에 예시된다.
Figure 112011068773052-pct00001
비디오 스트림은 아카이빙 데이터베이스에 저장될 복수의 관련 파일을 생성할 수 있으며, 각각의 관련 파일은 비디오 스트림의 한 부분에 대응되고, 이 대, 복수의 관련 파일은 같은 스트림 ID를 공유하게 될 것이다. 비디오 스트림을 위해 생성된 복수의 파일을 관련시키기 위해서, 각 파일은 비디오 스트림의 첫 번째 데이터 패킷의 시작으로부터 계속적으로 카운트하면서, 비디오 스트림의 이 부분의 시간 오프셋을 나타내는 타임 스탬프에 의해 추가적으로 태그될 수 있다(예를 들어, 비디오 스트림에서 10 분).
비디오 스트림이 방송되고 있는 중에 사용자가 특정한 시간 지점까지 비디오 스트림을 되감기하는 것을 지원하기 위해, 비디오 스트림의 인덱싱은 아카이빙 및 검색을 위해 효율적일 필요가 있다. 스트림 아카이빙 모듈(222)는 데이터 검색을 위해서 각 비디오 스트림에 대한 인덱싱 정보를 보유한다. 일 구성으로, 스트리밍 아카이빙 모듈(222)은 저장된 비디오 파일의 헤더에 비디오 스트림에 대한 인덱싱 정보를 포함한다. 이것은 스트리밍 아카이빙 모듈(222)로 하여금 스트림 ID에 기반하는 저장된 파일에 먼저 접근(access)하고, 그 다음 이 헤더로부터 읽어, 사용자에 의해 요청된 대응되는 시간 지점에 대한 파일의 원하는 오프셋을 접근한다.
다른 구성으로, 아카이빙 모듈(222)은 아카이빙 데이터베이스(230)에 저장된 각 비디오 스트림에 대한 인덱싱 정보를 글로벌 저장장치(예를 들어, 도 1의 공유 인덱스 데이터베이스(118))에 기록한다. 공유 인덱스 데이터베이스(118)는 스트리밍 센터 식별에 의해 특정 스트리밍 데이터 센터로부터 각 인덱싱 정보를 식별한다. 스트리밍 센터에 의해 처리되는 각 비디오 스트림에 대한 프레임 레벨 인덱싱 정보는 비디오 스트림의 각 내부 프레임에 대한 인덱스 리스트이다. 인덱스는 하나의 튜플(DC_ID, stream_ID), file_offset, time_stamp)을 가질 수 있으며, 이때 "DC_ID"는 스트리밍 데이터 센터를 식별한다. 공유 인덱스 데이터베이스(118)의 인덱싱 정보는 스트리밍 데이터 센터(200)로부터 수신된 새로운 인덱싱 정보에 응답하여 주기적으로 또는 명령에 의해 업데이트된다. 각 스트리밍 데이터 센터(200)는 공유 인덱스 데이터베이스(118)에 저장된 인덱싱 정보의 사본을 저장하여 각 스트리밍 데이터 센터가 어떤 비디오 스트림이 다른 스트리밍 데이터 센터에 아카이브되었는지 알 수 있도록 한다.
공유 인덱싱 정보는 복수의 스트리밍 데이터 센터(200) 사이의 확장성 있는 비디오 스트리밍을 위하여 많은 장점을 제공한다. 공유 인덱싱 정보는 스트리밍 시스템으로 하여금 복수의 인자들에 기반하여 비디오 스트림을 효율적으로 분배할 수 있도록 한다. 예를 들어, 스트리밍 시스템은 비대중적인(즉, 적은 수의 클라이언트 요청) 비디오 스트림을 처리하도록 특정 스트리밍 데이터 센터(200)를 지정할 수 있으며, 상기 지정된 스트리밍 센터(200)에게만 오직 비대중적인 비디오 스트림을 아카이브하도록 할 수 있다. 이렇게 함으로써, 다른 스트리밍 데이터 센터는 높은 요청을 갖는 비디오 스트림을 처리하도록 그들의 계산 리소스를 충당할 수 있으며, 사용자의 요청에 응답하여 비대중적인 비디오 스트림을 어디에 인출(fetch)할지에 대한 필요한 정보를 가지고 있다. 비디오 스트림의 대중성(popularity)의 결정은 설계(design) 파라미터이다. 예를 들어, 비디오 스트림의 대중성은 사용자의 시청의 개수에 기반하여 결정될 수 있다.
복수의 스트리밍 데이터 센터(200)에 의한 공유 인덱싱 정보는 또한 스트리밍 데이터 센터(200)의 향상된 성능을 제공한다. 스트리밍 데이터 센터(200)는 다른 스트리밍 데이터 센터에서 어떤 비디오 스트림을 아카이브 해야 하는지 및 어떤 비디오 스트림이 이용 가능한지에 대한 유연성(flexibility)을 가진다. 스트리밍 데이터 센터(200)(제공 스트리밍 데이터 센터)는 지역적으로 아카이브되지 않은 비디오 스트림에 대한 클라이언트로부터의 되감기 요청을 수신하고, 상기 제공(servicing) 스트리밍 데이터 센터는 공유 인덱싱 정보의 지역적 사본으로부터 요청된 비디오 스트림을 다른 어떤 스트리밍 데이터 센터(소스 스트리밍 데이터 센터)가 처리하고 있는지를 결정한다. 소스 스트리밍 데이터 센터로부터 요청된 스트림을 제공 스트리밍 센터, 그 다음 클라이언트로 스트리밍 하는 대신에, 제공 스트리밍 데이터 센터는 지역적으로 비디오 스트림을 저장(cache)하고, 지역적 캐쉬로부터 비디오 스트림을 클라이언트로 전송한다. 이와 같이, 데이터 센터 사이의 복수의 크로스-스트리밍은 감소되며, 전체적으로 향상된 성능을 발생시킨다.
도 4를 참조하면, 요청 처리 모듈(224)는 비디오 스트리밍 서버(250)로부터 스트리밍 요청을 수신하고, 상기 스트리밍 요청을 처리하며, 요청된 비디오 스트림을 검색하며, 요청된 비디오 스트림을 비디오 스트리밍 서버에 전송한다.
도 2B의 스트리밍 서버(250)와 관련된 상기의 기술된 내용과 같이, 시청 요청은 스트리밍 서버(250)에게 클라이언트가 비디오 스트림의 처음의 시청을 요청하고 있다는 것을 나타내는 시간 정보를 가지고 있지 않다. 스트리밍 서버(250)는 어떤 스트림 핸들러(220)가 상기 요청을 처리할 것인지를 식별하기 위해 로컬 인덱스 데이터베이스(240)를 확인하고, 사익 요청을 식별된 스트림 핸들러(220)로 전달한다. 상기 식별된 스트림 핸들러의 요청 처리 모듈(224)은 수신 스트리밍 서버(210)로부터 수신된 요청 스트림의 데이터 패킷을 스트리밍 서버(250)에 계속하여 전송하는 것을 시작한다.
되감기 요청에 응답하여, 스트리밍 서버(250)는 되감기가 필요한지 여부를 결정한다. 일 구성으로, 스트리밍 서버(250)는 상기 요청으로부터 시간 정보를 추출하고, 상기 요청에서 요청된 시작 시간의 값을 확인한다. 스트리밍 서버(250)는 추가적인 처리를 위하여 처리 모듈(224)에 요청된 시작 시간 및 스트림 ID를 전송한다. 이에 따라, 처리 모듈(224)는 추출된 시간 정보에 기반하여 파일 오프셋을 계산한다. 일 구성으로, 처리 모듈(224)은 로컬 인덱스 파일을 확인함으로써 관련된 시작 시간을 대응되는 파일 오프셋에 맴핑시켜 시작 시간과 과련하여 가장 가까운 타임 스탬프 값을 찾는다. 대체적으로, 스트리밍 서버(250)는 상기 요청으로부터의 관련된 시작 시간을 현재 시계 시간과 관련된 절대적인 시작 시간으로 변환시킬 수도 있으며, 이때 처리 모듈(224)은 절대적인 시작 시간 값을 대응되는 파일 오프셋에 맵핑시킨다. 여기서, 스트리밍 서버(250)는 스트리밍 서버(250)에 의해 사용되는 현재 시계 시간에서 상대적인 시작 시간을 차감함으로써 절대적인 시간 값을 계산한다. 처리 모듈(224)은 상기 계산된 절대 시간 값에 기반하여 타임 스탬프 값을 찾기 위해 로컬 인덱스 파일을 확인한다. 스트리밍 서버(250)는 타임 스탬프에 가장 가까운 파일 오프셋의 내부 프레임을 검색하고, 내부 프레임의 데이터 패킷을 클라이언트(120)에 전송한다.
예를 들어, 스트림 핸들러(220)의 요청 처리 모듈(224)은 비디오 스트리밍 서버(250)로부터 "http://www.hostserver.com/play?id=Stream12&time=600000"의 URL로 스트리밍 요청을 수신한다. 상기 요청은 상대적인 시작 시간 정보, 즉 "시간=600000"의 정보를 포함한다. 상기 요청된 스직 시간은 600,000 밀리초의 상대적인 시작 시간 값이다(즉, 비디오 스트림의 시작으로부터 10분). 처리 모듈(224)은 로컬 인덱스 데이터베이스(240)를 확인하고, 가장 가까운 매칭 시간 값, 예를 들어 (Stream12, 900, 600000)과 함께 인덱스 기록을 찾는다. 여기서 "900" 값은 비디오 스트림의 시작과 관련하여 600,000 밀리초의 시간 값에 대응되는 내부 프레임에 대한 바이트 오프셋을 나타낸다. 대체적으로, 스트리밍 서버(250)는 상대적인 시간 값 600,000을 현재 시계 시간과 관계되는 절대적인 시간 값으로 변환시킨다. 비디오 스트림이 1,800,000 밀리초(즉, 30분) 이전에 방송되었다고 가정하면, 이때 스트리밍 서버(250)는 현재 시계 시간으로부터 되감기할 절대적인 시간은 1,200,000 밀리초(20 분)라고 결정한다. 처리 모듈(224)은 로컬 인덱스 데이터베이스(240)를 확인하고, 예를 들어 (Stream12, 900, 600000)과 같은 가장 가까운 매칭 시간 값과 함께 인덱스 레코드를 찾는다. 스트리밍 서버(250)는 아카이브된 스트림의 파일 오프셋 900에서 시작되는 내부 프레임의 데이터 패킷을 검색하고, 상기 파일 오프셋으로부터의 데이터 패킷을 클라이언트(120)로 전송하는 것을 시작한다.
다른 구성으로, 클라이언트(110)는 사용자의 요청에 의해 시간 정보를 절대적인 타임 스탬프로 변환하고, 상기 타임 스탬프를 스트림 식별과 함께 스트리밍 서버(250)로 전송한다. 처리 모듈(224)은 수신된 절대적인 타임 스탬프 값에 가장 가까운 타임 스탬프 값을 찾기 위해 로컬 인덱스를 확인한다. 처리 모듈(224)은 타임 스탬프에 가장 가까운 파일 오프셋에서 내부 프레임을 검색하고, 상기 내부 프레임의 데이터 패킷을 전송한다.
도 5는 실시간 스트림을 처리하기 위한 스트리밍 데이터 센터(200)의 동작에 관한 플로우 챠트이다. 처음으로, 스트리밍 데이터 센터(200)의 수신 스트리밍 서버(210)는 실시간 피드로부터 비디오 스트림을 수신한다(510). 수신 스트리밍 서버(210)는 프로토콜 해석 모듈(212)에 의해 비디오 스트림의 스트리밍 프로토콜을 해석하고(512), 데이터 추출 모듈(214)에 의해 비디오 스트림으로부터 오디오/비디오 데이터를 추출한다(514). 수신 스트리밍 서버(210)는 추가적으로 비디오 스트림을 처리하기 위하여 스트림 핸들러(220)를 식별하고(516), 아카이빙 및 인덱싱을 위하여 추출된 스트림 데이터를 스트림 핸들러(220)로 분배한다(518).
도 6은 클라이언트 디바이스로부터의 스트리밍 요청에 대한 서비스를 제공하는 스트리밍 데이터 센터의 동작에 관한 플로우 챠트이다. 처음으로, 스트리밍 데이터 센터(200)의 스트리밍 서버(250) 중 하나는 사용자 클라이언트 디바이스로부터의 스트리밍 요청을 수신한다(610). 스트리밍 요청은 사용자에 의해 요청된 비디오 스트림을 식별하는 적어도 하나의 스트림 ID를 포함한다. 시간 정보를 포함하지 않는 요청에 응답하여, 스트리밍 서버(250)는 로컬 인덱스 데이터베이스(240)에 대항하여 스트림 ID를 확인함으로써 요청된 비디오 스트림을 가지는 스트림 핸들러(220)를 식별하고(612), 현재 시간으로부터 요청된 스트림 시작의 데이터 패킷을 검색한다. 시간 정보를 포함하는 요청에 응답하여, 스트림 핸들러(220)는 상기 요청이 비디오 스트림을 되감기 위한 것인지를 결정한다. 만약, 요청이 되감기 요청이면, 스트림 서버(250)는 상기 요청에서 시간 정보를 추출하고(614), 처리 모듈(224)은 시간 정보에 대응되는 파일 오프셋을 계산한다(616). 스트리밍 서버(250)는 요청된 스트림을 검색하고(618), 획득된 파일 오프셋으로부터의 비디오 스트림 시작을 클라이언트(120)로 전송한다(620).
배포되는 비디오 스트리밍 시스템의 전형적인 구성은 도 1에 도시된 바와 같이 복수의 스트리밍 데이터 센터를 포함할 수 있다. 비디오 스트림이 방송되고 있는 중에 비디오 스트림의 끊김없는 되감기를 위한 서버 측 지원 및 복수의 스트리밍 데이터 센터(200) 사이의 확장성 있는 시스템 성능이 도 6에 예시되어 있다. 도 7은 복수의 스트리밍 데이터 센터(200) 사이의 비디오 스트리밍 요청을 제공하는 방법에 관한 플로우 챠트이며, 이렇게 하여 향상된 확장성을 제공한다. 처음으로, 데이터 센터 디스패쳐(114)는 클라이언트로부터 스트리밍 요청을 수신한다(114). 디스패쳐(114)는 가용한 스트리밍 데이터 센터(200)의 트래픽 부하와 같은 하나 또는 그 이상의 결정 인자에 기반하여 스트리밍 데이터 센터(200) 중의 하나에 상기 요청을 보낸다. 선택된 스트리밍 데이터 센터(200)는 상기 요청의 스트림 ID에 기반하여 로컬 인덱스 데이터베이스를 확인한다. 선택된 데이터 센터(230)의 로컬 아카이브 데이터베이스(230)에서 가용한 요청 데이터에 응답하여, 스트리밍 데이터 센터(200)는 도 2 내지 도 4에 도시된 바와 같이 스트리밍 요청을 처리한다(720). 지역적으로 이용 가능하지 않는 요청된 데이터에 응답하여, 스트리밍 데이터 센터(200)는 모든 스트리밍 데이터 센터에 의해 공유되는 글로벌 인덱싱 파일의 사본을 보유하는 로컬 인덱스 데이터베이스(240)를 확인한다. 글로벌 인덱싱 파일에 기반하여, 스트리밍 데이터 센터(200)는 어떤 다른 스트리밍 데이터 센터(200)가 요청된 스트림을 가지고 있는지 식별한다(716). 스트리밍 요청이 되감기 요청인 경우, 스트리밍 데이터 센터(200)는 요청된 스트림의 사본을 획득하고, 로컬 캐시에 저장한다(718). 스트리밍 데이터 센터(200)는 스트리밍 요청을 처리하는 것을 계속한다(720). 상기 스트림 요청의 처리는 스트림 핸들러를 식별하고(612), 되감기 시간 조건을 추출하고(614), 아카이브 파일 오프셋을 계산하고(616), 요청된 비디오 스트림을 스트리밍(618)하는 것과 같은 도 6에 도시된 처리 단계들을 포함한다. 스트리밍 요청이 시청 요청인 경우, 스트리밍 데이터 센터(200)는 상기 요청을 식별된 스트리밍 데이터 센터로 재전송한다. 식별된 스트리밍 데이터 센터는 그것의 로컬 인덱스 데이터베이스(204)를 확인하여 요청된 스트림의 데이터 패킷을 처리할 스트림 핸들러(220)을 찾고, 식별된 스트림 핸들러(220)로부터 요청된 스트림의 데이터 패킷을 전송한다.
위에서 기술된 내용은 바람직한 구성의 동작을 예시하도록 포함된 것이며, 본 발명의 범위를 이에 한정하는 것을 의미하는 것은 아니다. 본 발명의 범위는 뒤따르는 청구항에 의해서만 오직 한정된다. 위의 논의로부터, 많은 변형이 본 발명의 정신 및 범위에 한정되는 관련 기술 분야의 기술자에게 자명할 수 있다.
본 발명은 하나의 가능한 구성과 관련하여 특정한 세부 사항을 기술하였다. 해당 기술 분야의 기술자는 본 발명아 다른 구성으로 실행될 수 있음을 인식할 수 있다. 첫째, 구성요소의 특정한 이름, 용어의 대문자화, 특성, 데이터 구조, 또는 어떤 다른 프로그래밍 또는 구조적 측면은 의무적인 것이거나 중요한 것은 아니며, 본 발명 또는 그것의 특징을 구현하는 메커니즘은 다른 이름, 형식, 또는 프로토콜을 가질 수 있다. 더욱이, 시스템은 기술된 것처럼, 하드웨어와 소프트웨어의 결합 또는 전체적으로 하드웨어의 요소로 구현될 수 있다. 또한, 여기에서 기술된 다양한 시스템 구성 요소들 사이의 기능의 특정한 구분은 단순히 예시적인 것이며, 의무적인 것은 아니며; 하나의 시스템 구성 요소에 의해 수행되는 기능은 복수의 구성요소에 의해 수행될 수도 있으며, 복수의 구성 요소에 의해 수행되는 기능은 하나의 구성 요소에 의해 대신하여 수행될 수 있다.
위의 기술의 특정 부분은 본 발명의 특징을 알고리즘 용어 및 정보의 동작의 심벌 표현으로 표시하고 있다. 이러한 알고리즘적 기술 및 표현은 데이터 처리를 행하는 해당 기술 분야의 통상의 기술자에게 그들의 작업의 주제를 가장 효과적으로 전달하는 수단이다. 기능적으로 또는 논리적으로 기술되었지만, 이러한 동작은 컴퓨터 프로그램에 의해 구현되도록 이해될 수 있다. 더욱이, 모듈로서 또는 기능적인 이름에 의해 동작의 이러한 배열을 언급하는 것은 일반론의 손실 없이 종종 편리하다고 증명되어 왔다.
위의 논의에서 명백하거나, 구체적으로 기술되지 않은 경우에, 기술된 내용에서 "처리" 또는 "컴퓨팅(computing)" 또는 "계산(calculating)" 또는 "결정" 또는 "표시" 또는 그와 유사한 것은 컴퓨터 시스템 메모리 또는 레지스터 또는 다른 정보 저장 장치, 전송 장치 또는 디스플레이 장치 내의 물리적(전자적) 양으로 표현되는 데이터를 조작하고 변형하는 컴퓨터 시스템 또는 유사한 전자 연산(computing) 디바이스의 동작 및 처리에 관련된다.
본 발명의 특정 측면은 알고리즘의 형식으로 여기에서 기술된 단계 및 명령을 포함한다. 본 발명의 처리 단계 및 명령은 소프트웨어, 펌웨어 또는 하드웨어로 구체화될 수 있으며, 소프트웨어로 구체화된 경우, 존재(reside on)하도록 다운로드될 수 있으며, 실시간 네트워크 동작 시스템에 의해 사용되는 다른 플랫폼에 의해 동작될 수 있다.
본 발명은 또한 여기에서의 동작을 수행하기 위한 장치와 관련된다. 이 장치는 특별하게 요청된 목적을 위해 구성되거나, 컴퓨터에 의해 접근될 수 있는 컴퓨터 판독 가능한 매체에 저장된 컴퓨터 프로그램에 의해 선택적으로 활성화되거나 재구성되는 일반적 목적의 컴퓨터를 포함할 수 있다. 이러한 컴퓨터 프로그램은 프롤피 디스크, 광 디스크, CD-ROMs, 자기-광 디스크, 롬(ROMs), 램(RAMs), EPROMs, EEPROMs, 자기 또는 광 카드, 에이직(ASICs), 또는 전자적인 명령을 저장하기에 적합한 다른 어떤 타입의 매체와 같은, 그러나 이에 한정되지 않는다. 컴퓨터 판독 가능한 매체에 저장될 수 있으며, 각각은 컴퓨터 시스템 버스에 결합된다. 더욱이, 본 명세서에서 언급되는 컴퓨터는 하나의 프로세서 또는 향상된 연산 능력을 위하여 복수의 프로세서 설계를 채택하는 구조일 수 있다.
여기에서의 알고리즘 및 동작은 내재적으로 어떤 특정한 컴퓨터 또는 다른 장치에 관련되어 있지 않다. 여기에서 시사하는 내용에 따라서 다양한 일반-목적의 시스템이 프로그램과 함께 사용될 수 있으며, 또는 원하는 방법 단계를 수행하기 위해 더욱더 특수한 장치를 구성하는 것이 편리할 수도 있다. 이러한 다양한 시스템에 대한 원하는 구조는 동등한 변화에 따라 해당 기술분야의 기술자에게 명백할 수 있다. 또한, 본 발명은 어떤 특정한 프로그래밍 언어을 참조하여 기술되지 않았다. 여기에서 기술된 본 발명의 기술적 사상을 구현하기 위해서 다양한 프로그래밍 언어가 사용될 수 있으며, 본 발명의 실시 가능한 공개 및 최적의 모드를 위하여 특정 언어를 참조하여 제공하였다.
본 발명은 많은 토폴로지 상의 넓고 다양한 컴퓨터 네트워크 시스템에 매우 적합하다. 이 분야 내에서, 큰 네트워크의 구성 및 운영은 저장 장치 및 컴퓨터를 포함하며, 이때, 컴퓨터는 인터넷과 같은 네트워크 상에서 다른 컴퓨터 및 저장 장치에 통신적으로 결합한다.
마지막으로, 본 명세서에서 사용된 언어는 가독성 및 설명의 목적으로 선택되었으며, 발명의 주제를 정의(delineate)하거나 한정짓기 위해서 선택된 것이 아님을 알아야 한다. 따라서, 본 발명의 공개는 예시적인 것이고, 한정적인 것은 아니며, 본 발명의 범위는 다음의 청구항에서 개시된다.

Claims (50)

  1. 삭제
  2. 삭제
  3. 삭제
  4. 삭제
  5. 삭제
  6. 삭제
  7. 삭제
  8. 삭제
  9. 삭제
  10. 삭제
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
  33. 삭제
  34. 삭제
  35. 삭제
  36. 삭제
  37. 삭제
  38. 클라이언트로부터 스트림 ID에 의해 식별된 방송 비디오 스트림에 대한 요청을 수신하는 단계;
    상기 요청을 서비스하기 위해서 복수의 분배 원칙에 기반하여, 비디오 스트림들, 상기 비디오 스트림들의 로컬 인덱싱 정보 및 복수의 스트리밍 데이터 센터에 의해 공유되는 글로벌 인덱싱 정보의 사본을 저장하기 위한 로컬 저장 시스템을 갖는, 상기 복수의 스트리밍 데이터 센터 중 하나를 선택하는 단계;
    상기 선택된 스트리밍 데이터 센터와 관련된 상기 로컬 저장 시스템 내에 상기 요청된 방송 비디오 스트림을 갖는 상기 선택된 스트리밍 데이터 센터에 응답하여:
    상기 요청된 방송 비디오 스트림을 상기 로컬 저장 시스템으로부터 상기 클라이언트에게 스트리밍하는 단계; 및
    상기 요청된 비디오 스트림의 상기 인덱싱 정보를 글로벌 저장 시스템에 저장하는 단계;
    상기 선택된 스트리밍 데이터 센터의 상기 로컬 저장 시스템 내에 상기 비디오 스트림을 갖지 않는 상기 선택된 스트리밍 데이터 센터에 응답하여:
    상기 선택된 스트리밍 센터의 상기 로컬 저장 시스템에 저장된 상기 인덱싱 정보에 적어도 기반하여, 상기 복수의 스트리밍 데이터 센터 중 어떤 스트리밍 데이터 센터가 상기 요청된 비디오 스트림을 갖는지 결정하는 단계;
    상기 결정된 스트리밍 데이터 센터로부터 상기 요청된 비디오 스트림을 획득하고, 상기 요청된 비디오 스트림을 상기 선택된 스트리밍 데이터 센터의 상기 로컬 저장 시스템에 저장하는 단계; 및
    상기 선택된 스트리밍 데이터 센터로부터 상기 클라이언트에게 상기 요청된 비디오 스트림을 스트리밍하는 단계를 포함하는 것을 특징으로 하는, 복수의 스트리밍 데이터 센터로부터 방송 비디오 스트림을 스트리밍하는 방법.
  39. 제38항에 있어서,
    상기 복수의 분배 원칙은 각각의 스트리밍 데이터 센터의 트래픽 부하를 적어도 포함하는 것을 특징으로 하는, 복수의 스트리밍 데이터 센터로부터 방송 비디오 스트림을 스트리밍하는 방법.
  40. 제38항에 있어서,
    상기 복수의 분배 원칙은 상기 요청된 비디오 스트림의 대중성을 포함하고, 비디오 스트림의 상기 대중성은 상기 비디오 스크림을 시청하는 사용자들의 수에 기반하여 결정되는 것을 특징으로 하는, 복수의 스트리밍 데이터 센터로부터 방송 비디오 스트림을 스트리밍하는 방법.
  41. 제38항에 있어서,
    상기 글로벌 저장 시스템에 저장된 상기 인덱싱 정보를 이용하여 상기 복수의 스트리밍 데이터 센터의 스트리밍 데이터 센터의 로컬 저장 시스템에 저장된 상기 인덱싱 정보를 업데이트하는 단계를 더 포함하는 것을 특징으로 하는, 복수의 스트리밍 데이터 센터로부터 방송 비디오 스트림을 스트리밍하는 방법.
  42. 제38항에 있어서,
    복수의 비대중적인 비디오 스트림들을 저장하기 위해 상기 복수의 스트리밍 데이터 센터로부터 스트리밍 데이터 센터를 선택하는 단계를 더 포함하고,
    상기 비대중적인 비디오 스트림은 문턱 값 이하의 시청자 수를 갖는 것을 특징으로 하는, 복수의 스트리밍 데이터 센터로부터 방송 비디오 스트림을 스트리밍하는 방법.
  43. 제38항에 있어서,
    상기 글로벌 인덱싱 정보는,
    상기 복수의 스트리밍 데이터 센터를 식별하는 인덱싱 정보를 포함하고,
    스트리밍 데이터 센터에 의해 서비스되는 비디오 스트림에 대한 인덱싱 정보는 상기 비디오 스트림의 내부 프레임에 대한 인덱스들의 리스트를 포함하는 것을 특징으로 하는, 복수의 스트리밍 데이터 센터로부터 방송 비디오 스트림을 스트리밍하는 방법.
  44. 제38항에 있어서,
    상기 스트리밍 데이터 센터에 의해 서비스되는 상기 비디오 스트림에 대한 상기 인덱싱 정보는 상기 비디오 스트림의 ID, 파일 오프셋 및 상기 비디오 스트림의 타임 스탬프 중 적어도 하나를 포함하는 것을 특징으로 하는, 복수의 스트리밍 데이터 센터로부터 방송 비디오 스트림을 스트리밍하는 방법.
  45. 제44항에 있어서,
    상기 파일 오프셋은 내부 프레임이 상기 비디오 스트림 내에서 어디에 위치하는지를 나타내고, 상기 타임 스탬프는 상기 내부 프레임이 상기 비디오 스트림 내에서 언제 재생을 시작하는지를 나타내는 것을 특징으로 하는, 복수의 스트리밍 데이터 센터로부터 방송 비디오 스트림을 스트리밍하는 방법.
  46. 제38항에 있어서,
    스트리밍 데이터 센터로부터 로컬 인덱싱 정보를 수신할 때, 상기 글로벌 인덱싱 정보를 업데이트하는 단계를 더 포함하는 것을 특징으로 하는, 복수의 스트리밍 데이터 센터로부터 방송 비디오 스트림을 스트리밍하는 방법.
  47. 제38항에 있어서,
    상기 요청된 비디오 스트림을 스트리밍하는 단계는,
    상기 요청 내의 시간 정보에 대응되는 상기 요청된 비디오 스트림 내로의 파일 오프셋을 결정하는 단계를 포함하고,
    상기 파일 오프셋은 상기 요청된 비디오 스트림에 대한 시간 정보와 상기 비디오 스트림 내로의 파일 오프셋을 연관시키는 인덱스로부터 결정되는 것을 특징으로 하는, 복수의 스트리밍 데이터 센터로부터 방송 비디오 스트림을 스트리밍하는 방법.
  48. 제47항에 있어서,
    상기 요청 내의 상기 시간 정보에 대응되는 상기 파일 오프셋을 결정하는 단계는 상기 시간 정보 내의 시간 값에 가장 가까운 타임 스탬프를 갖는 인덱스를 선택하는 단계를 더 포함하는 것을 특징으로 하는, 복수의 스트리밍 데이터 센터로부터 방송 비디오 스트림을 스트리밍하는 방법.
  49. 제38항 내지 제48항 중 어느 한 항에 기재된 방법을 수행하도록 컴퓨터를 제어하기 위한 실행가능한 컴퓨터 프로그램 명령들을 저장하는 비-일시적인 컴퓨터-판독가능한 저장 매체.
  50. 프로세서; 및
    제38항 내지 제48항 중 어느 한 항에 기재된 방법을 수행하도록 상기 프로세서를 제어하기 위한 컴퓨터 프로그램 명령들을 포함하는 프로세서-실행가능한 프로그램 명령들을 저장하는 컴퓨터-판독가능한 저장 매체를 포함하는, 복수의 스트리밍 데이터 센터로부터 방송 비디오 스트림을 스트리밍하는 컴퓨터 시스템.

KR1020117020525A 2009-02-04 2010-02-04 비디오 스트리밍의 끊김없는 되감기 및 재생을 위한 서버측 지원 KR101410621B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/365,722 2009-02-04
US12/365,722 US9538142B2 (en) 2009-02-04 2009-02-04 Server-side support for seamless rewind and playback of video streaming
PCT/US2010/023140 WO2010091143A1 (en) 2009-02-04 2010-02-04 Server-side support for seamless rewind and playback of video streaming

Publications (2)

Publication Number Publication Date
KR20110116204A KR20110116204A (ko) 2011-10-25
KR101410621B1 true KR101410621B1 (ko) 2014-06-23

Family

ID=42397792

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117020525A KR101410621B1 (ko) 2009-02-04 2010-02-04 비디오 스트리밍의 끊김없는 되감기 및 재생을 위한 서버측 지원

Country Status (8)

Country Link
US (1) US9538142B2 (ko)
EP (1) EP2394435B1 (ko)
JP (1) JP5666477B2 (ko)
KR (1) KR101410621B1 (ko)
CN (2) CN107071511B (ko)
AU (1) AU2010210639B2 (ko)
CA (1) CA2751404C (ko)
WO (1) WO2010091143A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190020105A (ko) * 2016-06-20 2019-02-27 알리바바 그룹 홀딩 리미티드 스트리밍 데이터의 분배 처리 방법 및 디바이스

Families Citing this family (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10057543B2 (en) * 2008-10-31 2018-08-21 Arris Enterprises Llc Digital video recorder having live-off-disk buffer for receiving missing portions of buffered events
US8593570B2 (en) 2008-11-07 2013-11-26 Looxcie, Inc. Video recording camera headset
US20100269147A1 (en) 2009-04-15 2010-10-21 Echostar Technologies Llc Video stream index generation at a video content transmitter
US20200053409A1 (en) * 2009-12-18 2020-02-13 Crossbar Media Group, Inc Systems and Methods for Automated Extraction of Closed Captions in Real Time or Near Real-Time and Tagging of Streaming Data for Advertisements
US9510029B2 (en) * 2010-02-11 2016-11-29 Echostar Advanced Technologies L.L.C. Systems and methods to provide trick play during streaming playback
US9253548B2 (en) 2010-05-27 2016-02-02 Adobe Systems Incorporated Optimizing caches for media streaming
US9485546B2 (en) 2010-06-29 2016-11-01 Qualcomm Incorporated Signaling video samples for trick mode video representations
JP5628422B2 (ja) * 2010-06-29 2014-11-19 クゥアルコム・インコーポレイテッドQualcomm Incorporated トリックモードビデオ表現のためのビデオサンプルを信号伝達すること
US9185439B2 (en) 2010-07-15 2015-11-10 Qualcomm Incorporated Signaling data for multiplexing video components
US9215486B2 (en) * 2010-08-13 2015-12-15 Simon Fraser University System and method for multiplexing of variable bit-rate video streams in mobile video systems
KR101182840B1 (ko) * 2010-11-03 2012-09-14 한국전자통신연구원 복합 상황 정보를 이용한 스마트 스트리밍 서비스 제공 장치 및 방법
US9252897B2 (en) * 2010-11-10 2016-02-02 Verizon Patent And Licensing Inc. Multi-feed event viewing
US20120303797A1 (en) * 2011-05-27 2012-11-29 Saroop Mathur Scalable audiovisual streaming method and apparatus
US8737803B2 (en) 2011-05-27 2014-05-27 Looxcie, Inc. Method and apparatus for storing and streaming audiovisual content
US20130212162A1 (en) * 2012-01-12 2013-08-15 Ciinow, Inc. Control structure for content delivery and management
WO2014112975A1 (en) * 2013-01-15 2014-07-24 Hewlett-Packard Development Company, L.P. Vertically-tiered client-server architecture
FR3001353A1 (fr) * 2013-01-24 2014-07-25 Tdf Procede et dispositif de fourniture d’un contenu multimedia, equipement source de diffusion, programme d’ordinateur et medium de stockage correspondants.
CN103067696A (zh) * 2013-01-31 2013-04-24 东方网力科技股份有限公司 面向视频监控的流媒体缓存方法、装置、控制器和系统
CN104010160B (zh) * 2013-02-25 2017-10-13 杭州海康威视系统技术有限公司 视频监控系统的干线管理方法及其装置
CN104038471B (zh) * 2013-03-08 2017-08-11 中国移动通信集团浙江有限公司 一种在互联网中管理idc资源的方法和运营商网络
US9864405B2 (en) * 2013-03-15 2018-01-09 Videri Inc. Smart frame for a mobile display device
CN103220587B (zh) * 2013-03-22 2016-12-28 深圳市同洲电子股份有限公司 一种获取时移内容的方法及装置
FR3005386B1 (fr) * 2013-05-02 2016-10-14 Tdf Procede et dispositif de fourniture d’une partie deja diffusee d’un flux multimedia, terminal utilisateur, programme d’ordinateur et medium de stockage correspondants
US10015222B2 (en) 2013-09-26 2018-07-03 Arris Canada, Inc. Systems and methods for selective retrieval of adaptive bitrate streaming media
US20150156236A1 (en) * 2013-12-02 2015-06-04 International Business Machines Corporation Synchronize Tape Delay and Social Networking Experience
US9584577B2 (en) * 2014-04-03 2017-02-28 Cisco Technology, Inc. Method for enabling use of HLS as a common intermediate format
CN105224546B (zh) * 2014-06-04 2020-10-30 创新先进技术有限公司 数据存储和查询方法及设备
US10057618B2 (en) 2014-06-06 2018-08-21 Microsoft Technology Licensing, Llc System for filtering media manifests using manifest attributes
US20160092037A1 (en) * 2014-09-25 2016-03-31 Osix Corporation Computer-Implemented Methods, Computer Readable Media, And Systems For Distributed Processing
CN105592318B (zh) * 2014-10-21 2020-05-19 中兴通讯股份有限公司 一种实现hls频道回看业务的系统、设备和方法
CA2969721A1 (en) * 2014-12-03 2016-06-09 Fox Broadcasting Company Location agnostic media control room and broadcasting facility
EP3289766B1 (en) * 2015-04-29 2022-06-22 MS45 Srl A method and system for transmitting on demand videos of fitness sessions on fixed and/or mobile electronic devices
WO2016198112A1 (en) * 2015-06-11 2016-12-15 Telefonaktiebolaget Lm Ericsson (Publ) Nodes and methods for handling packet flows
CN106713940B (zh) * 2015-08-04 2019-12-20 杭州海康威视数字技术股份有限公司 视频流的存储方法、读取方法及装置
KR102209782B1 (ko) * 2015-11-02 2021-01-28 에스케이텔레콤 주식회사 스트리밍 서비스 제공 방법 및 이를 위한 장치
US9990349B2 (en) 2015-11-02 2018-06-05 Microsoft Technology Licensing, Llc Streaming data associated with cells in spreadsheets
US10599764B2 (en) 2015-11-02 2020-03-24 Microsoft Technology Licensing, Llc Operations on images associated with cells in spreadsheets
KR101998303B1 (ko) 2015-12-08 2019-10-01 네이버 주식회사 타임머신 기능을 위한 슬라이딩 윈도우 관리 방법 및 시스템
CN105657443A (zh) * 2015-12-30 2016-06-08 深圳市云宙多媒体技术有限公司 一种直播时移播放方法和系统
US10841363B2 (en) * 2017-01-09 2020-11-17 International Business Machines Corporation Streaming API subscription without loss of events
US10743087B2 (en) * 2017-06-21 2020-08-11 Z5X Global FZ-LLC Smart furniture content interaction system and method
US10101804B1 (en) * 2017-06-21 2018-10-16 Z5X Global FZ-LLC Content interaction system and method
JP6907104B2 (ja) * 2017-12-07 2021-07-21 キヤノン株式会社 映像配信装置、制御方法及びプログラム
US11838588B2 (en) * 2017-12-29 2023-12-05 Comcast Cable Communications, Llc Performing trick plays of segmented video content
US10805651B2 (en) 2018-10-26 2020-10-13 International Business Machines Corporation Adaptive synchronization with live media stream
US10853308B1 (en) * 2018-11-19 2020-12-01 Xilinx, Inc. Method and apparatus for direct memory access transfers
CN109862398A (zh) * 2019-03-29 2019-06-07 北京奇艺世纪科技有限公司 多媒体数据传输方法、装置及系统
CN111866549B (zh) 2019-04-29 2023-03-24 腾讯科技(深圳)有限公司 一种视频处理方法及装置、终端、存储介质
US11388060B1 (en) * 2019-11-26 2022-07-12 Xilinx, Inc. Systems and methods for discovery and configuration of a network device
CN112929677B (zh) * 2019-12-06 2023-02-28 北京金山云网络技术有限公司 直播视频的回看方法、装置和服务器
US11317035B1 (en) * 2020-04-29 2022-04-26 Action Streamer, LLC Method and system for synchronized playback of multiple video streams over a computer network
CN111726650B (zh) * 2020-06-30 2022-10-18 广州繁星互娱信息科技有限公司 视频直播方法及装置、计算机存储介质
CN112218165B (zh) * 2020-10-12 2023-07-14 腾讯科技(深圳)有限公司 视频播放的控制方法、装置、电子设备及存储介质
CN114979763A (zh) * 2022-04-13 2022-08-30 深圳市有为信息技术发展有限公司 视频回放时的播放控制方法和装置、视频回放系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003235012A (ja) * 2001-08-21 2003-08-22 Canal & Technologies Sa ファイル及びコンテンツ管理
JP2008236321A (ja) * 2007-03-20 2008-10-02 Toshiba Corp コンテンツ配信システム、このコンテンツ配信システムで使用されるサーバ装置及び受信装置

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0956702A1 (en) 1997-01-30 1999-11-17 Microsoft Corporation Vcr-like functions rendering video on demand
US6128653A (en) * 1997-03-17 2000-10-03 Microsoft Corporation Method and apparatus for communication media commands and media data using the HTTP protocol
JPH11298858A (ja) 1998-04-14 1999-10-29 Oki Electric Ind Co Ltd ビデオサーバシステム
US20010014975A1 (en) 1999-04-16 2001-08-16 Seachange International , Inc. Transmitting viewable data objects
AU2001236571A1 (en) * 2000-01-28 2001-08-07 Williams Communications, Llc Method of utilizing a single uniform resource locator for resources with multiple formats
US20020091762A1 (en) 2000-03-07 2002-07-11 Yahoo! Inc. Information display system and methods
JP2002199344A (ja) 2000-12-26 2002-07-12 Toshiba Corp マルチメディア情報送信サーバ装置
JP2002330379A (ja) 2001-05-02 2002-11-15 Sony Corp コンテンツ提供装置
JP2003018568A (ja) 2001-06-29 2003-01-17 Matsushita Electric Ind Co Ltd 再生システム、サーバ装置及び再生装置
EP1286349A1 (en) 2001-08-21 2003-02-26 Canal+ Technologies Société Anonyme File and content management
JP3979432B2 (ja) * 2003-08-08 2007-09-19 オンキヨー株式会社 ネットワークavシステム
US20060005224A1 (en) * 2004-06-30 2006-01-05 John Dunning Technique for cooperative distribution of video content
US20060090186A1 (en) 2004-10-21 2006-04-27 Santangelo Bryan D Programming content capturing and processing system and method
JP4312246B2 (ja) 2005-03-18 2009-08-12 富士通株式会社 動画像データ編集装置、動画像データ再生装置、動画像データ編集方法及び動画像データ再生方法
US7634076B2 (en) 2005-08-03 2009-12-15 Indicium Media, Llc Network, system and method for distributing digital media
KR100823732B1 (ko) * 2005-12-08 2008-04-21 한국전자통신연구원 스트리밍 서비스를 위한 컨텐츠 제공 시스템 및 그 방법
US8214516B2 (en) 2006-01-06 2012-07-03 Google Inc. Dynamic media serving infrastructure
CN100505696C (zh) 2006-07-19 2009-06-24 华为技术有限公司 在媒体分发网络中实现视频直播的系统、方法和客户端
US20100198977A1 (en) * 2006-09-27 2010-08-05 Adobe Systems Incorporated Automatic live stream trees
CN100544439C (zh) * 2006-11-21 2009-09-23 华为技术有限公司 一种支持多种编码格式的媒体数据的方法及系统
US20080168516A1 (en) * 2007-01-08 2008-07-10 Christopher Lance Flick Facilitating Random Access In Streaming Content
CN101227590B (zh) * 2007-01-19 2013-03-06 北京风行在线技术有限公司 基于p2p协议的媒体文件点播控制方法及装置
CN101202900B (zh) 2007-03-12 2010-09-29 深圳市同洲电子股份有限公司 一种数字电视直播与回放的切换方法及视频服务器
JP2008236390A (ja) 2007-03-20 2008-10-02 Asv:Kk 映像再生システムにおける映像シーク制御方式

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003235012A (ja) * 2001-08-21 2003-08-22 Canal & Technologies Sa ファイル及びコンテンツ管理
JP2008236321A (ja) * 2007-03-20 2008-10-02 Toshiba Corp コンテンツ配信システム、このコンテンツ配信システムで使用されるサーバ装置及び受信装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190020105A (ko) * 2016-06-20 2019-02-27 알리바바 그룹 홀딩 리미티드 스트리밍 데이터의 분배 처리 방법 및 디바이스
KR102099544B1 (ko) * 2016-06-20 2020-05-18 알리바바 그룹 홀딩 리미티드 스트리밍 데이터의 분배 처리 방법 및 디바이스
US11036562B2 (en) 2016-06-20 2021-06-15 Advanced New Technologies Co., Ltd. Streaming data distributed processing method and device

Also Published As

Publication number Publication date
CA2751404A1 (en) 2010-08-12
CN107071511A (zh) 2017-08-18
EP2394435A1 (en) 2011-12-14
KR20110116204A (ko) 2011-10-25
AU2010210639A1 (en) 2011-08-18
US9538142B2 (en) 2017-01-03
CN107071511B (zh) 2020-02-14
EP2394435A4 (en) 2013-11-13
CN102356644A (zh) 2012-02-15
BRPI1008837A2 (pt) 2016-03-15
CA2751404C (en) 2017-01-03
US20100195974A1 (en) 2010-08-05
AU2010210639B2 (en) 2015-03-26
WO2010091143A1 (en) 2010-08-12
JP2012517160A (ja) 2012-07-26
JP5666477B2 (ja) 2015-02-12
EP2394435B1 (en) 2019-11-27

Similar Documents

Publication Publication Date Title
KR101410621B1 (ko) 비디오 스트리밍의 끊김없는 되감기 및 재생을 위한 서버측 지원
US8489760B2 (en) Media file storage format and adaptive delivery system
CA2965484C (en) Adaptive bitrate streaming latency reduction
CN106878315B (zh) 可变速率媒体传送系统
US8145782B2 (en) Dynamic chunking for media streaming
US9088804B2 (en) On-demand selection of transcoding formats for multimedia broadcast streams
US9253548B2 (en) Optimizing caches for media streaming
US9106934B2 (en) Distribution of adaptive bit rate live streaming video via hyper-text transfer protocol
US9832492B2 (en) Distribution of adaptive bit rate video streaming via hyper-text transfer protocol
US20120005313A1 (en) Dynamic indexing for ad insertion in media streaming
JP2015172938A (ja) 情報処理装置、および情報処理方法、プログラム、並びに記録媒体
EP2135100B1 (en) Converting video data into video streams
CN113141522B (zh) 资源传输方法、装置、计算机设备及存储介质
US20210021655A1 (en) System and method for streaming music on mobile devices
US20150188974A1 (en) Method and a system for smooth streaming of media content in a distributed content delivery network
US8954540B2 (en) Dynamic audio track selection for media streaming
WO2012046090A1 (en) System and method for error detection and data replacement in broadcast services
US11496803B2 (en) Video stream switching service
BRPI1008837B1 (pt) Método para permitir a rebobinagem de um fluxo de vídeo transmitido recebido por um cliente e meio de armazenamento não transitório legível por computador contendo o mesmo

Legal Events

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

Payment date: 20170609

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190611

Year of fee payment: 6