KR101722673B1 - 생중계에서 타임머신 기능을 제공하는 방법 및 시스템 - Google Patents

생중계에서 타임머신 기능을 제공하는 방법 및 시스템 Download PDF

Info

Publication number
KR101722673B1
KR101722673B1 KR1020150174153A KR20150174153A KR101722673B1 KR 101722673 B1 KR101722673 B1 KR 101722673B1 KR 1020150174153 A KR1020150174153 A KR 1020150174153A KR 20150174153 A KR20150174153 A KR 20150174153A KR 101722673 B1 KR101722673 B1 KR 101722673B1
Authority
KR
South Korea
Prior art keywords
player
time machine
session
time
streaming client
Prior art date
Application number
KR1020150174153A
Other languages
English (en)
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 KR1020150174153A priority Critical patent/KR101722673B1/ko
Priority to JP2016220279A priority patent/JP6490654B2/ja
Priority to US15/353,990 priority patent/US10602206B2/en
Application granted granted Critical
Publication of KR101722673B1 publication Critical patent/KR101722673B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • 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
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/1066Session management
    • H04L65/1083In-session procedures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/61Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
    • H04L65/611Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for multicast or broadcast
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/65Network streaming protocols, e.g. real-time transport protocol [RTP] or real-time control protocol [RTCP]
    • 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/21Server components or server architectures
    • H04N21/218Source of audio or video content, e.g. local disk arrays
    • H04N21/2187Live feed
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Databases & Information Systems (AREA)
  • Business, Economics & Management (AREA)
  • General Business, Economics & Management (AREA)
  • Information Transfer Between Computers (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

생중계에서 타임머신 기능을 제공하는 방법 및 시스템이 개시된다. 전자 기기를 구현하는 컴퓨터와 결합하여 타임머신 기능 제공 방법을 실행시키기 위해 매체에 저장된 컴퓨터 프로그램이 제공될 수 있다. 여기서, 상기 타임머신 기능 제공 방법은, 라이브 스트리밍 서비스를 제공하기 위해 상기 전자 기기에 설치된 스트리밍 클라이언트에서, 상기 전자 기기에 설치된 플레이어와의 스트리밍 세션을 설정하는 단계, 상기 스트리밍 클라이언트에서 네트워크를 통해 수신된 라이브 스트림 데이터를 상기 스트리밍 세션을 통해 순차적으로 상기 플레이어로 전송하는 단계, 상기 스트리밍 클라이언트에서 상기 플레이어와의 타임머신 제어 세션을 설정하는 단계, 상기 스트리밍 클라이언트에서 상기 타임머신 제어 세션을 통해 상기 플레이어로부터 타임머신 제어 요청을 수신하는 단계 및 상기 스트리밍 클라이언트에서 상기 타임머신 제어 요청 중 재생 위치 정보를 포함하는 타임머신 제어 요청에 대응하는 채널의 라이브 스트림 데이터를 상기 재생 위치 정보를 통해 특정되는 재생 위치부터 순차적으로 상기 스트리밍 세션을 통해 상기 플레이어로 전송하는 단계를 포함할 수 있다.

Description

생중계에서 타임머신 기능을 제공하는 방법 및 시스템{METHOD AND SYSTEM FOR PROVIDING TIME MACHINE FUNCTION IN LIVE BROADCAST}
아래의 설명은 생중계에서 타임머신 기능을 제공하는 방법 및 시스템에 관한 것이다.
라이브로 제공되는 영상 컨텐츠(일례로, 방송 프로그램)에 대한 타임머신 기능은 라이브 영상의 적어도 일부를 일정 시간이 경과한 이후에 사용자가 임의로 시청할 수 있도록 하는 기능으로서, 라이브 영상을 저장하고 저장된 라이브 영상을 다시 재생하는 방식으로 제공될 수 있다. 예를 들어, 한국등록특허 제10-1300882호는 타임머신 기능을 가지는 영상표시기기 및 그 제어 방법을 개시하고 있다.
종래기술에서, 스트리밍 서비스에서의 타임머신 기능은 영상 컨텐츠를 재생하는 전자 기기의 플레이어들이 OS(Operating System)나 플랫폼에 따라 서로 다른 스트리밍 규격을 사용하고 있다. 예를 들어, PC(Personal Computer)의 플래시 플레이어는 스트리밍 프로토콜로서 RTMP(Real Time Messaging Protocol)를 사용하고, iOS나 안드로이드의 플레이어에서는 스트리밍 프로토콜로서 HLS(HTTP Live Streaming) 프로토콜을 사용한다. 이때 종래기술에서는 타임머신 기능을 위한 제어 세션을 각 스트리밍 프로토콜 별로 구현해야만 한다는 문제점이 있다.
참고자료: <PCT/KR/2014/010167, US20140019540A1, US20130332543A1, US20130260893>
타임머신 제어 프로토콜이 타임머신 기능에 대한 제어 역할만을 담당하고, 스트리밍 클라이언트와 플레이어간의 스트리밍 프로토콜은 플레이어에서 지원하는 스트리밍 규격을 그대로 이용할 수 있도록 구현할 수 있는 방법 및 시스템을 제공한다.
또한, OS나 플레이어에 상관없이 동일한 규격을 이용하여 타임머신 기능을 제어할 수 있어 스트리밍 클라이언트의 플레이어에 대한 종속성을 제거할 수 있는 방법 및 시스템을 제공한다.
전자 기기를 구현하는 컴퓨터와 결합하여 타임머신 기능 제공 방법을 실행시키기 위해 매체에 저장된 컴퓨터 프로그램에 있어서, 상기 타임머신 기능 제공 방법은, 라이브 스트리밍 서비스를 제공하기 위해 상기 전자 기기에 설치된 스트리밍 클라이언트에서, 상기 전자 기기에 설치된 플레이어와의 스트리밍 세션을 설정하는 단계; 상기 스트리밍 클라이언트에서 네트워크를 통해 수신된 라이브 스트림 데이터를 상기 스트리밍 세션을 통해 순차적으로 상기 플레이어로 전송하는 단계; 상기 스트리밍 클라이언트에서 상기 플레이어와의 타임머신 제어 세션을 설정하는 단계; 상기 스트리밍 클라이언트에서 상기 타임머신 제어 세션을 통해 상기 플레이어로부터 타임머신 제어 요청을 수신하는 단계; 및 상기 스트리밍 클라이언트에서 상기 타임머신 제어 요청 중 재생 위치 정보를 포함하는 타임머신 제어 요청에 대응하는 채널의 라이브 스트림 데이터를 상기 재생 위치 정보를 통해 특정되는 재생 위치부터 순차적으로 상기 스트리밍 세션을 통해 상기 플레이어로 전송하는 단계를 포함하는 것을 특징으로 하는 컴퓨터 프로그램을 제공한다.
컴퓨터로 구현된 전자 기기의 타임머신 기능 제공 방법에 있어서, 라이브 스트리밍 서비스를 제공하기 위해 상기 전자 기기에 설치된 스트리밍 클라이언트에서, 상기 전자 기기에 설치된 플레이어와의 스트리밍 세션을 설정하는 단계; 상기 스트리밍 클라이언트에서 네트워크를 통해 수신된 라이브 스트림 데이터를 상기 스트리밍 세션을 통해 순차적으로 상기 플레이어로 전송하는 단계; 상기 스트리밍 클라이언트에서 상기 플레이어와의 타임머신 제어 세션을 설정하는 단계; 상기 스트리밍 클라이언트에서 상기 타임머신 제어 세션을 통해 상기 플레이어로부터 타임머신 제어 요청을 수신하는 단계; 및 상기 스트리밍 클라이언트에서 상기 타임머신 제어 요청 중 재생 위치 정보를 포함하는 타임머신 제어 요청에 대응하는 채널의 라이브 스트림 데이터를 상기 재생 위치 정보를 통해 특정되는 재생 위치부터 순차적으로 상기 스트리밍 세션을 통해 상기 플레이어로 전송하는 단계를 포함하는 것을 특징으로 하는 타임머신 기능 제공 방법을 제공한다.
타임머신 제어 프로토콜이 타임머신 기능에 대한 제어 역할만을 담당하고, 스트리밍 클라이언트와 플레이어간의 스트리밍 프로토콜은 플레이어에서 지원하는 스트리밍 규격을 그대로 이용할 수 있도록 구현할 수 있다.
또한, OS나 플레이어에 상관없이 동일한 규격을 이용하여 타임머신 기능을 제어할 수 있어 스트리밍 클라이언트의 플레이어에 대한 종속성을 제거할 수 있다.
도 1은 본 발명의 일실시예에 따른 네트워크 환경의 예를 도시한 도면이다.
도 2는 본 발명의 일실시예에 있어서, 전자 기기 및 서버의 내부 구성을 설명하기 위한 블록도이다.
도 3은 본 발명의 일실시예에 있어서, 라이브 스트리밍 서비스를 위한 전체 시스템 환경의 예를 도시한 도면이다.
도 4는 본 발명의 일실시예에 있어서, 제어 세션의 인증 과정의 예를 도시한 도면이다.
도 5는 본 발명의 일실시예에 있어서, 시프트 값들을 설명하기 위한 예를 도시한 도면이다.
도 6은 본 발명의 일실시예에 있어서, 최초 재생 요청 및 재생 완료 요청을 처리하는 과정의 예를 도시한 흐름도이다.
도 7은 본 발명의 일실시예에 있어서, 재생 중에 탐색 요청을 처리하는 과정의 예를 도시한 흐름도이다.
도 8은 본 발명의 일실시예에 있어서, 일시 중지 요청 및 재개 요청을 처리하는 과정의 예를 도시한 흐름도이다.
도 9는 본 발명의 일실시예에 있어서, 딜리버리 서버의 내부 구성을 설명하기 위한 도면이다.
도 10은 본 발명의 일실시예에 있어서, 타임머신 버퍼의 활용 예를 도시한 도면이다.
도 11은 본 발명의 일실시예에 있어서, 타임머신 기능을 이용하여 탐색을 진행하는 경우 미리보기 기능을 제공하는 화면의 예를 도시한 도면이다.
도 12는 본 발명의 일실시예에 따른 전자 기기의 프로세서가 포함할 수 있는 구성요소의 예를 도시한 도면이다.
도 13은 본 발명의 일실시예에 따른 전자 기기가 수행할 수 있는 타임머신 기능 제공 방법의 예를 도시한 흐름도이다.
이하, 실시예를 첨부한 도면을 참조하여 상세히 설명한다.
도 1은 본 발명의 일실시예에 따른 네트워크 환경의 예를 도시한 도면이다. 도 1의 네트워크 환경은 복수의 전자 기기들(110, 120, 130, 140), 복수의 서버들(150, 160) 및 네트워크(170)를 포함하는 예를 나타내고 있다. 이러한 도 1은 발명의 설명을 위한 일례로 전자 기기의 수나 서버의 수가 도 1과 같이 한정되는 것은 아니다.
복수의 전자 기기들(110, 120, 130, 140)은 컴퓨터 장치로 구현되는 고정형 단말이거나 이동형 단말일 수 있다. 복수의 전자 기기들(110, 120, 130, 140)의 예를 들면, 스마트폰(smart phone), 휴대폰, 네비게이션, 컴퓨터, 노트북, 디지털방송용 단말, PDA(Personal Digital Assistants), PMP(Portable Multimedia Player), 태블릿 PC 등이 있다. 일례로 전자 기기 1(110)은 무선 또는 유선 통신 방식을 이용하여 네트워크(170)를 통해 다른 전자 기기들(120, 130, 140) 및/또는 서버(150, 160)와 통신할 수 있다.
통신 방식은 제한되지 않으며, 네트워크(170)가 포함할 수 있는 통신망(일례로, 이동통신망, 유선 인터넷, 무선 인터넷, 방송망)을 활용하는 통신 방식뿐만 아니라 기기들간의 근거리 무선 통신 역시 포함될 수 있다. 예를 들어, 네트워크(170)는, PAN(personal area network), LAN(local area network), CAN(campus area network), MAN(metropolitan area network), WAN(wide area network), BBN(broadband network), 인터넷 등의 네트워크 중 하나 이상의 임의의 네트워크를 포함할 수 있다. 또한, 네트워크(170)는 버스 네트워크, 스타 네트워크, 링 네트워크, 메쉬 네트워크, 스타-버스 네트워크, 트리 또는 계층적(hierarchical) 네트워크 등을 포함하는 네트워크 토폴로지 중 임의의 하나 이상을 포함할 수 있으나, 이에 제한되지 않는다.
서버(150, 160) 각각은 복수의 전자 기기들(110, 120, 130, 140)과 네트워크(170)를 통해 통신하여 명령, 코드, 파일, 컨텐츠, 서비스 등을 제공하는 컴퓨터 장치 또는 복수의 컴퓨터 장치들로 구현될 수 있다.
일례로, 서버(160)는 네트워크(170)를 통해 접속한 전자 기기 1(110)로 어플리케이션의 설치를 위한 파일을 제공할 수 있다. 이 경우 전자 기기 1(110)은 서버(160)로부터 제공된 파일을 이용하여 어플리케이션을 설치할 수 있다. 또한 전자 기기 1(110)이 포함하는 운영체제(Operating System, OS) 및 적어도 하나의 프로그램(일례로 브라우저나 상기 설치된 어플리케이션)의 제어에 따라 서버(150)에 접속하여 서버(150)가 제공하는 서비스나 컨텐츠를 제공받을 수 있다. 예를 들어, 전자 기기 1(110)이 어플리케이션의 제어에 따라 네트워크(170)를 통해 서비스 요청 메시지를 서버(150)로 전송하면, 서버(150)는 서비스 요청 메시지에 대응하는 코드를 전자 기기 1(110)로 전송할 수 있고, 전자 기기 1(110)은 어플리케이션의 제어에 따라 코드에 따른 화면을 구성하여 표시함으로써 사용자에게 컨텐츠를 제공할 수 있다. 다른 예로, 서버(150)는 메시징 서비스를 위한 통신 세션을 설정하고, 설정된 통신 세션을 통해 복수의 전자 기기들(110, 120, 130, 140)간의 메시지 송수신을 라우팅할 수도 있다. 또 다른 예로, 서버(150)는 전자 기기들(110, 120, 130, 140)로 소셜 네트워크 서비스를 제공할 수 있다. 또 다른 예로, 서버들(150, 160)은 복수의 전자 기기들(110, 120, 130, 140)로 라이브 스트리밍 서비스를 제공할 수 있다.
도 2는 본 발명의 일실시예에 있어서, 전자 기기 및 서버의 내부 구성을 설명하기 위한 블록도이다. 도 2에서는 하나의 전자 기기에 대한 예로서 전자 기기 1(110), 그리고 하나의 서버에 대한 예로서 서버(150)의 내부 구성을 설명한다. 다른 전자 기기들(120, 130, 140)이나 서버(160)뿐만 아니라 도 1을 통해 설명한 네트워크 환경에 포함될 수 있는 또 다른 전자 기기들이나 또 다른 서버들에도 동일한 또는 유사한 내부 구성요소들이 적용될 수 있다.
전자 기기 1(110)과 서버(150)는 메모리(211, 221), 프로세서(212, 222), 통신 모듈(213, 223) 그리고 입출력 인터페이스(214, 224)를 포함할 수 있다. 메모리(211, 221)는 컴퓨터에서 판독 가능한 기록 매체로서, RAM(random access memory), ROM(read only memory) 및 디스크 드라이브와 같은 비소멸성 대용량 기록장치(permanent mass storage device)를 포함할 수 있다. 또한, 메모리(211, 221)에는 운영체제와 적어도 하나의 프로그램 코드(일례로 전자 기기 1(110)에 설치되어 구동되는 브라우저나 상술한 어플리케이션 등을 위한 코드)가 저장될 수 있다. 이러한 소프트웨어 구성요소들은 드라이브 메커니즘(drive mechanism)을 이용하여 메모리(211, 221)와는 별도의 컴퓨터에서 판독 가능한 기록 매체로부터 로딩될 수 있다. 이러한 별도의 컴퓨터에서 판독 가능한 기록 매체는 플로피 드라이브, 디스크, 테이프, DVD/CD-ROM 드라이브, 메모리 카드 등의 컴퓨터에서 판독 가능한 기록 매체를 포함할 수 있다. 다른 실시예에서 소프트웨어 구성요소들은 컴퓨터에서 판독 가능한 기록 매체가 아닌 통신 모듈(213, 223)을 통해 메모리(211, 221)에 로딩될 수도 있다. 예를 들어, 적어도 하나의 프로그램은 개발자들 또는 어플리케이션의 설치 파일을 배포하는 파일 배포 시스템(일례로 상술한 서버(160))이 네트워크(170)를 통해 제공하는 파일들에 의해 설치되는 프로그램(일례로 상술한 어플리케이션)에 기반하여 메모리(211, 221)에 로딩될 수 있다.
프로세서(212, 222)는 기본적인 산술, 로직 및 입출력 연산을 수행함으로써, 컴퓨터 프로그램의 명령을 처리하도록 구성될 수 있다. 명령은 메모리(211, 221) 또는 통신 모듈(213, 223)에 의해 프로세서(212, 222)로 제공될 수 있다. 예를 들어 프로세서(212, 222)는 메모리(211, 221)와 같은 기록 장치에 저장된 프로그램 코드에 따라 수신되는 명령을 실행하도록 구성될 수 있다.
통신 모듈(213, 223)은 네트워크(170)를 통해 전자 기기 1(110)과 서버(150)가 서로 통신하기 위한 기능을 제공할 수 있으며, 다른 전자 기기(일례로 전자 기기 2(120)) 또는 다른 서버(일례로 서버(160))와 통신하기 위한 기능을 제공할 수 있다. 일례로, 전자 기기 1(110)의 프로세서(212)가 메모리(211)와 같은 기록 장치에 저장된 프로그램 코드에 따라 생성한 요청(일례로 컨텐츠에 대한 스트리밍 서비스 요청)이 통신 모듈(213)의 제어에 따라 네트워크(170)를 통해 서버(150)로 전달될 수 있다. 역으로, 서버(150)의 프로세서(222)의 제어에 따라 제공되는 제어 신호나 명령, 컨텐츠, 파일 등이 통신 모듈(223)과 네트워크(170)를 거쳐 전자 기기 1(110)의 통신 모듈(213)을 통해 전자 기기 1(110)로 수신될 수 있다. 예를 들어 통신 모듈(213)을 통해 수신된 서버(150)의 제어 신호나 명령 등은 프로세서(212)나 메모리(211)로 전달될 수 있고, 컨텐츠나 파일 등은 전자 기기 1(110)가 더 포함할 수 있는 저장 매체로 저장될 수 있다.
입출력 인터페이스(214, 224)는 입출력 장치(215)와의 인터페이스를 위한 수단일 수 있다. 예를 들어, 입력 장치는 키보드 또는 마우스 등의 장치를, 그리고 출력 장치는 어플리케이션의 통신 세션을 표시하기 위한 디스플레이와 같은 장치를 포함할 수 있다. 다른 예로 입출력 인터페이스(214)는 터치스크린과 같이 입력과 출력을 위한 기능이 하나로 통합된 장치와의 인터페이스를 위한 수단일 수도 있다. 보다 구체적인 예로, 전자 기기 1(110)의 프로세서(212)는 메모리(211)에 로딩된 컴퓨터 프로그램의 명령을 처리함에 있어서 서버(150)나 전자 기기 2(120)가 제공하는 데이터를 이용하여 구성되는 서비스 화면이나 컨텐츠가 입출력 인터페이스(214)를 통해 디스플레이에 표시될 수 있다.
또한, 다른 실시예들에서 전자 기기 1(110) 및 서버(150)는 도 2의 구성요소들보다 더 많은 구성요소들을 포함할 수도 있다. 그러나, 대부분의 종래기술적 구성요소들을 명확하게 도시할 필요성은 없다. 예를 들어, 전자 기기 1(110)은 상술한 입출력 장치(215) 중 적어도 일부를 포함하도록 구현되거나 또는 트랜시버(transceiver), GPS(Global Positioning System) 모듈, 카메라, 각종 센서, 데이터베이스 등과 같은 다른 구성요소들을 더 포함할 수도 있다.
도 3은 본 발명의 일실시예에 있어서, 라이브 스트리밍 서비스를 위한 전체 시스템 환경의 예를 도시한 도면이다. 도 3은 미디어 스트리밍 서버(310), 패킷타이징 서버(320), 딜리버리 서버(330), 인덱스 서버(340), 전자 기기(350) 및 복수의 피어들(360)을 도시하고 있다.
미디어 스트리밍 서버(310), 패킷타이징 서버(320), 딜리버리 서버(330) 및 인덱스 서버(340) 각각은 도 1 및 도 2를 통해 설명한 서버(150)와 동일한 또는 유사한 내부 구성요소들을 갖는 장치일 수 있다. 또한, 복수의 피어들(360) 각각과 전자 기기(350)는 도 1 및 도 2를 통해 설명한 전자 기기 1(110)과 동일한 또는 유사한 내부 구성요소들을 갖는 장치일 수 있다. 도 3에서는 미디어 스트리밍 서버(310), 패킷타이징 서버(320), 딜리버리 서버(330) 및 인덱스 서버(340)를 각각 하나씩 도시하고 있으나, 각각 복수의 서버 그룹의 형태로 구현될 수도 있다. 예를 들어, 프로야구 경기를 생중계함에 있어서, 4개의 경기가 진행되는 경우, 4개의 경기에 대해 4개의 미디어 소스를 위한 4 개의 미디어 스트리밍 서버들의 그룹이 존재할 수 있고, 각각의 미디어 소스를 위해 4 개의 패킷타이징 서버들의 그룹이 존재할 수 있다. 이와 유사하게 딜리버리 서버(330) 및 인덱스 서버(340)도 필요에 따라 복수의 서버 그룹으로 구현될 수 있다. 예를 들어, 딜리버리 서버(330) 및 인덱스 서버(340)는 동시 접속자수와 같은 성능 이슈에 따라 요구되는 서버의 수가 결정될 수 있다.
미디어 스트리밍 서버(310)는 라이브 스트림 데이터를 제공하는 인코더(미도시)를 포함하는 미디어 소스 장치일 수 있다. 패킷타이징 서버(120)는 이러한 미디어 스트리밍 서버(310)로부터 라이브 스트림 데이터를 수신할 수 있으며 수신된 라이브 스트림 데이터를 P2P 서비스를 통해 제공하기 위해 수신된 라이브 스트림 데이터를 피스(piece)로 패킷타이징(또는 인덱싱)할 수 있다. 스트림 데이터를 피스로 패킷타이징(또는 인덱싱)하는 방법은 이미 알려진 다양한 방법들 중 하나를 이용할 수 있다.
딜리버리 서버(330)는 패킷타이징 서버(320)로부터 패킷타이징된(또는 인덱싱된) 피스를 수신하고, 이를 버퍼링할 수 있으며, P2P 서비스의 피어(peer)로부터의 요청에 따라 요청된 라이브 스트림 데이터에 대한 피스를 해당 피어로 전송할 수 있다. 여기서 피어는 P2P 서비스를 이용한 라이브 스트리밍 서비스에서의 클라이언트를 의미할 수 있으며, 각각 하나의 전자 기기로 구현될 수 있다. 피어를 구현하는 전자 기기는 도 3에 도시된 전자 기기(350)를 포함하며, 앞서 설명한 바와 같이 도 1 및 도 2를 통해 설명한 전자 기기 1(110)과 동일한 또는 유사한 내부 구성요소들을 갖는 장치일 수 있다.
인덱스 서버(340)는 피어의 목록을 유지하고 피어의 요청에 따른 검색 결과를 제공할 수 있다.
피어를 구현하는 전자 기기(350)에는 스트리밍 클라이언트(351)와 같은 어플리케이션이 설치 및 구동될 수 있다. 이때, 전자 기기(350)는 구동된 스트리밍 클라이언트(351)의 제어에 따라, 딜리버리 서버(330)로부터 피스를 수신하거나 또는 다른 피어들(도 3의 복수의 피어들(360))을 구현하는 다른 전자 기기들로부터 피스를 수신할 수 있다.
또한, 전자 기기(350)에서 구동된 스트리밍 클라이언트(351)는 전자 기기(350)에 설치 및 구동된 다른 어플리케이션인 플레이어(352)와 전자 기기(350)에서 내부적으로 통신하여 플레이어(352)로 라이브 스트림 데이터를 전송할 수 있다. 이때, 스트리밍 클라이언트(351)가 플레이어(352)로 제공하는 라이브 스트림 데이터는 딜리버리 서버(330) 또는 복수의 피어들(360) 중 적어도 일부로부터 수신한 피스에 기반하여 조합된 데이터일 수 있다.
이 경우, 플레이어(352)는 스트리밍 클라이언트(351)가 제공하는 라이브 스트림 데이터를 재생할 수 있고, 이에 따라, 미디어 스트리밍 서버(310)가 제공하는 라이브 스트림 데이터가 전자 기기(350)에서 재생되어 전자 기기(350)의 사용자에게 제공될 수 있다.
1. 타임머신 기능의 개요
피어를 구현하는 전자 기기(일례로, 도 3의 전자 기기(350))에 설치 및 구동되는 스트리밍 클라이언트(일례로, 도 3의 스트리밍 클라이언트(351))는 전자 기기의 사용자에게 라이브 스트림 데이터에 대한 타임머신 기능을 제공할 수 있다. 앞서 설명한 바와 같이 종래기술에서는 각 스트리밍 프로토콜 별로 타임머신 기능을 위한 제어 세션을 구현해야 했던 반면, 본 발명의 실시예들에서는 타임머신 제어 프로토콜이 타임머신 기능에 대한 제어 역할만을 담당하고, 스트리밍 클라이언트와 플레이어간의 스트리밍 프로토콜은 플레이어에서 지원하는 스트리밍 규격을 그대로 이용할 수 있도록 구현할 수 있다. 이러한 실시예들을 통해 OS나 플레이어에 상관없이 동일한 규격을 이용하여 타임머신 기능을 제어할 수 있어 스트리밍 클라이언트의 플레이어에 대한 종속성을 제거할 수 있다. 만약, 플레이어에서 타임머신 제어 프로토콜이 지원되지 않는다면, 사용자는 플레이어를 통해 기존 플레이어에서 사용하고 있는 스트리밍 프로토콜을 이용하여 라이브 영상만을 시청할 수 있다.
2. 용어 정리
스트리밍 클라이언트는 라이브 스트리밍 서비스에서 이용되는 어플리케이션으로서 도 3에서는 전자 기기(350)에 포함된 스트리밍 클라이언트(351)를 예로서 도시하고 있으나, 이미 설명한 바와 같이 실질적으로는 본 발명의 실시예들에 따른 라이브 스트리밍 서비스를 제공받고자 하는 피어들 각각에 설치 및 구동될 수 있다.
타임머신 기능을 위한 제어 세션은 라이브 스트림 데이터를 제공하기 위한 스트리밍 세션과는 별도로 플레이어(352)와 스트리밍 클라이언트(351)간에 맺어지는 논리적인 연결을 의미할 수 있다. 플레이어(352)와 스트리밍 클라이언트(351)간의 TCP(Transmission Control Protocol) 연결과는 관계가 없으며, TCP 연결이 끊어지더라도 제어 세션 연결은 끊어지지 않으며, 역으로 TCP 연결이 계속 유지되더라도 이후 자세히 설명될 채널에 대한 요청이 없는 경우에는 제어 세션 연결이 끊어지도록 구현될 수 있다.
시프트(이하 'shift')는 타임머신 기능을 이용함에 있어서, 얼마나 과거의 데이터를 재생하는가에 대한 상대적인 지표로서 사용될 수 있다. shift의 값은 최신 라이브 영상을 0으로 하고, 0보다 크면 과거로 이동한 것을 나타낼 수 있어, shift의 값이 클수록 상대적으로 더 과거의 영상을 재생하고 있음을 의미할 수 있다. shift의 값의 단위는 일례로, 밀리초(millisecond, msec)를 이용할 수 있다.
최대 시프트 가능 시간(max shift, 이하 'mshift')는 방송에 대해 설정된 타임머신 가능한 최대 시간을 나타내는 지표로서 사용될 수 있다. 최대 시프트 가능 시간인 mshift의 값이 큰 방송일수록 상대적으로 더 긴 타임머신 영상 데이터를 제공할 수 있음을 의미할 수 있다.
현재 시프트 가능 시간(available shift, 이하, 'ashift')는 사용자가 과거의 영상을 돌려서 볼 수 있는 최대 시간을 의미하는 지표일 수 있다.
현재 시프트 시간(current shift, 이하, 'cshift')는 사용자가 현재 어느 정도 과거의 영상을 재생하고 있는가를 나타내는 지표일 수 있다.
이러한 shift, mshift, ashift 및 cshift에 대해서는 이후 더욱 자세히 설명한다.
3. 타임머신 세션 기본 정보
3.1. 메시지 인증
메시지를 교환하기 위한 제어 세션을 사용하기 위해서는 인증이 요구된다. 플레이어는 제어 세션의 시작을 위해 인증 요청("/auth")을 스트리밍 클라이언트로 전송하고, 스트리밍 클라이언트에서 인증이 성공하면 스트리밍 클라이언트는 인증 요청에 대한 응답에 해당 플레이어에서 사용할 키(key) 정보를 전송한다. 이때, 키 정보는 "/auth" 요청의 응답에만 포함될 수 있다. 이 키는 플레이어가 스트리밍 클라이언트로 전송하는 다음 타임머신 제어 요청에 파라미터의 형태로 포함될 수 있다. 예를 들어, 키는 "k=" query와 같은 문자열의 형태로 포함되어 스트리밍 될 수 있다. 이때, "k=" query 문자열이 잘못되었거나 이 query 문자열이 없을 경우 스트리밍 클라이언트는 인증되지 않았음을 알리기 위한 응답(일례로, HTTP 에서의 401 응답코드)을 플레이어로 전송한다. 이 키는 해당 플레이어에서 영상이 계속 재생되는 동안 유효하며, 다른 플레이어에서 동일한 채널에 대해 연결 요청이 발생하면 무효가 될 수 있다. 이때, 무효가 된 세션에서 들어오는 요청에 대해서 스트리밍 클라이언트는 인증되지 않았음을 알리기 위한 응답(일례로, HTTP 에서의 401 응답코드)을 전송할 수 있다. 이 조건은 서로 다른 브라우저에서 동일한 채널에 접속하든, 같은 브라우저 내의 다른 창에서 동일한 채널에 접속하든 같은 채널에 대한 요청에 대해서 동일하게 적용될 수 있다. 이때 각 플레이어가 다른 채널에 접속하는 경우에는 적용되지 않을 수 있다. query 문자열의 순서는 바뀌어도 무관하다.
도 4는 본 발명의 일실시예에 있어서, 제어 세션의 인증 과정의 예를 도시한 도면이다. 도 4는 스트리밍 클라이언트(410), 플레이어 1(420) 및 플레이어 2(430)를 도시하고 있다. 일례로, 스트리밍 클라이언트(410), 플레이어 1(420) 및 플레이어 2(430)는 하나의 전자 기기에 설치 및 구동되는 각각의 어플리케이션들일 수 있다.
제1 점선박스(441)은 플레이어 1(420)이 스트리밍 클라이언트(410)로 인증 요청(/auth)을 하고, 스트리밍 클라이언트(410)가 플레이어 1(420)을 인증함에 따라 응답(HTTP 에서의 200 OK 응답코드)과 함께 키 <key1>를 플레이어 1(420)로 전송하는 과정을 나타내고 있다. 인증 요청(/auth)에 대해서는 이후 더욱 자세히 설명한다. 키 정보로서 표시된 {"key": <key1>}는 키로서 <key1>가 제공됨을 의미할 수 있다.
제2 점선박스(442)는 플레이어 1(420)이 획득한 키(<key1>)를 이용하여 스트리밍 클라이언트(410)로 재생 요청(/play)을 하고, 스트리밍 클라이언트(410)로가 플레이어 1(420)로 응답(HTTP 에서의 200 OK 응답코드)을 전송하는 과정을 나타내고 있다. 이처럼 플레이어 1(420)은 인증 요청(/auth)을 통해 획득한 키(<key1>)를 이용하여 타임머신 기능을 위한 제어 요청들을 스트리밍 클라이언트(410)로 전송할 수 있고, 스트리밍 클라이언트(410)는 스트리밍 클라이언트(410)가 발급한 키(<key1>)를 통해 플레이어 1(420)의 제어 요청들을 인증할 수 있다.
제3 점선박스(443)는 플레이어 2(430)가 스트리밍 클라이언트(410)로 인증 요청(/auth)을 하고, 스트리밍 클라이언트(410)가 플레이어 2(430)를 인증함에 따라 응답(HTTP 에서의 200 OK 응답코드)과 함께 키 <key2>를 플레이어 2(430)로 전송하는 과정을 나타내고 있다. 앞서 설명한 바와 같이, 다른 플레이어에서 동일한 채널에 대해 연결 요청이 발생하였기 때문에 먼저 발급된 키 <key1>은 무효화될 수 있다.
제4 점선박스(444)는 플레이어 1(420)이 키 <key1>을 이용하여 탐색 요청(/seek)을 스트리밍 클라이언트(410)로 전송하는 예를 나타내고 있다. 이때, 키 <key1>는 플레이어 2(430)의 키 <key2>의 발급에 따라 무효화되었기 때문에 스트리밍 클라이언트(410)는 탐색 요청(/seek)에 대해 인증되지 않았음을 나타내는 응답(HTTP 에서의 401 응답코드)을 플레이어 1(420)로 전송할 수 있다. 탐색 요청(/seek)에 대해서는 이후 더욱 자세히 설명한다.
제5 점선박스(445)는 플레이어 2(430)가 키 <key2>를 이용하여 탐색 요청(/seek)을 스트리밍 클라이언트(410)로 전송하는 예를 나타내고 있다. 키 <key2>는 아직 유효하기 때문에 스트리밍 클라이언트(410)는 플레이어 2(430)의 탐색 요청(/seek)을 처리함에 따른 응답(HTTP에서의 200 OK 응답코드)을 플레이어 2(430)로 전송할 수 있다.
제6 점선박스(446)는 플레이어 1(420)이 다시 키 <key1>을 이용하여 정보 획득 및 세션 유지 요청(/maxshift)을 스트리밍 클라이언트(410)로 전송하는 예를 나타내고 있다. 키 <key1>는 플레이어 2(430)의 키 <key2>의 발급에 따라 무효화되었기 때문에 스트리밍 클라이언트(410)는 정보 획득 및 세션 유지 요청(/maxshift)에 대해 인증되지 않았음을 나타내는 응답(HTTP 에서의 401 응답코드)을 플레이어 1(420)로 전송할 수 있다. 정보 획득 및 세션 유지 요청(/maxshift)에 대해서는 이후 더욱 자세히 설명한다.
3.2. 세션 유지
브라우저(또는 플레이어)와 스트리밍 클라이언트간의 TCP 연결은 언제든지 종료될 수 있다(예를 들어, HTTP 1.0). 다시 말해, TCP 연결을 계속 유지하는 것이 아니기 때문에, 사용자가 해당 채널을 계속 사용하고 있는지 여부를 스트리밍 클라이언트가 파악할 수 있도록, 플레이어는 일정 시간 내에 사용자가 보고 있는 채널에 대한 타임머신 제어 요청을 스트리밍 클라이언트로 전송해야 한다. 이러한 세션 유지(및 타임머신 세션의 정보 획득)를 위해 정보 획득 및 세션 유지 요청(/maxshift)이 이용될 수 있다. /maxshift는 인증이 성공한 뒤 사용자가 채널을 통해 스트림 데이터를 시청하고 있는 동안, 타임머신 세션의 정보를 획득하기 위해 언제든 호출될 수 있다. 이때, /maxshift 역시 타임머신 제어 요청의 하나로서 /maxshift의 전송에 따라 스트리밍 클라이언트는 해당 플레이어와의 세션을 유지할 수 있다. 타임머신의 제어 세션은 기설정된 최대 유효 시간을 가질 수 있다. 따라서 스트리밍 클라이언트는 기설정된 최대 유효 시간동안 해당 플레이어로부터 아무런 타임머신 제어 요청이 수신되지 않는 경우 타임머신 제어 세션을 종료할 수 있다. 따라서 플레이어는 타임머신 제어 세션의 유지를 위해 최대 유효 시간보다 짧은 호출 간격으로 /maxshift를 스트리밍 클라이언트로 전송할 수 있다.
3.3. HTTP query 문자열
타임머신 제어 요청들 각각은 타임머신 제어 세션의 인증을 위해 요청과 함께 query 문자열이 추가될 수 있다. query 문자열은 아래 표 1과 같이 정의될 수 있다.
Key
ref 플레이어에서 채널에 접속하기 위해 사용하는 URL(URL 인코딩(encoding) 적용)
k 인증 요청(/auth)에 대한 성공 응답에 포함된 키(일례로, 상술한 <key1> 및 <key2>)
모든 타임머신 제어 요청은 ref query 문자열을 포함할 수 있으며, ref query 문자열이 포함되지 않은 요청은 모두 인증되지 않은 요청으로 간주될 수 있다. 또한, 인증 요청(/auth)을 제외한 모든 타임머신 제어 요청은 k query 문자열을 포함할 수 있으며, k query 문자열이 포함되지 않은 요청은 모두 인증되지 않은 요청으로 간주될 수 있다. k query 문자열의 값은 인증 요청(/auth)에 대한 성공 응답에 포함되어 플레이어로 전송되는 키 값을 포함할 수 있으며, 다른 키 값(유효하지 않은 키 값)이 포함된 타임머신 제어 요청 역시 인증되지 않은 요청으로 간주될 수 있다.
4. 제어를 위한 메시지
상술한 타임머신 제어 요청으로서 플레이어로부터 스트리밍 클라이언트로 전송되는 메시지는 HTTP를 이용할 수 있다. 모든 메시지는 앞서 설명한 바와 같이 현재 재생하고 있는 URL 정보를 명시한 ref query 문자열을 포함할 수 있다. 또한, 인증 요청(/auth) 메시지 이외의 모든 메시지는 인증 요청(/auth)에 대한 성공 응답에 포함되어 전송된 키 값을 명시한 k query 문자열을 더 포함할 수 있다. query 문자열이 포함되지 않은 요청 메시지는 부적절한 요청(인증되지 않은 요청)으로 간주될 수 있다. 재생과 관련이 있는 응답은 200 OK 메시지의 내용에 JSON 포맷을 이용하여 스트리밍 클라이언트로부터 플레이어로 전송될 수 있다. 재생 완료 요청(/stop)을 제외한 다른 요청에 대한 결과 확인은 스트리밍 클라이언트가 전송하는 응답의 내용을 확인해야 한다.
4.1. 메시지 개괄
타임머신 제어 요청을 위해 플레이어에서 스트리밍 클라이언트로 전송되는 메시지(요청)는 아래 표 2와 같이 정의될 수 있다.
요청 기능 전송 시점
인증 요청 (/auth) 연결 인증 최초 세션 연결 시
정보 획득 및 세션 유지 요청 (/maxshift) 타임머신 정보 획득 및 세션 유지 재생 요청 (/play)을 보낸 이후, 제어 세션이 유지되는 동안 언제든 전송 가능
상태 변경 요청 (/change) 타임머신 활성화 상태 변경 인증 이후 제어 세션의 연결이 종료되기 전 언제든 전송 가능
재생 요청 (/play) 재생 요청 스트리밍 프로토콜로 요청을 보내기 전에 반드시 전송해야 함. 스트리밍 진행 가능 여부를 메시지 응답을 통해 확인해야 함.
재개 요청 (/resume) 이어서 재생하기 재생 요청 (/play)에 의해 정상적으로 재생이 시작된 이후 재생 완료 요청 (/stop)으로 연결이 종료되기 전까지 언제든 전송 가능
탐색 요청 (/seek) 재생 위치 이동하기
일시 중지 요청 (/pause) 일시 중지
재생 완료 요청 (/stop) 재생 종료 재생을 완료할 때
4. 2. 연결 인증(/auth)
인증 요청(/auth)은 앞서 설명한 바와 같이, 타임머신 기능을 사용하기 위해 처음 연결을 맺을 때, 플레이어가 전송하는 요청으로, 스트리밍 클라이언트는 인증 요청(/auth)을 전송하는 플레이어가 적절한 플레이어인지 확인하기 위해 인증 요청(/auth)에 추가된 파라미터를 이용할 수 있다. 인증 요청(/auth)은 플레이어에서 스트리밍 클라이언트로 연결을 맺는 하나의 타임머신 제어 세션에 대해 최초 1회만 전송될 수 있다.
인증 요청은 아래 표 3과 같이 정의될 수 있다.
요청 파라미터
/auth ref=<대표 URL>&authKey=<인증 key>

ref: 플레이어에서 채널에 접속하기 위해 사용하는 URL(URL encoding 적용).
authKey: 플레이어의 인증을 위한 인증 키, /auth의 성공 응답이 포함하는 키와는 별도의 키.
인증 키(authKey) 생성 방식의 예시: ref query 문자열에 명시한 "대표 URL"의 SHA-1(Secure Hash Algorithm 1) 반환 값을 베이스 64(base 64)의 인코딩 방법으로 인코딩한 값을 인증 키로 생성. 이때, 베이스 64에서 사용하는 ':', '=', '/' 는 URL query에서 사용하는 ':', '=', '/'와 구별하기 위해 각각 URL 인코딩한 "%3A", "%3D", "%2F"로 변경하여 사용함.
보다 구체적인 예로, 플레이어에서 "URL://127.0.0.1:7085/live?cid=49"에 접속하고자 하는 경우, 인증 키(authKey)는 다음과 같은 과정을 통해 생성될 수 있다.
1. SHA-1(Secure Hash Algorithm 1)을 이용하여 URL의 해쉬값 생성(16 진수): EA B0 AC AD 34 F2 86 B2 0F B1 58 54 33 AA D9 69 4E 7F 5C 24
(이 값은 참고값이며, 해당 문자열을 인코딩하는 것이 아니라, 바이너리 값을 베이스 64의 인코딩 방법으로 인코딩함.)
2. 베이스 64의 인코딩 방법으로 인코딩: 6rCsrTTyhrIPsVhUM6rZaU5/XCQ=
3. 인증 키(authKey): 6rCsrTTyhrIPsVhUM6rZaU5%2FXCQ%3D
('/', '='를 각각 "%2F", "%3D"로 변경하였음.)
이처럼 인증 요청(/auth)을 위한 인증 키(authKey)는 "6rCsrTTyhrIPsVhUM6rZaU5%2FXCQ%3D"이 되고, 실제 요청은 다음 표 4와 같이 생성될 수 있다.
/authref=rtmp%3A%2F%2F127.0.0.1%3A7085%2Flive%3Fcid%3D49&authKey=6rCsrTTyhrIPsVhUM6rZaU5%2FXCQ%3D
인증 요청(/auth)이 성공하는 경우 스트리밍 클라이언트의 응답은 다음 표 5와 같이 나타날 수 있다.
Key 설명
key 채널 재생을 위해 플레이어가 사용해야 하는 key key 값을 나타내는 문자열
표 5의 키(key)는 스트리밍 클라이언트가 해당 타임머신 제어 세션에 대해 부여한 고유 값이며, 클라이언트(플레이어)에서 인증을 위해 스트리밍 클라이언트로 전송하는 인증 키(authKey)와는 다른 키(다른 값)이다.
인증 요청(/auth)이 실패하는 경우 스트리밍 클라이언트는 별도의 메시지 내용 없이 "401 Unauthorized" 응답코드를 플레이어로 전송할 수 있다.
인증 요청(/auth)이 성공하는 경우, 스트리밍 클라이언트의 응답 메시지에는 {"key": "12345678"}와 같이 키의 값이 포함될 수 있다. "12345678"은 문자열일 수 있다. 키를 수신한 플레이어의 이후 요청은 일례로 아래 표 6과 같은 형태가 될 수 있다.
/maxshift?ref=rtmp%3A%2F%2F127.0.0.1%3A7085%2Flive%3Fcid%3D49&k=12345678
4.3. 제공 가능한 최대 타임머신 시간 정보 요청 및 HTTP 세션 유지
플레이어는 정보 획득 및 세션 유지 요청(/maxshift)을 통해 스트리밍 클라이언트에서 제공할 수 있는 타임머신 최대 시간 정보를 가져올 수 있다. 스트리밍 클라이언트는 현재 상태만 응답할 수 있고, 스트리밍 클라이언트의 상태 변화(타임머신 기능 온(on) 상태/타임머신 기능 오프(off) 상태)는 없다. 이미 설명한 바와 같이 /maxshift는 재생 요청(/play)에 대한 성공 응답을 받은 이후, 제어 세션을 유지하기 위한 언제든 호출될 수 있다.
정보 획득 및 세션 유지 요청(/maxshift)은 아래 표 7과 같이 정의될 수 있다.
요청 파라미터
/maxshift ref=<대표 URL>&k=<key>

ref: 플레이어에서 채널에 접속하기 위해 사용하는 URL(URL encoding 적용).
k: 인증 요청(/auth)의 성공 응답에 포함되어 플레이어로 전송된 키.
정보 획득 및 세션 유지 요청(/maxshift)의 성공 시에 스트리밍 클라이언트가 전송하는 응답이 포함할 수 있는 정보는 아래 표 8과 같이 정의될 수 있다.
Key 설명
result 처리 결과 success
mshift 최대 시프트 가능 시간 0보다 큰 정수이며, 단위는 밀리초(msec)
ashift 현재 시프트 가능한 시간 0보다 큰 정수이며, 단위는 밀리초(msec)
cshift 스트리밍 클라이언트에서 시프트 해서 재생하고 있는 시간 0보다 큰 정수이며, 단위는 밀리초(msec)
onair 채널이 방송 중인지의 여부 0 혹은 1 (0 : 방송 중이 아님, 1: 방송 중)
timemachine 타임머신을 사용 중인지 여부 "on" 혹은 "off"
예를 들어, 최대 시프트 가능 시간이 5분이고, 스트리밍 클라이언트에서 3분 시프트된 데이터를 전송하고 있는 경우, 정보 획득 및 세션 유지 요청(/maxshift)의 성공에 따른 스트리밍 클라이언트의 응답은 아래 내용을 포함할 수 있다.
{"result":"success", "mshift":300000, "ashift":200000, "cshift":180000}
또한, 정보 획득 및 세션 유지 요청(/maxshift)의 실패 시에 스트리밍 클라이언트가 전송하는 응답이 포함할 수 있는 정보는 아래 표 9와 같이 정의될 수 있다.
Key 설명
result 처리 결과 fail
error 에러 코드 에러 발생 정보에 대한 코드값
예를 들어, 정보 획득 및 세션 유지 요청(/maxshift)이 실패했고, 에러 코드가 3인 경우, 스트리밍 클라이언트의 응답은 아래 내용을 포함할 수 있다.
{"result":"fail", "error":3}
4.4. 타임머신 활성화 상태 변경
사용자가 임의로 타임머신 기능의 사용 상태를 변경할 수도 있다. 예를 들어 타임머신 기능을 사용 가능한 실시간 중계 방송을 보는 도중에 디스크의 용량 문제가 발생하였을 때, 사용자는 임의로 타임머신 기능을 비활성화하여 더 이상 타임머신 정보를 기록하지 않도록 할 수 있다. 타임머신 기능이 비활성화된 경우 사용자는 더 이상 타임머신 기능을 사용할 수 없다. 그러나, 플레이어에서는 정보 획득 및 세션 유지 요청(/maxshift)을 지속적으로 호출할 수 있다.
타임머신 기능에 대한 상태 변경 요청(/change)은 아래 표 10과 같이 정의될 수 있다.
요청 파라미터
/change ref=<대표 URL>&k=<key>&enable=<0 또는 1>

ref: 플레이어에서 채널에 접속하기 위해 사용하는 URL(URL encoding 적용).
k: 인증 요청(/auth)의 성공 응답에 포함되어 플레이어로 전송된 키.
Enable: 타임머신 기능 사용 여부(0: 타임머신 기능을 사용하지 않음, 1: 타임머신 기능을 사용함).
상태 변경 요청(/change)이 성공하는 경우, 스트리밍 클라이언트는 별도의 메시지 내용 없이 200 OK와 같은 응답코드를 플레이어로 전송할 수 있다. 또한, 상태 변경 요청(/change)이 실패하는 경우, 스트리밍 클라이언트는 별도의 메시지 내용 없이 500 Internal Server Error와 같은 응답코드를 플레이어로 전송할 수 있다.
4.5. 재생 요청하기
재생 요청(/play)은 플레이어가 스트리밍 클라이언트에 라이브 스트림 데이터의 재생 시작을 요청할 때 전송될 수 있다. 스트리밍 클라이언트에서 재생 요청(/play)을 수신하면, 스트리밍 클라이언트는 해당 방송(재생 요청(/play)에 포함된 URL에 대응하는 방송)의 최신 라이브 스트림 데이터를 플레이어로 전송하여 해당 방송이 재생되도록 할 수 있다. 사용자가 채널을 바꾼 경우에도 재생 요청(/play)이 채널이 바뀌었음을 스트리밍 클라이언트로 알리기 위해 사용될 수 있으며, 스트리밍 클라이언트는 바뀐 채널의 방송(새로운 재생 요청(/play)의 URL에 대응하는 방송)의 최신 라이브 스트림 데이터를 플레이어로 전송하여 해당 방송이 재생되도록 할 수 있다. 방송 키는 라이브 스트리밍 서비스의 플랫폼에서 발급한 방송 키일 수 있다. 타임머신 기능을 사용한 재생을 위해서도 재생 요청(/play)이 스트리밍 클라이언트로 전송될 수 있다.
재생 요청(/play)은 아래 표 11과 같이 정의될 수 있다.
요청 파라미터
/play ref=<대표 URL>&k=<key>&programKey=<방송 키>&useTM=<0 또는 1>&shiftTime=<처음 재생할 위치>&pauseStart=<0 또는 1>

((필수 파라미터))
ref: 플레이어에서 채널에 접속하기 위해 사용하는 URL(URL encoding 적용).
k: 인증 요청(/auth)의 성공 응답에 포함되어 플레이어로 전송된 키.
programKey: 라이브 스트리밍 서비스의 플랫폼에서 발급한 방송 키.

((옵션 파라미터))
useTM: 타임머신 기능의 사용 여부. 이 파라미터가 명시되지 않은 경우, 타임머신 기능을 사용하는 것을 기본으로 함(0: 타임머신 기능을 사용하지 않음, 1: 타임머신 기능을 사용함).
shiftTime: 처음 재생을 시작할 위치(값이 음수일 경우 가장 오래된 영상부터 재생을 시작함). 이 값이 없으면 최신 위치에서 재생하는 것을 기본으로 함.
pauseStart: 채널을 일시 중지(pause) 상태로 시작할지 여부. 일시 중지 상태에서 화질 전환을 하거나, 채널을 일시 중지 상태로 시작하고자 하는 경우에 사용할 수 있음(0, 일반적인 재생 모드로 시작, 1: 일시 중지 상태로 시작).
재생 요청(/play)에 대한 성공 시 응답이 포함할 수 있는 정보는 아래 표 12와 같이 정의될 수 있다.
Key 설명
result 처리 결과 success
mshift 최대 시프트 가능 시간 0보다 큰 정수이며, 단위는 밀리초(msec)
ashift 현재 시프트 가능한 시간 0보다 큰 정수이며, 단위는 밀리초(msec)
cshift 스트리밍 클라이언트에서 시프트 해서 재생하고 있는 시간 0보다 큰 정수이며, 단위는 밀리초(msec)
onair 채널이 방송 중인지의 여부 0 혹은 1 (0 : 방송 중이 아님, 1: 방송 중)
timemachine 타임머신을 사용 중인지 여부 "on" 혹은 "off"
재생 요청(/play)에 대한 실패 시 응답이 포함할 수 있는 정보는 아래 표 13과 같이 정의될 수 있다.
Key 설명
result 처리 결과 fail
error 에러 코드 에러 발생 정보에 대한 코드값
가장 처음으로 라이브 스트리밍을 시작할 때 플레이어가 재생 요청(/play)을 전송하면, 최대 시프트 가능 시간에 대한 정보를 얻기 위한 동작으로 인해 응답이 약간 늦어질 수 있다. 재생 요청(/play)을 전송하지 않고, 스트리밍 프로토콜을 이용하여 재생 요청을 보내는 경우 스트리밍 클라이언트는 타임머신 기능을 사용하지 않는 방송으로 간주하여 항상 최신 라이브 방송을 재생할 수 있고, 이후에 들어오는 타임머신 제어 요청은 모두 무시할 수 있다.
4.6. 이전에 멈춘 위치에서 재생하기
스트리밍 클라이언트는 일시 중지 요청(/pause)이 수신되면, 현재까지 재생한 위치(또는 현재까지 플레이어로 전송한 위치)를 기억(저장 및 관리)할 수 있다. 이 위치 정보는 스트리밍 클라이언트가 종료되거나 또는 타임머신 제어 세션이 끊어지지 않는 한 계속 유지될 수 있다. 재개 요청(/resume)은 스트리밍 클라이언트가 기억하고 있는 위치부터 재생을 시작하도록 요청하기 위해 플레이어에서 스트리밍 클라이언트로 전송될 수 있다.
재개 요청(/resume)은 아래 표 14와 같이 정의될 수 있다.
요청 파라미터
/resume ref=<대표 URL>&k=<key>

ref: 플레이어에서 채널에 접속하기 위해 사용하는 URL(URL encoding 적용).
k: 인증 요청(/auth)의 성공 응답에 포함되어 플레이어로 전송된 키.
재개 요청(/resume)에 대한 성공 시 응답이 포함할 수 있는 정보는 아래 표 15와 같이 정의될 수 있다.
Key 설명
result 처리 결과 success
mshift 최대 시프트 가능 시간 0보다 큰 정수이며, 단위는 밀리초(msec)
ashift 현재 시프트 가능한 시간 0보다 큰 정수이며, 단위는 밀리초(msec)
cshift 스트리밍 클라이언트에서 시프트 해서 재생하고 있는 시간 0보다 큰 정수이며, 단위는 밀리초(msec)
onair 채널이 방송 중인지의 여부 0 혹은 1 (0 : 방송 중이 아님, 1: 방송 중)
timemachine 타임머신을 사용 중인지 여부 "on" 혹은 "off"
재개 요청(/resume)에 대한 실패 시 응답이 포함할 수 있는 정보는 아래 표 16과 같이 정의될 수 있다.
Key 설명
result 처리 결과 fail
error 에러 코드 에러 발생 정보에 대한 코드값
4.7. 재생 위치 이동하기
타임머신 기능을 사용하기 위해 스트리밍 클라이언트에 현재 재생 위치를 이동하도록 요청하기 위해 탐색 요청(/seek)이 사용될 수 있다. 탐색 요청 메시지는 재생이나 일시 중지 상태에 관계없이 전송 가능하며, 탐색 요청(/seek)의 수신 후에도 재생이나 일시 중지 상태는 동일하게 유지될 수 있다. 다시 말해, 스트리밍 클라이언트는 재생 도중에 탐색 요청(/seek)을 수신한 경우, 재생 위치를 이동한 후에 이동한 위치에서부터 계속 재생을 할 수 있다. 또한, 스트리밍 클라이언트는 일시 중지 상태에서 탐색 요청(/seek)을 수신한 경우, 재생 위치를 이동한 후에 일시 중지 상태를 계속 유지할 수 있다. 타임머신 기능을 이용한 재생을 시작한 이후의 재생 위치 변경은 탐색 요청(/seek)을 통해 이루어질 수 있다.
탐색 요청(/seek)은 아래 표 17과 같이 정의될 수 있다.
요청 파라미터
/seek ref=<대표 URL>&k=<key>&shift=<과거로 이동할 값(단위:밀리초(msec))>

ref: 플레이어에서 채널에 접속하기 위해 사용하는 URL(URL encoding 적용).
k: 인증 요청(/auth)의 성공 응답에 포함되어 플레이어로 전송된 키.
Shift: 최신 라이브 재생을 기준으로 얼마나 과거로 이동하는지를 나타내는 값으로, 0은 가장 최신의 라이브 스트림 데이터를 의미할 수 있음(이 값이 음수일 경우 가장 오래된 영상부터 재생을 시작함).

예시) 5분 과거 데이터로 이동하고자 할 경우,
/seek?ref=<대표 URL>&k=<key>&shift=300000
최신 라이브 스트림 데이터로 이동하고자 하는 경우,
/seek?ref=<대표 URL>&k=<key>&shift=0
탐색 요청(/seek)에 대한 성공 시 응답이 포함할 수 있는 정보는 아래 표 18과 같이 정의될 수 있다.
Key 설명
result 처리 결과 success
mshift 최대 시프트 가능 시간 0보다 큰 정수이며, 단위는 밀리초(msec)
ashift 현재 시프트 가능한 시간 0보다 큰 정수이며, 단위는 밀리초(msec)
cshift 스트리밍 클라이언트에서 시프트 해서 재생하고 있는 시간 0보다 큰 정수이며, 단위는 밀리초(msec)
onair 채널이 방송 중인지의 여부 0 혹은 1 (0 : 방송 중이 아님, 1: 방송 중)
timemachine 타임머신을 사용 중인지 여부 "on" 혹은 "off"
탐색 요청(/seek)에 대한 실패 시 응답이 포함할 수 있는 정보는 아래 표 19와 같이 정의될 수 있다.
Key 설명
result 처리 결과 fail
error 에러 코드 에러 발생 정보에 대한 코드값
4.8. 일시 중지
일시 중지 요청(/pause)은 현재 스트리밍 클라이언트가 전송하고 있는 위치에서 재생을 일시 중지하기 위해 이용될 수 있다. 스트리밍 클라이언트는 타임머신 기능을 위한 제어 세션이 종료되지 않는 한 이 위치를 기억하고, 재개 요청(/resume)에 따라 기억된 위치에서부터 다시 재생을 시작할 수 있다.
일시 중지 요청(/pause)은 아래 표 20과 같이 정의될 수 있다.
요청 파라미터
/pause ref=<대표 URL>&k=<key>

ref: 플레이어에서 채널에 접속하기 위해 사용하는 URL(URL encoding 적용).
k: 인증 요청(/auth)의 성공 응답에 포함되어 플레이어로 전송된 키.
일시 중지 요청(/pause)에 대한 성공 시 응답이 포함할 수 있는 정보는 아래 표 21과 같이 정의될 수 있다.
Key 설명
result 처리 결과 success
mshift 최대 시프트 가능 시간 0보다 큰 정수이며, 단위는 밀리초(msec)
ashift 현재 시프트 가능한 시간 0보다 큰 정수이며, 단위는 밀리초(msec)
cshift 스트리밍 클라이언트에서 시프트 해서 재생하고 있는 시간 0보다 큰 정수이며, 단위는 밀리초(msec)
onair 채널이 방송 중인지의 여부 0 혹은 1 (0 : 방송 중이 아님, 1: 방송 중)
timemachine 타임머신을 사용 중인지 여부 "on" 혹은 "off"
일시 중지 요청(/pause)에 대한 실패 시 응답이 포함할 수 있는 정보는 아래 표 22와 같이 정의될 수 있다.
Key 설명
result 처리 결과 fail
error 에러 코드 에러 발생 정보에 대한 코드값
4.9. 세션 종료
플레이어를 종료하는 경우, 스트리밍 클라이언트에서 모든 정보를 삭제하도록 재생 완료 요청(/stop)이 이용될 수 있다.
재생 완료 요청(/stop)은 아래 표 23과 같이 정의될 수 있다.
요청 파라미터
/stop ref=<대표 URL>&k=<key>

ref: 플레이어에서 채널에 접속하기 위해 사용하는 URL(URL encoding 적용).
k: 인증 요청(/auth)의 성공 응답에 포함되어 플레이어로 전송된 키.
스트리밍 클라이언트는 재생 완료 요청(/stop)에 따른 성공/실패와 상관 없이 내용없는 200 OK 응답코드를 플레이어로 전송할 수 있다.
도 5는 본 발명의 일실시예에 있어서, 시프트 값들을 설명하기 위한 예를 도시한 도면이다. 도 5는 방송의 타임머신 시간으로서 최대 시프트 가능 시간이 5분으로 설정되고, 방송이 시작되고 4분이 지난 상태에서 사용자가 1분 전 영상을 보고 있는 경우에 타임머신 제어 요청의 결과값으로 전달되는 최대 시프트 가능 시간(mshift), 현재 시프트 가능 시간(ashift) 및 현재 시프트 시간(cshift)간의 관계를 나타내고 있다.
최대 시프트 가능 시간(mshift)는 방송에 대해 설정된 타임머신 가능 시간으로 본 예시에서는 5분으로 고정될 수 있다. 이때 최대 시프트 가능 시간(mshift)이 5분이지만, 방송이 시작된 후 경과 시간이 4분으로 5분보다 짧기 때문에 4분 이상의 타임머신 기능은 제공될 수 없다. 이처럼 최대 시프트 가능 시간과는 별도로 현 시점에서의 시프트 가능 시간을 알리기 위해 현재 시프트 가능 시간(ashift)가 이용될 수 있다. 다시 말해 현재 시프트 가능 시간(ashift)는 스트리밍 클라이언트가 현재 제공할 수 있는 타임머신 가능 시간의 최대 시간을 나타낼 수 있고, 현재 시프트 가능 시간(ashift)보다 더 과거의 방송을 제공할 수는 없다. 만약, 방송 시작 후의 경과 시간이 타임머신 가능 시간보다 커지는 경우, 최대 시프트 가능 시간(mshift)과 현재 시프트 가능 시간(ashift)의 값은 동일해진다. 또한, 현재 시프트 시간(cshift)이 1분이라는 것은 사용자가 최신 라이브에 비해 1분 전 영상을 보고 있음을 나타낼 수 있다. 현재 시프트 시간(cshift)은 최신 라이브 방송이 진행중이고 사용자가 재생 위치를 이동하지 않는 한 바뀌지 않는다. 다시 말해 도 5에서 사용자는 실제 방송 시점과 계속 1분의 시차를 두고 영상을 보게 된다.
6. 방송 종료 처리
생중계 중인 방송이 종료되었을 때, 사용자가 타임머신을 이용하여 과거의 영상을 보고 있는 상태에서 플레이어가 즉시 방송 종료 처리를 할 경우, 사용자는 마지막 중계 영상을 보지 못하게 된다. 예를 들어 사용자가 도 5에서 실제 방송 시점과 1분의 시차를 두고 영상을 보고 있는 상태에서 생중계 중인 방송이 종료됨에 따라 플레이어가 즉시 방송 종료 처리를 한다면, 사용자는 마지막 1분간의 영상을 보지 못하게 된다. 따라서, 실제 방송이 종료된 이후에도 일정 시간 방송 종료 처리를 지연시킬 필요가 있다.
타임머신 세션에서는 타임머신 제어 요청에 대한 응답에 "onair"를 포함하여, "onair"의 값과 "cshift"의 조합으로 방송 종료 시점에 대한 정보를 제공할 수 있다.
- 방송 진행 중 타임머신 정보
방송 진행 중의 "onair" 값은 1이고, 사용자가 타임머신을 이용하여 시프트된 라이브 영상을 보고 있을 경우, 'cshift' 값은 사용자가 과거로 이동한 시간을 나타내며, 0 보다 큰 값을 반환하게 된다. 또한, 방송 중 'cshift' 값은 사용자가 과거로 이동한 시간을 고정값으로 반환한다.
- 방송 종료 시 타임머신 정보
방송이 종료되었을 경우 'onair' 값은 0이고, 재생이 진행될수록 'cshift' 값은 점점 0으로 줄어들게 된다. 이 값이 0이 되면 방송이 종료된 시점의 영상까지 전송이 완료되었음을 의미한다. 따라서, 'onair' 값과 'cshift' 값이 동시에 0이면 플레이어에서 더 이상 재생할 영상이 없음을 의미하므로 재생을 중단할 수 있다.
예를 들어, 사용자가 최신 라이브 영상을 보고 있었다면 'cshift' 값은 0이 반환되므로, 'onair' 값이 0으로 바뀌는 시점에 방송을 즉시 종료할 수 있다. 한편, 사용자가 1분 시프트(cshift 값이 60000 밀리초) 된 영상을 보고 있었다면, 'onair'가 0으로 바뀌는 시점부터 'cshift' 값은 60000에서 실시간으로 감소하게 된다. 이때, 1분이 지나면 'cshift' 는 0이 되며, 플레이어는 방송을 종료할 수 있다.
도 6은 본 발명의 일실시예에 있어서, 최초 재생 요청 및 재생 완료 요청을 처리하는 과정의 예를 도시한 흐름도이다. 도 6은 플레이어(610)와 스트리밍 클라이언트(620)간의 메시지 흐름을 나타내고 있다. 이때, 스트리밍 클라이언트(620)는 도 6에 도시된 바와 같이, 제어 세션(621), RTMP 세션(622) 및 엔진(623)을 포함할 수 있다. 제어 세션(621)은 타임머신 기능을 제공하기 위한 타임머신 제어 프로토콜을 이용하여 플레이어(610)와 스트리밍 클라이언트(620)간에 통신하기 위해 설정된 세션일 수 있고, RTMP 세션(622)은 실제 스트리밍 서비스를 위한 스트리밍 프로토콜을 이용하여 플레이어(610)와 스트리밍 클라이언트(620)간에 통신하기 위해 설정된 세션일 수 있다. 실질적으로 제어 세션(621)은 제어 세션(621)을 통해 타임머신 기능을 제공하기 위한 스트리밍 클라이언트(620)의 소프트웨어적 기능(function)일 수 있고, RTMP 세션(622)은 스트리밍 서비스를 제공하기 위한 스트리밍 클라이언트(620)의 소프트웨어적 기능일 수 있다.
1. /auth?authKey=<인증 키> 과정은 플레이어(610)가 제어 세션(621)을 통해 스트리밍 클라이언트(620)으로 인증 요청(/auth)을 전송하는 과정일 수 있다. 이때, 인증 요청(/auth)은 인증 키(authKey)를 포함할 수 있다.
2. 200 OK 과정은 스트리밍 클라이언트(620)가 제어 세션(621)을 통해 플레이어(610)로 인증 요청(/auth)에 대한 응답을 전송하는 과정일 수 있다. 스트리밍 클라이언트(620)는 인증 요청(/auth)에 포함된 인증 키(authKey)를 이용하여 플레이어(610)를 인증할 수 있다. 플레이어(610)의 인증에 성공한 경우, 스트리밍 클라이언트(620)는 성공 응답(200 OK 응답코드)을 플레이어(610)로 전송할 수 있다. 만약, 플레이어(610)의 인증에 실패한 경우, 스트리밍 클라이언트(620)는 실패 응답(401 Unauthorized 응답코드)을 플레이어(610)로 전송할 수 있다.
3. /play?programKey=<방송 키> 과정은 플레이어(610)가 제어 세션(621)을 통해 스트리밍 클라이언트(620)으로 재생 요청(/play)을 전송하는 과정일 수 있다. 방송 키(programKey)에 대해서는 이미 설명하였다. 재생 요청(/play)이 포함하는 URL은 생략되었다.
4. Play<url, progID > 과정은 제어 세션(621)을 통해 수신된 재생 요청(/play)의 처리를 위해 스트리밍 클라이언트(620)의 내부적으로 엔진(623)으로 재생을 요청하는 과정일 수 있다. "url"은 재생 요청(/play)이 포함하는 URL에 대응할 수 있고, "progID"는 재생 요청(/play)이 포함하는 방송 키(programKey)에 대응할 수 있다.
5. Create Channel 과정은 엔진(623)에서 요청된 방송을 위한 채널을 생성하는 과정일 수 있다. 예를 들어, 엔진(623)은 요청된 "url"에 접근하여 "progID"에 대응하는 라이브 스트림 데이터를 요청하도록 플레이어(610)와 스트리밍 클라이언트(620)를 포함하는 전자 기기를 제어할 수 있고, 라이브 스트림 데이터를 위한 채널을 생성할 수 있다.
6. ret:< capacity_time, seekable _time> 과정은 엔진(623)이 제어 세션(621)으로 해당 라이브 스트림 데이터에 대한 최대 시프트 가능 시간(capacity_time)과 현재 시프트 가능 시간(seekable _time)을 전달하는 과정일 수 있다. "capacity _time"과 "seekable _time"은 제어 세션(621)에서 각각 "mshift"와 "ashift"로서 처리될 수 있다. 도 6에서는 생략되었으나 "cshift"에 대한 정보 역시 함께 전달될 수 있다.
7. 200 OK 과정은 스트리밍 클라이언트(620)가 제어 세션(621)을 통해 재생 요청(/play)에 대한 성공 응답을 전송하는 과정일 수 있다. 이때, 성공 응답에는 "mshift"와 "ashift"(그리고 "cshift")가 포함되어 전송될 수 있다.
8. Play<url> 과정은 플레이어(610)가 스트리밍 프로토콜을 이용하여 RTMP 세선(622)을 통해 스트리밍 클라이언트(620)로 방송의 재생을 요청하는 과정일 수 있다.
9. Play<url> 과정은 RTMP 세션(622)을 통해 방송의 재생에 대한 요청이 엔진(623)으로 전달되는 과정일 수 있다.
10. Send Media Data 과정 및 11. Send Media Data 과정은 엔진(623)이 RTMP 세선(622)을 통해 실제 스트리밍을 위한 데이터를 플레이어(620)로 전송하는 과정일 수 있다. 플레이어(620)는 수신된 데이터를 이용하여 방송을 재생할 수 있고, 재생된 방송이 전자 기기의 디스플레이를 통해 표시되도록 전자 기기를 제어할 수 있다.
12. /stop 과정은 플레이어(610)가 제어 세션(621)을 통해 스트리밍 클라이언트(620)로 재생 완료 요청(/stop)을 전송하는 과정일 수 있다.
13. Cleanup Context 과정은 스트리밍 클라이언트(630)가 해당 세션을 위한 타임머신 정보를 모두 삭제하는 과정일 수 있다.
14. 200 OK 과정은 스트리밍 클라이언트(620)가 제어 세션(621)을 통해 플레이어(610)로 재생 완료 요청(/stop)에 대한 성공 응답을 전송하는 과정일 수 있다.
15. STOP 과정은 엔진(623)으로 재생 완료를 요청하는 과정일 수 있다.
16. Close Session 과정은 플레이어(610)가 RTMP 세션(622)을 통해 스트리밍 클라이언트(620)로 실질적인 세션의 종료를 요청하는 과정일 수 있다.
17. Close 과정은 스트리밍 클라이언트(620)가 스트리밍 프로토콜에 따라 엔진(623)으로 종료를 지시하는 과정일 수 있다.
18. Close Channel 과정은 엔진(623)이 채널을 종료하는 과정일 수 있다.
이처럼 타임머신 제어 프로토콜과 스트리밍 프로토콜이 완전히 분리되어 처리되기 때문에, 스트리밍 클라이언트가 플레이어(610)가 지원하는 스트리밍 프로토콜과는 상관없이 타임머신 제어 프로토콜을 이용하여 타임머신 기능을 제공하는 것이 가능해진다.
도 7은 본 발명의 일실시예에 있어서, 재생 중에 탐색 요청을 처리하는 과정의 예를 도시한 흐름도이다.
1. /seek?shift=<이동할 시간> 과정은 플레이어(610)가 스트리밍 클라이언트(620)로 탐색 요청(/seek)을 전송하는 과정일 수 있다.
2. Seek:< url, time> 과정은 스트리밍 클라이언트(620)가 제어 세션(621)을 통해 엔진(623)에게 실질적인 탐색을 요청하는 과정일 수 있다.
3. ret:< seek_time> 과정은 엔진(623)이 탐색 결과를 제공하는 과정일 수 있다. 여기서 "seek_time"은 "cshift"에 대응될 수 있다.
4. 200 OK 과정은 스트리밍 클라이언트(620)가 제어 세션(621)을 통해 탐색 요청(/seek)에 대한 성공 응답을 플레이어(610)로 전송하는 과정일 수 있다. 이때, "seek_time"에 대응하는 "cshift"가 성공 응답에 포함되어 플레이어(610)로 전송될 수 있다.
5. Reset Media Data 과정은 엔진(623)이 RTMP 세션(622)을 통해 재생 위치가 이동된 부분부터 재생하기 위해 스트림 데이터를 재설정하는 과정일 수 있다.
6. Send Media Data 과정 및 7. Send Media Data 과정은 엔진(623)이 재설정된 재생 위치부터 데이터를 플레이어(610)로 전송하는 과정일 수 있다.
이러한 도 7의 실시예에서도 이처럼 타임머신 제어 프로토콜과 스트리밍 프로토콜이 완전히 분리되어 처리됨을 알 수 있다.
도 8은 본 발명의 일실시예에 있어서, 일시 중지 요청 및 재개 요청을 처리하는 과정의 예를 도시한 흐름도이다.
1. /pause 과정은 플레이어(610)가 재생 중인 방송에 대한 일시 중지 요청(/pause)을 제어 세션(621)을 통해 스트리밍 클라이언트(620)로 전송하는 과정일 수 있다.
2. Pause 과정은 스트리밍 클라이언트(620)가 엔진(623)으로 일시 중지를 지시하는 과정일 수 있다.
3. ret:<cur_time> 과정은 엔진(623)이 일시 중지 요청(/pause)에 대한 처리 결과를 제공하는 과정일 수 있다. 여기서 "cur_time"은 현재 일시 중지된 재생 위치를 시간으로 표시한 값일 수 있다. 제어 세션은 "cur_time"을 저장 및 관리할 수 있다.
4. 200 OK는 스트리밍 클라이언트(620)가 일시 중지 요청(/pause)에 대한 성공 응답을 제어 세션(621)을 통해 플레이어(610)로 전송하는 과정일 수 있다.
5. Close Channel 과정은 엔진(623)이 채널을 종료하는 과정일 수 있다. 채널이 연결되어 있는 경우 일시 중지 상태에서도 데이터가 지속적으로 수신될 수 있고, 이는 모바일에서 네트워크 데이터 사용량에 영향을 미칠 수 있다. 따라서 본 실시예에서는 채널을 종료하여 데이터의 수신을 막을 수 있다.
6. Pause 과정은 플레이어(610)가 RTMP 세션(622)을 통해 스트리밍 프로토콜에 따라 스트리밍 클라이언트로 일시 중지를 요청하는 과정일 수 있다.
7. /resume 과정은 플레이어(610)가 일시 정지 중인 방송에 대해 재개 요청(/resume)을 제어 세션(621)을 통해 스트리밍 클라이언트(620)로 전송하는 과정일 수 있다.
8. Resume:< url, time> 과정은 제어 세션(621)에서 엔진(623)으로 "cur_time"에서부터 재생을 재개할 것을 요청하는 과정일 수 있다. "url"은 일시 중지가 요청된 방송의 URL에 대응될 수 있고, "time"은 제어 세션(621)이 저장 및 관리하는 "cur_time"에 대응될 수 있다.
9. Create Channel 과정은 엔진(623)이 방송을 다시 재개하기 위해 채널을 생성하는 과정일 수 있다.
10. ret:< resume_time> 과정은 엔진(623)이 재개 요청(/resume)에 대한 처리 결과를 제공하는 과정일 수 있다. 여기서 "resume_time"은 방송이 재개된 재생 위치에 대한 값을 나타낼 수 있다.
11. 200 OK 과정은 스트리밍 클라이언트(620)가 제어 세션(621)을 통해 재개 요청(/resume)에 대한 성공 응답을 플레이어(610)로 전송하는 과정일 수 있다. "resume _time"는 "cshift"에 대응될 수 있다.
12. Play<url> 과정은 플레이어(610)가 스트리밍 프로토콜을 이용하여 RTMP 세션(622)을 통해 스트리밍 클라이언트(620)로 방송의 재생을 요청하는 과정일 수 있다. 또한, 13. Create Channel 과정은 RTMP 세션(622)이 엔진(623)으로 채널을 생성할 것을 요청하는 과정일 수 있다.
도 9는 본 발명의 일실시예에 있어서, 딜리버리 서버의 내부 구성을 설명하기 위한 도면이다. 딜리버리 서버(330)는 앞서 설명한 바와 같이 패킷타이징 서버(320)로부터 피스들을 수신하여 피어들(스트리밍 클라이언트(351)를 포함하는 전자 기기들)로 전달할 수 있다. 또한, 딜리버리 서버(330)는 프로그램 관리 서버(950)로부터 프로그램 스케쥴을 수신하고, 수신한 프로그램 스케쥴에 따라 동작할 수 있다. 이를 위해, 딜리버리 서버(330)는 프로그램 모니터(910), 프로그램 매니저(920) 및 스트림 매니저(930)를 포함할 수 있다.
프로그램 모니터(910)는 프로그램 관리 서버(950)로부터 방송 프로그램에 대한 스케쥴 정보로서 프로그램 스케쥴을 수집할 수 있다.
프로그램 매니저(920)는 프로그램 스케쥴을 분석하여 특정 채널 또는 특정 방송 프로그램에 대해 타임머신 버퍼의 동작 여부를 결정할 수 있다.
스트림 매니저(930)는 프로그램 매니저(920)의 분석 결과에 기반하여 특정 채널 또는 특정 방송 프로그램에 대한 타임머신 버퍼를 관리할 수 있다.
예를 들어, 프로그램 매니저(920)는 현재 생중계 중인 방송 프로그램 A에 대한 타임머신 버퍼 B를 관리할 것을 스트림 매니저(930)로 요청할 수 있다. 이때, 스트림 매니저(930)는 패킷타이징 서버(320)가 전송하는 피스들 중 방송 프로그램 A에 대한 피스를 타임머신 버퍼 B에 저장하여 관리할 수 있다.
따라서 이러한 타임머신 버퍼 B에 저장된 피스들을 이용하여 스트리밍 클라이언트(351)는 방송 프로그램 A에 대한 타임머신 기능을 안정적으로 제공할 수 있게 된다. 또한, 딜리버리 서버(330) 관점에서는 모든 방송 프로그램이나 모든 채널들에 대한 타임머신 버퍼를 관리할 필요 없이, 현재 생중계 중이거나 타임머신 기능을 제공하고자 하는 방송 프로그램에 대해서만 타임머신 버퍼를 활용하여 보다 효율적으로 라이브 스트림 데이터를 관리할 수 있게 된다.
또한, 프로그램 매니저(920)에서 방송 프로그램에 대한 타임머신 버퍼의 동작 여부를 결정하고, 타임머신 버퍼를 사용하는 방송 프로그램에 대한 정보를 스트리밍 클라이언트(351)로 전송할 수 있다. 예를 들어, 프로그램 매니저(920)는 앞서 설명한 방송 키(programKey)를 스트리밍 클라이언트(351)로 전송하여 타임머신 버퍼를 활용 중인 방송 프로그램에 대한 정보를 사용자들에게 제공할 수 있게 된다.
도 10은 본 발명의 일실시예에 있어서, 타임머신 버퍼의 활용 예를 도시한 도면이다. 도 10의 타임머신 버퍼들(1010 및 1020)은 하나의 타임머신 버퍼에서 복수의 프로그램들(프로그램 1, 2, 3)에 대한 스트림 데이터를 저장 및 관리하는 예를 나타내고 있다. 이때, 딜리버리 서버(330)는 하나의 타임머신 버퍼를 위한 스트림 데이터(피스들)를 앞서 설명한 프로그램 스케쥴에 기반하여 방송 프로그램 별로, 그리고 스트림별로 구분하여 저장 및 관리할 수 있다. 예를 들어 특정 방송 프로그램의 스트림 데이터들이 해당 방송 프로그램의 방송 키(programKey)에 매칭되어 저장될 수 있다.
예를 들어, 일반적인 경우의 타임머신 버퍼(1010)는 프로그램 스케쥴에 기반하여(일례로 방송 시간 등) 프로그램 1을 위한 스트림 데이터와 프로그램 2를 위한 스트림 데이터를 구분할 수 있다. 따라서 일반적인 경우의 타임머신 버퍼(1010) 내의 스트림 데이터들 중 어느 스트림 데이터들이 프로그램 2에 대한 스트림 데이터들인지를 구분할 수 있고, 따라서 타임머신 기능을 이용하여 프로그램 2에 대해 과거의 어느 시점까지 재생 위치를 이동할 수 있는지를 명확히 파악할 수 있게 된다.
또한, 네트워크 상황에 따라 스트림 연결이 끊기거나 하는 경우, 예외적인 경우의 타임머신 버퍼(1020)와 같이 하나의 방송 프로그램에 대한 스트림 데이터가 복수의 스트림을 통해 제공되는 경우가 존재하게 된다. 예를 들어, 예외적인 경우의 타임머신 버퍼(1020)에서 프로그램 2는 재생 위치에 따라 각각 서로 다른 스트림인 스트림 1, 스트림 2 및 스트림 3을 통해 제공될 수 있다. 여기서 서로 다른 스트림은 서로 다른 채널에 대응될 수 있다. 따라서 프로그램 2에 대한 타임머신 기능에 따라 스트림 데이터를 제공할 때, 재생 위치에 따라 서로 다른 스트림으로 스트림 데이터를 제공할 수 있어야 한다. 본 실시예에 따른 타임머신 버퍼들(1010 및 1020)은 스트림 데이터(피스들)를 앞서 설명한 프로그램 스케쥴에 기반하여 방송 프로그램 별로, 그리고 스트림별로 구분하여 저장 및 관리할 수 있기 때문에 방송 프로그램별로 그리고 스트림별로 스트림 데이터를 정확하게 특정지을 수 있게 된다.
스트리밍 클라이언트(351)의 관점에서는 딜리버리 서버(330)로 요청하고자 하는 특정 방송 프로그램의 데이터 스트림 또는 특정 채널의 프로그램에 대한 데이터 스트림을 하나의 타임머신 버퍼로부터 정확하게 수신할 수 있게 된다.
도 11은 본 발명의 일실시예에 있어서, 타임머신 기능을 이용하여 탐색을 진행하는 경우 미리보기 기능을 제공하는 화면의 예를 도시한 도면이다. 도 11은 라이브 스트리밍 서비스를 위한 디스플레이 화면(1100)의 예를 도시하고 있다. 디스플레이 화면(1100)에는 스트리밍되는 방송 프로그램에 대한 영상 화면(1110)이 제공될 수 있다. 디스플레이 화면(1100)의 바(1120)는 타임머신 기능에서 재생 위치를 지정하기 위한 사용자 인터페이스일 수 있다. 사용자가 바(1120)에서 특정 위치를 선택(일례로, PC 환경에서 바의 특정 위치에 마우스 오버)하는 경우, 선택된 위치와 관련된 미리보기 영상(1130)이 제공될 수 있다. 미리보기 영상(1130)은 선택된 프레임의 스냅샷 형태로 제공될 수 있다.
이때 바(1120)의 영역은 복수의 구간들로 미리 분류될 수 있고, 미리보기 영상(1130)은 특정 위치를 포함하는 구간의 프레임들 중 첫 번째 프레임에 대응할 수 있다. 예를 들어 스트리밍 클라이언트는 사용자에 의해 선택된 위치가 바(1120)에 미리 설정된 복수의 구간들 중 특정 구간(1140)에 포함된 경우, 해당 위치에 정확하게 매칭하는 프레임을 찾는 것이 아니라, 특정 구간(1140)에 해당하는 프레임들 중 첫 번째 프레임인 프레임 1을 미리보기 영상(1130)으로서 제공할 수 있다. 따라서 생중계되는 방송 프로그램에서 타임머신 기능을 제공함에 있어서 이미 지나간 특정 프레임을 정확하게 찾을 필요 없이, 상대적으로 찾기 쉬운 구간의 첫 번째 프레임을 찾아 제공함으로써 연산량을 줄일 수 있게 된다.
도 12는 본 발명의 일실시예에 따른 전자 기기의 프로세서가 포함할 수 있는 구성요소의 예를 도시한 도면이고, 도 13은 본 발명의 일실시예에 따른 전자 기기가 수행할 수 있는 타임머신 기능 제공 방법의 예를 도시한 흐름도이다.
도 12에 도시된 바와 같이 전자 기기 1(110)의 프로세서(212)는 구성요소들로서 스트리밍 세션 설정부(1210), 라이브 스트림 데이터 전송부(1220), 타임머신 제어 세션 설정부(1230) 및 타임머신 제어 요청 수신부(1240)를 포함할 수 있다. 이러한 프로세서(212) 및 프로세서(212)의 구성요소들은 도 13의 타임머신 기능 제공 방법이 포함하는 단계들(1310 내지 1360)을 수행하도록 전자 기기 1(110)을 제어할 수 있다. 이때, 프로세서(212) 및 프로세서(212)의 구성요소들은 메모리(211)가 포함하는 운영체제의 코드와 적어도 하나의 프로그램의 코드에 따른 명령(instruction)을 실행하도록 구현될 수 있다. 여기서, 프로세서(212)의 구성요소들은 프로세서(212)에 의해 수행되는 서로 다른 기능들(different functions)의 표현들일 수 있다. 예를 들어, 프로세서(212)가 상술한 명령에 따라 스트리밍 세션을 설정하도록 전자 기기 1(110)을 제어하는 동작의 기능적 표현으로서 스트리밍 세션 설정부(1210)가 사용될 수 있다.
단계(1310)에서 프로세서(212)는 타임머신 기능 제공 방법을 위한 프로그램의 파일에 저장된 프로그램 코드를 메모리(211)에 로딩할 수 있다. 예를 들어, 전자 기기 1(110)에 설치된 프로그램이 구동되는 경우, 프로세서(212)는 프로그램의 파일로부터 프로그램 코드를 메모리(211)에 로딩하도록 전자 기기 1(110)을 제어할 수 있다.
이때, 프로세서(212) 및 프로세서(212)가 포함하는 스트리밍 세션 설정부(1210), 라이브 스트림 데이터 전송부(1220), 타임머신 제어 세션 설정부(1230) 및 타임머신 제어 요청 수신부(1240) 각각은 메모리(211)에 로딩된 프로그램 코드 중 대응하는 부분(대응하는 명령)을 실행하여 이후 단계들(1320 및 1360)을 실행할 수 있다. 단계들(1320 및 1360)의 실행을 위해, 프로세서(212) 및 프로세서(212)의 구성요소들은 전자 기기 1(110)을 제어할 수도 있다. 예를 들어, 프로세서(212)는 전자 기기 1(110)이 포함하는 통신 모듈(213)을 제어하여 전자 기기 1(110)이 다른 전자 기기나 다른 서버와 통신하도록 전자 기기 1(110)을 제어할 수 있다.
단계(1320)에서 스트리밍 세션 설정부(1210)는 라이브 스트리밍 서비스를 제공하기 위해 전자 기기 1(110)에 설치된 스트리밍 클라이언트와 전자 기기 1(110)에 설치된 플레이어와의 스트리밍 세션을 설정할 수 있다. 스트리밍 클라이언트와 플레이어는 각각 어플리케이션으로서 전자 기기 1(110)에 설치 및 구동될 수 있다.
단계(1330)에서 라이브 스트림 데이터 전송부(1220)는 스트리밍 클라이언트의 제어에 따라 네트워크를 통해 수신된 라이브 스트림 데이터를 스트리밍 세션을 통해 순차적으로 플레이어로 전송할 수 있다.
단계(1340)에서 타임머신 제어 세션 설정부(1230)는 스트리밍 클라이언트와 플레이어간의 타임머신 제어 세션을 설정할 수 있다.
단계(1350)에서 타임머신 제어 요청 수신부(1240)는 스트리밍 클라이언트의 제어에 따라 타임머신 제어 세션을 통해 플레이어로부터 타임머신 제어 요청을 수신할 수 있다.
단계(1360)에서 라이브 스트림 데이터 전송부(1220)는 스트리밍 클라이언트의 제어에 따라 타임머신 제어 요청 중 재생 위치 정보를 포함하는 타임머신 제어 요청에 대응하는 채널의 라이브 스트림 데이터를 재생 위치 정보를 통해 특정되는 재생 위치부터 순차적으로 스트리밍 세션을 통해 플레이어로 전송할 수 있다.
스트리밍 세션을 통한 상기 스트리밍 클라이언트와 플레이어간의 데이터 전송과 타임머신 제어 세션을 통한 스트리밍 클라이언트와 플레이어간의 데이터 전송은 서로 다른 별도의 프로토콜들에 따라 각각 진행될 수 있다.
다른 실시예에서 타임머신 기능 제공 방법은, 스트리밍 클라이언트에서 플레이어로부터 타임머신 제어 세션을 통해 인증 요청을 수신할 수 있다. 이때, 인증 요청은 라이브 스트림 데이터 또는 채널을 특정하기 위한 정보 및 인증 키를 포함할 수 있다. 이 경우, 타임머신 기능 제공 방법은, 인증 키를 이용하여 플레이어를 인증하고, 플레이어의 인증이 성공하는 경우, 타임머신 제어 세션에 대해 부여된 고유 값을 세션 키로서 인증 요청에 대한 응답에 포함하여 플레이어로 전송할 수 있다. 또한, 타임머신 기능 제공 방법은, 스트리밍 클라이언트에서 타임머신 제어 요청이 세션 키를 포함하는지 여부를 확인하여 타임머신 제어 요청을 인증할 수 있다. 또한, 타임머신 기능 제공 방법은, 스트리밍 클라이언트에서 전자 기기에 설치된 다른 플레이어로부터의 인증 요청에 따라 다른 플레이어가 인증되는 경우, 다른 플레이어와 설정된 타임머신 제어 세션에 대해 부여된 고유 값을 포함하는 세션 키를 상기 다른 플레이어로 전송하고, 기존 플레이어의 세션 키를 무효화할 수 있다.
또 다른 실시예에서 타임머신 기능 제공 방법은, 스트리밍 클라이언트에서 플레이어로부터 타임머신 제어 세션을 통해 정보 획득 및 세션 유지 요청을 수신하고, 스트리밍 클라이언트에서 스트리밍 세션을 통해 플레이어로 제공중인 라이브 스트림 데이터에 대한 타임머신 시간 정보를 상기 정보 획득 및 세션 유지 요청에 대한 응답에 포함시켜 타임머신 세션을 통해 플레이어로 전송할 수 있다. 이때, 타임머신 시간 정보는, 라이브 스트림 데이터의 최신 데이터를 기준으로 과거 데이터를 탐색 가능한 정도를 나타내는 지표로서 라이브 스트림 데이터별로 기설정된 최대 시프트 가능 시간, 최신 데이터를 기준으로 현 시점에서 과거 데이터를 탐색 가능한 정도를 나타내는 지표인 현재 시프트 가능 시간 및 최신 데이터를 기준으로 타임머신 기능을 통해 현재 재생중인 과거 데이터를 특정하는 지표인 현재 시프트 시간을 포함할 수 있다.
또 다른 실시예에서 타임머신 기능 제공 방법은, 스트리밍 클라이언트에서 채널 식별 정보, 채널 식별 정보를 통해 식별되는 채널의 라이브 스트림 데이터 중 특정 방송의 라이브 스트림 데이터를 식별하기 위한 방송 키를 포함하는 재생 요청을 타임머신 제어 세션을 통해 수신할 수 있고, 스트리밍 클라이언트에서 채널 식별 정보를 통해 식별되는 채널의 라이브 스트림 데이터 중 방송 키를 통해 식별되는 라이오 스트림 데이터를 순차적으로 스트리밍 세션을 통해 플레이어로 전송할 수 있다. 이때, 라이브 스트림 데이터는 딜리버리 서버로부터 네트워크를 통해 전자 기기로 전송될 수 있고, 딜리버리 서버가 포함하는 타임머신 버퍼에서 라이브 스트림 데이터가 채널 식별 정보 및 방송 키를 이용하여 채널별로 그리고 방송별로 매칭되어 저장될 수 있다. 또한, 재생 요청은 타임머신 기능의 사용 여부, 식별된 라이브 스트림 데이터의 처음 재생 시작 위치, 채널을 일시 중지(pause) 상태로 시작할지 여부 중 적어도 하나에 대한 정보를 더 포함할 수 있다.
또 다른 실시예에서 타임머신 기능 제공 방법은, 스트리밍 클라이언트에서 일시 중지 요청을 타임머신 제어 세션을 통해 수신함에 따라 라이브 스트림 데이터에서 현재까지 재생된 위치를 저장하고, 라이브 스트림 데이터의 전송을 중지할 수 있고, 스트리밍 클라이언트에서 재개 요청을 타임머신 제어 세션을 통해 수신함에 따라 저장된 위치부터 라이브 스트림 데이터를 순차적으로 플레이어로 전송할 수 있다. 이때, 일시 중지 요청에 따라 상기 채널의 연결이 종료되고, 재개 요청에 따라 상기 채널의 연결이 다시 생성될 수 있다.
또 다른 실시예에서 타임머신 기능 제공 방법은, 스트리밍 클라이언트에서 상기 타임머신 제어 요청에 대한 응답으로 라이브 스트림 데이터가 현재 방송 중인지 여부에 대한 온에어 정보 및 라이브 스트림 데이터의 최신 데이터를 기준으로 타임머신 기능을 통해 현재 재생중인 과거 데이터를 특정하는 지표인 현재 시프트 시간을 타임머신 제어 요청에 대한 응답으로 타임머신 제어 세션을 통해 상기 플레이어로 전송할 수 있다. 이때, 플레이어에서 온에어 정보 및 현재 시프트 시간의 조합을 통해 방송 종료 시점을 결정할 수 있다.
도 12 및 도 13에서 생략된 내용은 도 1 내지 도 11을 참조할 수 있다.
이처럼 본 발명의 실시예들에 따르면, 타임머신 제어 프로토콜이 타임머신 기능에 대한 제어 역할만을 담당하고, 스트리밍 클라이언트와 플레이어간의 스트리밍 프로토콜은 플레이어에서 지원하는 스트리밍 규격을 그대로 이용할 수 있도록 구현할 수 있다. 또한, OS나 플레이어에 상관없이 동일한 규격을 이용하여 타임머신 기능을 제어할 수 있어 스트리밍 클라이언트의 플레이어에 대한 종속성을 제거할 수 있다.
이상에서 설명된 시스템 또는 장치는 하드웨어 구성요소, 소프트웨어 구성요소 또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 어플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치에 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.

Claims (20)

  1. 전자 기기를 구현하는 컴퓨터와 결합하여 타임머신 기능 제공 방법을 실행시키기 위해 컴퓨터 판독 가능한 기록매체에 저장된 컴퓨터 프로그램에 있어서,
    상기 타임머신 기능 제공 방법은,
    라이브 스트리밍 서비스를 제공하기 위해 상기 전자 기기에 설치된 스트리밍 클라이언트에서, 상기 전자 기기에 설치된 플레이어와의 스트리밍 세션을 설정하는 단계;
    상기 스트리밍 클라이언트에서 네트워크를 통해 수신된 라이브 스트림 데이터를 상기 스트리밍 세션을 통해 순차적으로 상기 플레이어로 전송하는 단계;
    상기 스트리밍 클라이언트에서 상기 플레이어와의 타임머신 제어 세션을 설정하는 단계;
    상기 스트리밍 클라이언트에서 상기 타임머신 제어 세션을 통해 상기 플레이어로부터 타임머신 제어 요청을 수신하는 단계; 및
    상기 스트리밍 클라이언트에서 상기 타임머신 제어 요청 중 재생 위치 정보를 포함하는 타임머신 제어 요청에 대응하는 채널의 라이브 스트림 데이터를 상기 재생 위치 정보를 통해 특정되는 재생 위치부터 순차적으로 상기 스트리밍 세션을 통해 상기 플레이어로 전송하는 단계
    를 포함하고,
    상기 타임머신 기능 제공 방법은,
    상기 스트리밍 클라이언트에서 상기 플레이어로부터 상기 타임머신 제어 세션을 통해 인증 요청을 수신하는 단계 - 상기 인증 요청은 라이브 스트림 데이터 또는 채널을 특정하기 위한 정보 및 인증 키를 포함함 -; 및
    상기 인증 키를 이용하여 상기 플레이어를 인증하고, 상기 플레이어의 인증이 성공하는 경우, 상기 타임머신 제어 세션에 대해 부여된 고유 값을 세션 키로서 상기 인증 요청에 대한 응답에 포함하여 상기 플레이어로 전송하는 단계
    를 더 포함하는 것을 특징으로 하는 컴퓨터 프로그램.
  2. 제1항에 있어서,
    상기 스트리밍 세션을 통한 상기 스트리밍 클라이언트와 상기 플레이어간의 데이터 전송과 상기 타임머신 제어 세션을 통한 상기 스트리밍 클라이언트와 상기 플레이어간의 데이터 전송은 서로 다른 별도의 프로토콜들에 따라 각각 진행되는 것을 특징으로 하는 컴퓨터 프로그램.
  3. 삭제
  4. 제1항에 있어서,
    상기 타임머신 기능 제공 방법은,
    상기 스트리밍 클라이언트에서 상기 타임머신 제어 요청이 상기 세션 키를 포함하는지 여부를 확인하여 상기 타임머신 제어 요청을 인증하는 단계
    를 더 포함하는 것을 특징으로 하는 컴퓨터 프로그램.
  5. 제1항에 있어서,
    상기 타임머신 기능 제공 방법은,
    상기 스트리밍 클라이언트에서 상기 전자 기기에 설치된 다른 플레이어로부터의 인증 요청에 따라 상기 다른 플레이어가 인증되는 경우, 상기 다른 플레이어와 설정된 타임머신 제어 세션에 대해 부여된 고유 값을 포함하는 세션 키를 상기 다른 플레이어로 전송하고, 기존 플레이어의 세션 키를 무효화하는 단계
    를 더 포함하는 것을 특징으로 하는 컴퓨터 프로그램.
  6. 제1항에 있어서,
    상기 타임머신 기능 제공 방법은,
    상기 스트리밍 클라이언트에서 상기 플레이어로부터 상기 타임머신 제어 세션을 통해 정보 획득 및 세션 유지 요청을 수신하는 단계; 및
    상기 스트리밍 클라이언트에서 상기 스트리밍 세션을 통해 상기 플레이어로 제공중인 라이브 스트림 데이터에 대한 타임머신 시간 정보를 상기 정보 획득 및 세션 유지 요청에 대한 응답에 포함시켜 상기 타임머신 제어 세션을 통해 상기 플레이어로 전송하는 단계
    를 포함하는 것을 특징으로 하는 컴퓨터 프로그램.
  7. 제6항에 있어서,
    상기 타임머신 시간 정보는, 상기 라이브 스트림 데이터의 최신 데이터를 기준으로 과거 데이터를 탐색 가능한 정도를 나타내는 지표로서 상기 라이브 스트림 데이터별로 기설정된 최대 시프트 가능 시간, 상기 최신 데이터를 기준으로 현 시점에서 과거 데이터를 탐색 가능한 정도를 나타내는 지표인 현재 시프트 가능 시간 및 상기 최신 데이터를 기준으로 타임머신 기능을 통해 현재 재생중인 과거 데이터를 특정하는 지표인 현재 시프트 시간을 포함하는 것을 특징으로 하는 컴퓨터 프로그램.
  8. 제1항에 있어서,
    상기 타임머신 기능 제공 방법은,
    상기 스트리밍 클라이언트에서 채널 식별 정보, 상기 채널 식별 정보를 통해 식별되는 채널의 라이브 스트림 데이터 중 특정 방송의 라이브 스트림 데이터를 식별하기 위한 방송 키를 포함하는 재생 요청을 상기 타임머신 제어 세션을 통해 수신하는 단계; 및
    상기 스트리밍 클라이언트에서 상기 채널 식별 정보를 통해 식별되는 채널의 라이브 스트림 데이터 중 상기 방송 키를 통해 식별되는 라이오 스트림 데이터를 순차적으로 상기 스트리밍 세션을 통해 상기 플레이어로 전송하는 단계
    를 더 포함하는 것을 특징으로 하는 컴퓨터 프로그램.
  9. 제8항에 있어서,
    상기 라이브 스트림 데이터는 딜리버리 서버로부터 네트워크를 통해 상기 전자 기기로 전송되고,
    상기 딜리버리 서버가 포함하는 타임머신 버퍼에서 상기 라이브 스트림 데이터가 상기 채널 식별 정보 및 상기 방송 키를 이용하여 채널별로 그리고 방송별로 매칭되어 저장되는 것을 특징으로 하는 컴퓨터 프로그램.
  10. 제8항에 있어서,
    상기 재생 요청은 타임머신 기능의 사용 여부, 식별된 라이브 스트림 데이터의 처음 재생 시작 위치, 채널을 일시 중지(pause) 상태로 시작할지 여부 중 적어도 하나에 대한 정보를 더 포함하는 것을 특징으로 하는 컴퓨터 프로그램.
  11. 제1항에 있어서,
    상기 타임머신 기능 제공 방법은,
    상기 스트리밍 클라이언트에서 일시 중지 요청을 상기 타임머신 제어 세션을 통해 수신함에 따라 상기 라이브 스트림 데이터에서 현재까지 재생된 위치를 저장하고, 상기 라이브 스트림 데이터의 전송을 중지하는 단계; 및
    상기 스트리밍 클라이언트에서 재개 요청을 상기 타임머신 제어 세션을 통해 수신함에 따라 상기 저장된 위치부터 상기 라이브 스트림 데이터를 순차적으로 상기 플레이어로 전송하는 단계
    를 더 포함하는 것을 특징으로 하는 컴퓨터 프로그램.
  12. 제11항에 있어서,
    상기 일시 중지 요청에 따라 상기 채널의 연결이 종료되고, 상기 재개 요청에 따라 상기 채널의 연결이 다시 생성되는 것을 특징으로 하는 컴퓨터 프로그램.
  13. 제1항에 있어서,
    상기 타임머신 기능 제공 방법은,
    상기 스트리밍 클라이언트에서 상기 타임머신 제어 요청에 대한 응답으로 상기 라이브 스트림 데이터가 현재 방송 중인지 여부에 대한 온에어 정보 및 상기 라이브 스트림 데이터의 최신 데이터를 기준으로 타임머신 기능을 통해 현재 재생중인 과거 데이터를 특정하는 지표인 현재 시프트 시간을 상기 타임머신 제어 요청에 대한 응답으로 상기 타임머신 제어 세션을 통해 상기 플레이어로 전송하는 단계
    를 더 포함하고,
    상기 플레이어에서 상기 온에어 정보 및 상기 현재 시프트 시간의 조합을 통해 방송 종료 시점을 결정하는 것을 특징으로 하는 컴퓨터 프로그램.
  14. 컴퓨터로 구현된 전자 기기의 타임머신 기능 제공 방법에 있어서,
    라이브 스트리밍 서비스를 제공하기 위해 상기 전자 기기에 설치된 스트리밍 클라이언트에서, 상기 전자 기기에 설치된 플레이어와의 스트리밍 세션을 설정하는 단계;
    상기 스트리밍 클라이언트에서 네트워크를 통해 수신된 라이브 스트림 데이터를 상기 스트리밍 세션을 통해 순차적으로 상기 플레이어로 전송하는 단계;
    상기 스트리밍 클라이언트에서 상기 플레이어와의 타임머신 제어 세션을 설정하는 단계;
    상기 스트리밍 클라이언트에서 상기 타임머신 제어 세션을 통해 상기 플레이어로부터 타임머신 제어 요청을 수신하는 단계; 및
    상기 스트리밍 클라이언트에서 상기 타임머신 제어 요청 중 재생 위치 정보를 포함하는 타임머신 제어 요청에 대응하는 채널의 라이브 스트림 데이터를 상기 재생 위치 정보를 통해 특정되는 재생 위치부터 순차적으로 상기 스트리밍 세션을 통해 상기 플레이어로 전송하는 단계
    를 포함하고,
    상기 스트리밍 클라이언트에서 상기 플레이어로부터 상기 타임머신 제어 세션을 통해 인증 요청을 수신하는 단계 - 상기 인증 요청은 라이브 스트림 데이터 또는 채널을 특정하기 위한 정보 및 인증 키를 포함함 -; 및
    상기 인증 키를 이용하여 상기 플레이어를 인증하고, 상기 플레이어의 인증이 성공하는 경우, 상기 타임머신 제어 세션에 대해 부여된 고유 값을 세션 키로서 상기 인증 요청에 대한 응답에 포함하여 상기 플레이어로 전송하는 단계
    를 더 포함하는 것을 특징으로 하는 타임머신 기능 제공 방법.
  15. 제14항에 있어서,
    상기 스트리밍 세션을 통한 상기 스트리밍 클라이언트와 상기 플레이어간의 데이터 전송과 상기 타임머신 제어 세션을 통한 상기 스트리밍 클라이언트와 상기 플레이어간의 데이터 전송은 서로 다른 별도의 프로토콜들에 따라 각각 진행되는 것을 특징으로 하는 타임머신 기능 제공 방법.
  16. 삭제
  17. 제14항에 있어서,
    상기 스트리밍 클라이언트에서 상기 플레이어로부터 상기 타임머신 제어 세션을 통해 정보 획득 및 세션 유지 요청을 수신하는 단계; 및
    상기 스트리밍 클라이언트에서 상기 스트리밍 세션을 통해 상기 플레이어로 제공중인 라이브 스트림 데이터에 대한 타임머신 시간 정보를 상기 정보 획득 및 세션 유지 요청에 대한 응답에 포함시켜 상기 타임머신 제어 세션을 통해 상기 플레이어로 전송하는 단계
    를 포함하는 것을 특징으로 하는 타임머신 기능 제공 방법.
  18. 제14항에 있어서,
    상기 스트리밍 클라이언트에서 채널 식별 정보, 상기 채널 식별 정보를 통해 식별되는 채널의 라이브 스트림 데이터 중 특정 방송의 라이브 스트림 데이터를 식별하기 위한 방송 키를 포함하는 재생 요청을 상기 타임머신 제어 세션을 통해 수신하는 단계; 및
    상기 스트리밍 클라이언트에서 상기 채널 식별 정보를 통해 식별되는 채널의 라이브 스트림 데이터 중 상기 방송 키를 통해 식별되는 라이오 스트림 데이터를 순차적으로 상기 스트리밍 세션을 통해 상기 플레이어로 전송하는 단계
    를 더 포함하는 것을 특징으로 하는 타임머신 기능 제공 방법.
  19. 제14항에 있어서,
    상기 스트리밍 클라이언트에서 일시 중지 요청을 상기 타임머신 제어 세션을 통해 수신함에 따라 상기 라이브 스트림 데이터에서 현재까지 재생된 위치를 저장하고, 상기 라이브 스트림 데이터의 전송을 중지하는 단계; 및
    상기 스트리밍 클라이언트에서 재개 요청을 상기 타임머신 제어 세션을 통해 수신함에 따라 상기 저장된 위치부터 상기 라이브 스트림 데이터를 순차적으로 상기 플레이어로 전송하는 단계
    를 더 포함하는 것을 특징으로 하는 타임머신 기능 제공 방법.
  20. 제14항에 있어서,
    상기 스트리밍 클라이언트에서 상기 타임머신 제어 요청에 대한 응답으로 상기 라이브 스트림 데이터가 현재 방송 중인지 여부에 대한 온에어 정보 및 상기 라이브 스트림 데이터의 최신 데이터를 기준으로 타임머신 기능을 통해 현재 재생중인 과거 데이터를 특정하는 지표인 현재 시프트 시간을 상기 타임머신 제어 요청에 대한 응답으로 상기 타임머신 제어 세션을 통해 상기 플레이어로 전송하는 단계
    를 더 포함하고,
    상기 플레이어에서 상기 온에어 정보 및 상기 현재 시프트 시간의 조합을 통해 방송 종료 시점을 결정하는 것을 특징으로 하는 타임머신 기능 제공 방법.
KR1020150174153A 2015-12-08 2015-12-08 생중계에서 타임머신 기능을 제공하는 방법 및 시스템 KR101722673B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020150174153A KR101722673B1 (ko) 2015-12-08 2015-12-08 생중계에서 타임머신 기능을 제공하는 방법 및 시스템
JP2016220279A JP6490654B2 (ja) 2015-12-08 2016-11-11 生放送でタイムマシン機能を提供する方法およびシステム
US15/353,990 US10602206B2 (en) 2015-12-08 2016-11-17 Method and system for providing time machine function in live broadcast

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150174153A KR101722673B1 (ko) 2015-12-08 2015-12-08 생중계에서 타임머신 기능을 제공하는 방법 및 시스템

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020160164303A Division KR101783723B1 (ko) 2016-12-05 2016-12-05 생중계에서 타임머신 기능을 제공하는 방법 및 시스템

Publications (1)

Publication Number Publication Date
KR101722673B1 true KR101722673B1 (ko) 2017-04-03

Family

ID=58589026

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150174153A KR101722673B1 (ko) 2015-12-08 2015-12-08 생중계에서 타임머신 기능을 제공하는 방법 및 시스템

Country Status (3)

Country Link
US (1) US10602206B2 (ko)
JP (1) JP6490654B2 (ko)
KR (1) KR101722673B1 (ko)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11438658B2 (en) 2016-12-31 2022-09-06 Turner Broadcasting System, Inc. Client-side dynamic presentation of programming content in an indexed disparate live media output stream
US10965967B2 (en) 2016-12-31 2021-03-30 Turner Broadcasting System, Inc. Publishing a disparate per-client live media output stream based on dynamic insertion of targeted non-programming content and customized programming content
US11477254B2 (en) * 2016-12-31 2022-10-18 Turner Broadcasting System, Inc. Dynamic playout buffer for disparate live media output stream
US11962821B2 (en) 2016-12-31 2024-04-16 Turner Broadcasting System, Inc. Publishing a disparate live media output stream using pre-encoded media assets
US11134309B2 (en) 2016-12-31 2021-09-28 Turner Broadcasting System, Inc. Creation of channels using pre-encoded media assets
US11546400B2 (en) 2016-12-31 2023-01-03 Turner Broadcasting System, Inc. Generating a live media segment asset
US11038932B2 (en) 2016-12-31 2021-06-15 Turner Broadcasting System, Inc. System for establishing a shared media session for one or more client devices
US10992973B2 (en) 2016-12-31 2021-04-27 Turner Broadcasting System, Inc. Publishing a plurality of disparate live media output stream manifests using live input streams and pre-encoded media assets
US11470373B2 (en) 2016-12-31 2022-10-11 Turner Broadcasting System, Inc. Server-side dynamic insertion of programming content in an indexed disparate live media output stream
US10856016B2 (en) 2016-12-31 2020-12-01 Turner Broadcasting System, Inc. Publishing disparate live media output streams in mixed mode based on user selection
US11051074B2 (en) 2016-12-31 2021-06-29 Turner Broadcasting System, Inc. Publishing disparate live media output streams using live input streams
US11109086B2 (en) 2016-12-31 2021-08-31 Turner Broadcasting System, Inc. Publishing disparate live media output streams in mixed mode
US11503352B2 (en) 2016-12-31 2022-11-15 Turner Broadcasting System, Inc. Dynamic scheduling and channel creation based on external data
US11051073B2 (en) 2017-05-25 2021-06-29 Turner Broadcasting System, Inc. Client-side overlay of graphic items on media content
JP6337193B1 (ja) 2017-12-14 2018-06-06 株式会社ドワンゴ サーバおよびプログラム
US11082734B2 (en) 2018-12-21 2021-08-03 Turner Broadcasting System, Inc. Publishing a disparate live media output stream that complies with distribution format regulations
US10880606B2 (en) 2018-12-21 2020-12-29 Turner Broadcasting System, Inc. Disparate live media output stream playout and broadcast distribution
US10873774B2 (en) 2018-12-22 2020-12-22 Turner Broadcasting System, Inc. Publishing a disparate live media output stream manifest that includes one or more media segments corresponding to key events
CN111385591A (zh) * 2018-12-28 2020-07-07 阿里巴巴集团控股有限公司 网络直播方法、直播处理方法、装置、直播服务器及终端设备
CN110830460B (zh) * 2019-10-25 2022-09-20 卓米私人有限公司 一种连接建立方法、装置、电子设备及存储介质
CN112911325B (zh) * 2021-01-29 2023-07-14 百果园技术(新加坡)有限公司 一种跨直播间连线的恢复方法和装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20080050477A (ko) * 2005-11-30 2008-06-05 후아웨이 테크놀러지 컴퍼니 리미티드 타임 시프트 텔레비전을 구현하기 위한 방법, 장치, 및 시스템
KR20110030464A (ko) * 2008-05-20 2011-03-23 노키아 코포레이션 타임­시프트 지원 시그널링을 위한 방법 및 장치
KR20130133084A (ko) * 2010-04-30 2013-12-05 인터디지탈 패튼 홀딩스, 인크 네트워크 통신에서의 경량 프로토콜 및 에이전트
US20140215514A1 (en) * 2012-06-05 2014-07-31 Tvstorm Co., Ltd. Apparatus of rendering user interface for playing broadcast programs and the method thereof

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004088466A (ja) * 2002-08-27 2004-03-18 Nec Corp ライブ映像配信システム
JP2004151970A (ja) * 2002-10-30 2004-05-27 Toppan Printing Co Ltd コンテンツ配信管理装置及びコンテンツ配信管理方法
KR100564452B1 (ko) * 2003-04-03 2006-03-29 엘지전자 주식회사 영상 녹화 및 재생 장치 및 방법
JP2004312413A (ja) * 2003-04-08 2004-11-04 Sony Corp コンテンツ提供サーバ、情報処理装置、および方法、並びにコンピュータ・プログラム
JP2007053538A (ja) * 2005-08-17 2007-03-01 Sharp Corp サーバおよびその制御方法、通信ネットワークシステム、サーバ制御プログラム、ならびに該プログラムが記録された記録媒体
JP2007060543A (ja) * 2005-08-26 2007-03-08 Toshiba Corp 録画再生装置および録画再生制御方法
KR101300882B1 (ko) 2006-10-27 2013-08-27 엘지전자 주식회사 타임머신 기능을 가지는 영상표시기기 및 그 제어 방법
JP5233749B2 (ja) * 2009-03-03 2013-07-10 日本電気株式会社 拠点サーバ装置、通信方法、通信制御プログラム、配信システム及び通信システム
JP5423661B2 (ja) * 2010-12-09 2014-02-19 株式会社Jvcケンウッド ネットワークシステム、サーバ、再生装置及びコンテンツ再生方法
JP5117599B1 (ja) * 2011-06-30 2013-01-16 株式会社東芝 制御端末およびネットワークシステム
TWI496458B (zh) * 2011-12-30 2015-08-11 Amtran Technology Co Ltd 提供即時直播視訊資料流檔案的電視接收裝置與其方法
JP5706868B2 (ja) 2012-03-30 2015-04-22 Line株式会社 メッセンジャープラットフォームでアバタ/ゲーム/エンターテイメント機能を提供するシステムおよび方法
US8752112B2 (en) * 2012-04-12 2014-06-10 Google Inc. Live streaming video processing
KR101685226B1 (ko) 2012-06-12 2016-12-20 라인 가부시키가이샤 메신저 플랫폼의 인간 관계를 기반으로 하는 소셜 그래프를 활용한 메신저 연계 서비스 시스템 및 방법
KR20140009778A (ko) 2012-07-13 2014-01-23 라인 가부시키가이샤 메신저 플랫폼의 사용자 관계정보에 기반하여 다양한 서비스를 제공하는 방법 및 시스템
US20140282756A1 (en) * 2013-03-15 2014-09-18 General Instrument Corporation Method and apparatus for providing trick-play capability when presenting linear content
US9549000B2 (en) * 2013-03-15 2017-01-17 Arris Enterprises, Inc. Streaming media from a server delivering individualized content streams to clients
US9736538B2 (en) * 2013-07-09 2017-08-15 Comcast Cable Communications, Llc Delivery of content
US9047482B2 (en) * 2013-07-17 2015-06-02 Wowza Media Systems, LLC Token-based security for links to media streams
WO2015065001A1 (ko) 2013-10-31 2015-05-07 라인 가부시키가이샤 다양한 캐릭터를 이용하여 리듬 게임 서비스를 제공하기 위한 방법 및 시스템
US9942578B1 (en) * 2015-12-07 2018-04-10 Digital Keystone, Inc. Methods and apparatuses for a distributed live-on-demand (LOD) origin

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20080050477A (ko) * 2005-11-30 2008-06-05 후아웨이 테크놀러지 컴퍼니 리미티드 타임 시프트 텔레비전을 구현하기 위한 방법, 장치, 및 시스템
KR20110030464A (ko) * 2008-05-20 2011-03-23 노키아 코포레이션 타임­시프트 지원 시그널링을 위한 방법 및 장치
KR20130133084A (ko) * 2010-04-30 2013-12-05 인터디지탈 패튼 홀딩스, 인크 네트워크 통신에서의 경량 프로토콜 및 에이전트
US20140215514A1 (en) * 2012-06-05 2014-07-31 Tvstorm Co., Ltd. Apparatus of rendering user interface for playing broadcast programs and the method thereof

Also Published As

Publication number Publication date
US20170164019A1 (en) 2017-06-08
JP2017108389A (ja) 2017-06-15
JP6490654B2 (ja) 2019-03-27
US10602206B2 (en) 2020-03-24

Similar Documents

Publication Publication Date Title
KR101722673B1 (ko) 생중계에서 타임머신 기능을 제공하는 방법 및 시스템
US11350139B2 (en) Video live broadcast method and apparatus
US8190683B2 (en) Synchronizing multiple user remote content playback
US8239546B1 (en) Global access control for segmented streaming delivery
EP3323246B1 (en) Using temporary credentials in guest mode
US10326662B2 (en) System and method for managing playback of streaming digital content
US20140137168A1 (en) Transmitting apparatus, control method for transmitting apparatus, control program, and recording medium
KR20210047933A (ko) 비디오 스크린 프로젝션 방법과 장치, 컴퓨터 장비, 및 저장 매체
US20170337048A1 (en) System and method for managing playback of streaming digital content
US20210289255A1 (en) Synchronization of media content across multiple participant devices
CN104811773A (zh) 基于防盗链的频道播放实现方法、系统及设备
KR101899576B1 (ko) 멀티미디어 컨텐츠의 원격 운영을 위한 시간 동기화 방법 및 그 시스템
CN109996024A (zh) 一种交互方法及装置
EP3085063B1 (en) Managing streaming in home media network having a home gateway and a plurality of devices
US20050240676A1 (en) Method for playing multimedia data and a system of enabling the method
KR101783723B1 (ko) 생중계에서 타임머신 기능을 제공하는 방법 및 시스템
JP2022042997A (ja) リアルタイムライブストリーミングで遅延を最小化するための方法、サーバ、およびコンピュータ読み取り可能な記録媒体
KR20170067448A (ko) 타임머신 기능을 위한 슬라이딩 윈도우 관리 방법 및 시스템
CN113129933B (zh) 终端展示控制方法、装置、设备及计算机可读存储介质
JP5973683B1 (ja) 認証サーバ、ユーザ端末、コンテンツサーバ及びそれらの制御方法、並びにコンピュータプログラム
KR101949494B1 (ko) 멀티미디어 컨텐츠의 운영을 위한 원격 툴을 제공하는 방법 및 시스템
CN113332710A (zh) 一种游戏账号登录方法、装置、电子设备及存储介质
CN112933611A (zh) 云游戏进度分享方法、装置和电子设备
US11870830B1 (en) Embedded streaming content management
KR101865627B1 (ko) 멀티미디어 컨텐츠의 운영을 위한 원격 툴을 제공하는 방법 및 시스템

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20200102

Year of fee payment: 4