KR20210108114A - Http 기반 라이브 스트리밍 방법 및 장치 - Google Patents

Http 기반 라이브 스트리밍 방법 및 장치 Download PDF

Info

Publication number
KR20210108114A
KR20210108114A KR1020200022935A KR20200022935A KR20210108114A KR 20210108114 A KR20210108114 A KR 20210108114A KR 1020200022935 A KR1020200022935 A KR 1020200022935A KR 20200022935 A KR20200022935 A KR 20200022935A KR 20210108114 A KR20210108114 A KR 20210108114A
Authority
KR
South Korea
Prior art keywords
segment
gop
live streaming
metadata
client
Prior art date
Application number
KR1020200022935A
Other languages
English (en)
Other versions
KR102314373B1 (ko
Inventor
김철환
Original Assignee
주식회사 엘지유플러스
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 엘지유플러스 filed Critical 주식회사 엘지유플러스
Priority to KR1020200022935A priority Critical patent/KR102314373B1/ko
Publication of KR20210108114A publication Critical patent/KR20210108114A/ko
Application granted granted Critical
Publication of KR102314373B1 publication Critical patent/KR102314373B1/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/236Assembling of a multiplex stream, e.g. transport stream, by combining a video stream with other content or additional data, e.g. inserting a URL [Uniform Resource Locator] into a video stream, multiplexing software data into a video stream; Remultiplexing of multiplex streams; Insertion of stuffing bits into the multiplex stream, e.g. to obtain a constant bit-rate; Assembling of a packetised elementary stream
    • H04N21/23614Multiplexing of additional data and video streams
    • 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/235Processing of additional data, e.g. scrambling of additional data or processing content descriptors
    • 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/239Interfacing the upstream path of the transmission network, e.g. prioritizing client content requests
    • H04N21/2393Interfacing the upstream path of the transmission network, e.g. prioritizing client content requests involving handling client requests
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/631Multimode Transmission, e.g. transmitting basic layers and enhancement layers of the content over different transmission paths or transmitting with different error corrections, different keys or with different transmission protocols

Landscapes

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

Abstract

재생 지연 시간을 절감한 HTTP 기반 라이브 스트리밍 방법 및 장치가 개시된다. 실시예는 라이브 스트리밍 대상이 되는 미디어 컨텐츠를 서로 다른 GOP의 크기로 인코딩하여 서로 다른 크기의 GOP에 대응하는 세그먼트들을 생성하는 단계, 라이브 스트리밍의 현재 시점에 따라 상기 세그먼트들 중 어느 하나의 세그먼트를 선택하는 단계, 선택된 세그먼트의 정보를 포함하도록 메타데이터를 갱신하는 단계,메타데이터를 클라이언트로 제공하는 단계, 메타데이터에 포함된 정보에 기초하여 클라이언트로부터 요청되는 세그먼트를 제공하는 단계를 포함한다.

Description

HTTP 기반 라이브 스트리밍 방법 및 장치{HTTP-BASED LIVE STREAMING METHOD AND APPARATUS}
아래 실시예들은 HTTP 기반 라이브 스트리밍 방법 및 장치에 관한 것이다.
스트리밍(streaming)은 소리 및 동영상 등의 멀티미디어 컨텐츠를 서버에서 클라이언트로 전송 및 재생하기 위한 방식 중 하나이다. 서버는 스트리밍을 통해 컨텐츠을 지속적으로 전송하고, 클라이언트는 컨텐츠를 서버로부터 수신하는 동시에 재생할 수 있다.
다양한 프로토콜에 기반한 스트리밍 서비스를 통해 클라이언트는 자신의 전송 채널 등에 적합한 미디어 시퀀스를 서버에 요청할 수 있으며, 서버는 저장된 다양한 퀄리티의 미디어 시퀀스들 중 클라이언트의 요청에 부합하는 미디어 시퀀스를 제공할 수 있다.
현재의 스트리밍 서비스는 촬영 등에 의해 미디어 컨텐츠가 생성됨과 동시에 클라이언트에게 전송되는 실시간 또는 라이브 스트리밍 서비스를 포함한다. 라이브 스트리밍은 재생 시간이 지연될 수 있고, 많은 비용이 소모될 수 있어, 라이브 스트리밍 서비스를 제공하기 위한 기술이 요구되고 있다.
실시예들은 스트리밍의 대상이 되는 미디어 파일을 서로 다른 GOP 크기로인코딩하여, 서로 다른 크기의 GOP로 구성된 세그먼트들을 생성하고, 라이브 스트리밍의 현재 시점에 따라 상기 세그먼트들 중 하나를 선택하여 클라이언트에 제공함으로써, 재생 지연 시간이 단축된 HTTP 기반 라이브 스트리밍 기술을 제공할 수 있다.
보다 구체적으로, 실시예들은 제1 GOP의 크기로 인코딩된 제1 세그먼트 내에서 현재 시점이 속한 구간에 따라, 제1 세그먼트의 정보 또는 제1 GOP의 크기보다 작은 제2 GOP의 크기로 인코딩된 제2 세그먼트의 정보를 포함하도록 메타데이터를 갱신함으로써, 재생 지연 시간이 단축된 HTTP 기반 라이브 스트리밍 기술을 제공할 수 있다.
일 측에 따른 HTTP 기반 라이브 스트리밍 방법은 라이브 스트리밍을 위하여, 서로 다른 크기의 GOP로 구성된 세그먼트들을 생성하는 단계; 상기 라이브 스트리밍의 현재 시점이 상기 세그먼트들 중 제1 GOP에 대응하는 제1 세그먼트 내의 제1 구간에 포함되는 경우, 상기 제1 세그먼트의 정보를 포함하도록 상기 라이브 스트리밍 용 메타데이터를 갱신하는 단계; 상기 현재 시점이 상기 제1 세그먼트 내의 제2 구간에 포함되는 경우, 상기 세그먼트들 중 상기 제1 GOP의 크기보다 작은 크기의 제2 GOP에 대응하는 제2 세그먼트의 정보를 포함하도록 상기 메타데이터를 갱신하는 단계; 클라이언트의 재생 요청에 반응하여, 상기 메타데이터를 상기 클라이언트로 제공하는 단계; 및 상기 세그먼트들 중 상기 클라이언트로부터 요청되는 세그먼트를 제공하는 단계를 포함한다.
상기 제2 구간은 상기 제1 구간에 후속하는 구간에 해당할 수 있다.
상기 제1 구간은 상기 제1 GOP에 대응하는 세그먼트를 반으로 나눈 전반부에 대응하고, 상기 제2 구간은 상기 제1 GOP에 대응하는 세그먼트를 반으로 나눈 후반부에 대응할 수 있다.
상기 서로 다른 크기의 GOP로 구성된 세그먼트들을 생성하는 단계는 상기 라이브 스트리밍의 대상이 되는 미디어 파일을 상기 제1 GOP의 크기로 인코딩하여 상기 제1 GOP에 대응하는 상기 제1 세그먼트를 생성하는 단계; 상기 미디어 파일을 상기 제1 GOP의 크기보다 작은 크기의 상기 제2 GOP의 크기로 인코딩하여 상기 제2 GOP에 대응하는 상기 제2 세그먼트를 생성하는 단계를 포함할 수 있다.
상기 메타데이터는 적어도 하나의 세그먼트의 정보를 포함한 플레이리스트이고, 상기 메타데이터에 포함된 상기 세그먼트의 상기 정보는 상기 세그먼트의 URI(Uniform Resource Identifier)를 포함할 수 있다.
상기 메타데이터를 상기 클라이언트로 제공하는 단계는 상기 메타데이터를 m3u8 파일 포맷으로 상기 클라이언트에게 제공하는 단계를 포함할 수 있다.
상기 세그먼트들 중 상기 클라이언트로부터 요청되는 세그먼트를 제공하는 단계는 상기 클라이언트로부터 상기 메타데이터에 포함된 상기 세그먼트의 정보에 기초한 상기 세그먼트의 요청을 수신하는 단계를 포함하고, 상기 세그먼트의 정보는 상기 세그먼트의 경로를 포함할 수 있다.
상기 세그먼트들 중 상기 클라이언트로부터 요청되는 세그먼트를 제공하는 단계는 상기 세그먼트를 청크 단위로 세분화하하여 제공하는 단계를 포함하고, 상기 청크는 상기 세그먼트를 재생하기 위한 프레임, 상기 청크를 디코딩 하기 위한 정보 및 상기 청크를 렌더링하기 위한 정보를 포함할 수 있다.
일측에 따른 HTTP 기반 라이브 스트리밍 장치는 라이브 스트리밍을 위한 서로 다른 크기의 GOP로 구성된 세크먼트들을 저장하는 메모리; 및 상기 라이브 스트리밍을 위하여 서로 다른 크기의 GOP로 구성된 세그먼트들을 생성하고, 상기 세그먼트들 중 제1 GOP에 대응하는 제1 세그먼트 내의 제1 구간에 포함되는 경우, 상기 제1 세그먼트의 정보를 포함하도록 상기 라이브 스트리밍 용 메타데이터를 갱신하고, 상기 현재 시점이 상기 제1 세그먼트 내의 제2 구간에 포함되는 경우, 상기 세그먼트들 중 상기 제1 GOP의 크기보다 작은 크기의 제2 GOP에 대응하는 제2 세그먼트의 정보를 포함하도록 상기 메타데이터를 갱신하며, 클라이언트의 재생 요청에 반응하여, 상기 메타데이터를 상기 클라이언트로 제공하고, 상기 세그먼트들 중 상기 클라이언트로부터 요청되는 세그먼트를 제공하는 적어도 하나의 프로세서를 포함한다.
상기 제2 구간은 상기 제1 구간에 후속하는 구간에 해당할 수 있다.
상기 제1 구간은 상기 제1 GOP에 대응하는 세그먼트를 반으로 나눈 전반부에 대응하고, 상기 제2 구간은 상기 제1 GOP에 대응하는 세그먼트를 반으로 나눈 후반부에 대응할 수 있다.
상기 프로세서는 상기 서로 다른 크기의 GOP로 구성된 세그먼트들을 생성함에 있어서, 상기 라이브 스트리밍의 대상이 되는 미디어 파일을 상기 제1 GOP의 크기로 인코딩하여 상기 제1 GOP에 대응하는 상기 제1 세그먼트를 생성하고, 상기 미디어 파일을 상기 제1 GOP의 크기보다 작은 크기의 상기 제2 GOP의 크기로 인코딩하여 상기 제2 GOP에 대응하는 상기 제2 세그먼트를 생성할 수 있다.
상기 메타데이터는 적어도 하나의 세그먼트의 정보를 포함한 플레이리스트이고, 상기 메타데이터에 포함된 상기 세그먼트의 상기 정보는 상기 세그먼트의 URI(Uniform Resource Identifier)를 포함할 수 있다.\
상기 프로세서는 상기 메타데이터를 상기 클라이언트로 제공함에 있어서, 상기 메타데이터를 m3u8 파일 포맷으로 상기 클라이언트에게 제공할 수 있다.
상기 프로세서는 상기 세그먼트들 중 상기 클라이언트로부터 요청되는 세그먼트를 제공함에 있어서, 상기 세그먼트를 청크 단위로 세분화하하여 제공하고, 상기 청크는 상기 세그먼트를 재생하기 위한 프레임, 상기 청크를 디코딩 하기 위한 정보 및 상기 청크를 렌더링하기 위한 정보를 포함할 수 있다.
상기 프로세서는 상기 세그먼트들 중 상기 클라이언트로부터 요청되는 세그먼트를 제공함에 있어서, 상기 클라이언트로부터 상기 메타데이터에 포함된 상기 세그먼트의 정보에 기초한 상기 세그먼트의 요청을 수신하고, 상기 세그먼트의 정보는 상기 세그먼트의 경로를 포함할 수 있다.
도 1은 일실시예에 따른 HTTP 기반 라이브 스트리밍 방법을 설명하기 위한도면.
도 2는 미디어 파일을 특정 GOP의 크기로 인코딩한 미디어 스트림을 서로 다른 크기의 세그먼트로 분할한 경우의 세크먼트들을 도시한 도면.
도 3은 동일한 미디어 파일을 30 GOP로 인코딩하여 생성된 미디어 스트림 및 2 GOP로 인코딩하여 생성된 미디어 스트림을 도시한 도면.
도 4는 현재 시점이 30 GOP에 대응되는 세그먼트 내에서 속한 구간에 따라 서로 다른 세그먼트가 선택되는 예를 도시한 도면.
도 5는 청크 전송 인코딩 메커니즘에서 청크 단위의 구조를 도시한 도면.
도 6은 은 일실시예에 따른 HTTP 기반 라이브 스트리밍 서버를 도시한 도면.
본 명세서에서 개시되어 있는 특정한 구조적 또는 기능적 설명들은 단지 기술적 개념에 따른 실시예들을 설명하기 위한 목적으로 예시된 것으로서, 실시예들은 다양한 다른 형태로 실시될 수 있으며 본 명세서에 설명된 실시예들에 한정되지 않는다.
제1 또는 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 이런 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 이해되어야 한다. 예를 들어 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 표현들, 예를 들어 "~간에"와 "바로~간에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함으로 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 해당 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
도 1은 일실시예에 따른 HTTP 기반 라이브 스트리밍 방법을 설명하기 위한도면이다.
라이브 스트리밍 또는 실시간 스트리밍은 비디오 등의 미디어 컨텐츠를 네트워크를 통해 실시간으로 전송 및 재생하는 방식으로, 예를 들어 카메라로 촬영한 영상을 서버를 통해 실시간으로 전송하여 클라이언트의 단말에서 재생하는 방식을 의미한다. HTTP 기반 스트리밍은 HTTP(hyper text transfer protocol)을 이용하여 스트리밍을 위한 서버와 클라이어트 간의 요청 및 응답을 전송하는 스트리밍 방식을 의미한다.
일실시예에 따른 라이브 스트리밍의 대상이 되는 미디어 컨텐츠는 비디오, 오디오 등 다양한 형태의 미디어 컨텐츠를 포함할 수 있으나, 이하에서 영상을 예로 들어 설명한다. 이하에서, 미디어 파일은 컨텐츠 제공자에 의해 서버로 제공된 라이브 스트리밍의 대상이 되는 미디어 컨텐츠 데이터를 의미하고, 미디어 스트림은 미디어 파일을 인코딩하여 생성된 세그먼트 파일들을 의미한다. 미디어 스트림은 스트림 또는 소스 스트림으로 지칭될 수 있다.
도 1을 참조하면, 일실시예에 따른 라이브 스트리밍 방법은 서로 다른 크기의 GOP로 구성된 세그먼트들을 생성하는 단계(110), 라이브 스트리밍의 현재 시점이 제1 세그먼트 내의 제1 구간에 포함되는 경우, 제1 세그먼트의 정보를 포함하도록 메타데이터를 갱신하는 단계(120), 라이브 스트리밍의 현재 시점이 제1 세그먼트 내의 제2 구간에 포함되는 경우, 제2 세그먼트의 정보를 포함하도록 메타데이터를 갱신하는 단계(130), 클라이언트의 재생 요청에 반응하여, 메타데이터를 클라이언트로 제공하는 단계(140), 및 클라이언트로부터 요청되는 세그먼트를 제공하는 단계(150)를 포함한다.
GOP(group of pictures)는 영상을 인코딩한 미디어 스트림 내 프레임들을 그룹화한 단위를 의미한다. 영상을 인코딩하는 것은 영상을 용도에 맞게 변환하는 것을 의미하는 것으로, 예를 들어 영상을 전송 또는 재생하기 위하여 영상의 포맷을 변경하거나 압축하는 것을 의미한다. 영상을 인코딩하는 것은 아날로그 신호로 구성된 미디어 컨텐츠를 디지털 신호로 변경하는 동작을 포함할 수 있고, 영상의 포맷을 스트리밍 방식 및/또는 프로토콜에 따라 변환하는 동작을 포함할 수 있으며, 영상의 용량을 줄이기 위해 압축하는 동작을 포함할 수 있다.
영상을 압축하는 방법으로, 영상 내 프레임들 중 일부 프레임들에 대한 정보는 이전 프레임에서 변화된 정보만 저장하도록 함으로써 영상의 용량을 줄이는 방법이 사용될 수 있다. 이 때, 해당 프레임의 모든 정보를 포함하는 프레임은 I-frame(intra frame), 이전 프레임을 참조하여 변화가 발생된 부분의 정보만을 포함하는 프레임은 P-frame(predictive frame)으로 지칭될 수 있다. 이러한 방식으로 영상을 압축한 미디어 스트림은 자체적으로 렌더링할 수 있는 하나의 I-frame과 이전 프레임을 참조하여 렌더링 할 수 있도록 용량을 줄인 여러 개의 P-frame이 반복되는 구조를 갖게 된다.
I-frame과 이에 후속하는 P-frame들로 구성된 그룹을 GOP(Group of Pictures)라고 한다. GOP의 크기는 하나의 GOP에 포함된 프레임들의 개수를 의미하는 것으로, 다시 말해 미디어 스트림에서 I-frame이 몇 개의 프레임마다 한 번씩 나타나는지를 의미한다. 즉, GOP의 크기가 1이라고 하면 모든 프레임이 I-frame이라는 뜻으로, 압축을 전혀 하지 않은 미디어 스트림에 해당하고, GOP의 크기가 3이라고 하면, 미디어 스트림에서 특정 프레임이 I-frame인 경우 후속하는 2개의 프레임들은 P-frame이고, 그 다음 프레임이 I-frame에 해당한다. 예를 들어, 초당 30 프레임의 영상을 GOP 크기 30으로 인코딩할 경우 1초마다 I-frame이 나타나게 된다.
압축 방법에 따라 압축된 영상은 I-frame, P-frame 및 B-frame(bi-predictive inter frame)을 포함할 수 있는데, B-frame은 이전 프레임 및 이후 프레임 모두를 참조하여 복원될 수 있는 프레임이다. 이 경우 GOP는 하나의 I-frame 및 다른 I-frame이 나오기 전까지의 후속하는 P-frame 및/또는 B-frame으로 구성된 그룹을 의미한다.
미디어 세그먼트 파일은 GOP를 여러 개 묶어서 파일로 생성한 것을 의미하는 것으로, 세그먼트는 영상이 재생되는 단위에 해당할 수 있다. 이하에서 미디어 세그먼트 파일은 간략하게 미디어 세그먼트, 세그먼트 또는 세그먼트 파일로 지칭될 수 있다.
세그먼트의 크기는 시간 단위로 나타낼 수 있다. 예를 들어, 초당 30 프레임의 영상을 GOP 크기 30으로 인코딩한 미디어 스트림을 4초 크기의 세그먼트로 분할하는 경우, 하나의 세그먼트는 도 2에 도시된 세그먼트(210)와 같이 나타낼 수 있다. 도 2를 참조할 때, 세그먼트(210)는 4개의 GOP, 즉 1초에 한번씩 나타나는 I-frame 4개를 포함한다. 도 2의 세그먼트들(220, 230, 240, 250)은 초당 30 프레임의 영상을 GOP 크기 30으로 인코딩한 미디어 스트림을 1초 크기의 세그먼트로 분할했을 때의 4개의 세그먼트들을 도시한 것이다. 이 경우, 하나의 세그먼트는 1개의 GOP, 즉 하나의 I-frame을 포함한다.
즉, 세그먼트의 크기에 따라 세그먼트에 포함되는 GOP의 개수가 결정될 수 있으며, 하나의 세그먼트에는 GOP가 적어도 하나 포함될 수 있다. 특정 세그먼트에 복수 개의 GOP가 포함된 경우, 해당 세그먼트에 포함된 GOP들의 크기는 동일할 수 있다.
실시간 스트리밍에서 실시간으로 송출되는 영상을 세그먼트의 크기에 대응하는 시간 동안 저장한 뒤 세그먼트가 생성될 수 있다. 예를 들어, 초당 30 프레임의 영상을 GOP 크기 30으로 인코딩한 미디어 스트림을 4초 크기의 세그먼트로 분할하는 경우, GOP 4개가 버퍼에 쌓여야 세그먼트가 생성될 수 있다.
일실시예에 따른 서로 다른 크기의 GOP로 구성된 세그먼트들을 생성하는 단계(110)는 라이브 스트리밍을 위하여, 서버가 서로 다른 크기의 GOP를 가지는 세그먼트들을 생성하는 단계에 해당할 수 있다. 서로 다른 크기의 GOP로 구성된 세그먼트들을 생성하는 단계는 라이브 스트리밍의 대상이 되는 미디어 파일을 제1 GOP의 크기로 인코딩하여 제1 GOP에 대응하는 제1 세그먼트를 생성하는 단계 및 동일한 미디어 파일을 제1 GOP의 크기보다 작은 크기의 제2 GOP의 크기로 인코딩하여 제2 GOP에 대응하는 제2 세그먼트를 생성하는 단계를 포함할 수 있다.
여기서, 제1 GOP에 대응하는 제1 세그먼트는 제1 크기의 제1 GOP를 적어도 하나 포함하는 제1 세그먼트에 해당하고, 제2 GOP에 대응하는 제1 세그먼트는 제2 크기의 제2 GOP를 적어도 하나 포함하는 제2 세그먼트에 해당할 수 있다. 하나의 세그먼트에 포함되는 GOP의 개수는 미리 정해진 GOP의 크기 및 세그먼트의 크기에 기초하여 정해질 수 있다. 예를 들어, 초당 30 프레임의 영상을 GOP 크기 30으로 인코딩한 미디어 스트림을 4초 크기의 세그먼트로 분할하도록 미리 정해진 경우, 하나의 세그먼트는 4개의 GOP를 포함하고, 초당 30 프레임의 영상을 GOP 크기 3으로 인코딩한 미디어 스트림을 4초 크기의 세그먼트로 분할하도록 미리 정해진 경우, 하나의 세그먼트는 40개의 GOP를 포함할 수 있다.
다시 말해, 일실시예에 따른 서로 다른 크기의 GOP로 구성된 세그먼트들을 생성하는 단계(110)는 라이브 스트리밍의 대상이 되는 미디어 컨텐츠를 제1 GOP의 크기로 인코딩하여, 제1 GOP를 적어도 하나 포함하는 제1 세그먼트로 분할하고, 동일한 미디어 컨텐츠를 제2 GOP의 크기로 인코딩하여, 제2 GOP를 적어도 하나 포함하는 제2 세그먼트로 분할하는 단계에 해당할 수 있다. 이 때, 생성된 세그먼트들은 서버에 저장될 수 있다. 인코딩 방법에 따라 한번의 인코딩으로 서로 다른 크기의 GOP를 포함하는 미디어 스트림들을 생성할 수도 있다. 인코딩 과정과 미디어 스트림을 분할하여 서로 다른 크기의 GOP로 구성된 세그먼트들을 생성하는 과정은 서로 유기적으로 연동하며 동시에 수행될 수도 있고, 실시예에 따라서 순차적으로 수행될 수도 있다.
제1 GOP 크기 및 제2 GOP 크기는 서로 구분되며, 제2 GOP 크기는 제1 GOP보다 작다. 즉, 일실시예에 따른 단계(110)는 서로 다른 GOP 크기로 동일한 미디어를 인코딩한 2개의 미디어 스트림을 생성하는 단계에 해당할 수 있다. 예를 들어, 도 3을 참조하면, 단계(110)에 따라 서버는 동일한 미디어 컨텐츠에 대해 GOP 크기 30으로 인코딩한 미디어 스트림 및 GOP 크기 2로 인코딩한 미디어 스트림을 생성할 수 있다. 도 3에 GOP 크기 2를 2 GOP로, GOP 크기 30을 30 GOP로 표시한 것과 같이 GOP 크기가 N인 경우 N GOP로 표시할 수 있다.
일실시예에 따른 라이브 스트리밍의 현재 시점이 제1 구간에 포함되는 경우, 제1 세그먼트의 정보를 포함하도록 메타데이터를 갱신하는 단계(120)는 라이브 스트리밍의 현재 시점이 단계(110)에서 생성된 세그먼트들 중 제1 GOP에 대응하는 제1 세그먼트 내의 제1 구간에 포함되는 경우, 서버가 제1 세그먼트의 정보를 포함하도록 라이브 스트리밍 용 메타데이터를 갱신하는 단계에 해당할 수 있다.
일실시예에 따른 라이브 스트리밍의 현재 시점이 제2 구간에 포함되는 경우, 제2 세그먼트의 정보를 포함하도록 메타데이터를 갱신하는 단계(130)는 라이브 스트리밍의 현재 시점이 단계(110)에서 생성된 세그먼트들 중 제1 GOP에 대응하는 제1 세그먼트 내의 제2 구간에 포함되는 경우, 서버가 제2 세그먼트의 정보를 포함하도록 라이브 스트리밍 용 메타데이터를 갱신하는 단계에 해당할 수 있다. 여기서, 제2 세그먼트는 현재 시점을 포함하는 제2 GOP에 대응하는 세그먼트에 해당할 수 있다.
일실시예에 따른 제1 구간 및 제2 구간은 제1 세그먼트 내의 서로 구분되는 구간에 해당하며, 제2 구간은 제1 구간에 후속하는 구간에 해당할 수 있다. 예를 들어, 일실시예에 따른 단계(120) 및 단계(130)는 라이브 스트리밍의 현재 시점이 제1 GOP에 대응하는 제1 세그먼트 내의 특정 기준값보다 앞쪽인 경우, 제2 GOP보다 큰 크기의 제1 GOP에 대응하는 제1 세그먼트의 정보를 포함하도록 메타데이터를 갱신하고, 현재 시점이 특정 기준값보다 뒤쪽인 경우 작은 크기의 제2 GOP에 대응하는 제2 세그먼트의 정보가 포함되도록 메타데이터를 갱신하는 단계에 해당할 수 있다.
일실시예에 따를 때, 제1 구간은 제1 세그먼트 내의 전반부, 즉 제1 세그먼트 내에서 제1 GOP 크기의 절반에 해당하는 앞쪽 구간에 해당할 수 있고, 제2 구간은 제1 세그먼트 내의 후반부, 즉 제1 세그먼트 내에서 제1 GOP 크기의 절반에 해당하는 뒤쪽 구간에 해당할 수 있다.
예를 들어, 도 4를 참조하면 단계(110)에 따라 30 GOP 하나를 포함하는 제1 세그먼트 및 2 GOP 하나를 포함하는 제2 세그먼트가 생성된 경우, 현재 시점(401)이 제1 세그먼트의 전반부인 제1 구간(410)에 포함되면 메타데이터에는 제1 세그먼트의 정보가 포함되고, 현재 시점(402)이 제1 세그먼트의 후반부인 제2 구간(420)에 포함되면 메타데이터에는 제2 세그먼트의 정보가 포함될 수 있다. 현재 재생 시점이 제2 구간(420)에 해당하는 경우, 서버는 일정 기간 동안 작은 크기의 제2 세그먼트의 정보를 포함하도록 메타데이터를 갱신하고, 일정 기간 후에는 큰 크기의 제1 세그먼트를 포함하도록 메타데이터를 갱신할 수 있다. 일정 기간은 미리 정해진 기준에 따라 결정될 수 있으며, 실시예에 따라 다르게 결정될 수 있다.
일실시예에 따른 메타데이터는 클라이언트에서 세그먼트에 접근하고 재생하기 위해 필요한 세그먼트의 정보를 포함할 수 있다. 메타데이터는 세그먼트에 관한 URI(uniform resource identifier) 및 메타데이터에 포함된 정보를 구분하기 위한 태그들을 포함할 수 있다. 메타데이터에 포함되는 세그먼트의 정보는 세그먼트의 경로를 포함할 수 있으며, 세그먼트의 경로는 절대 경로, 상대 경로 및/또는 URL(uniform resource locator)을 포함할 수 있다. 메타데이터는 클라이언트가 세그먼트에 접근하여 미디어를 재생할 수 있도록 클라이언트에게 전송되는 미디어의 플레이리스트에 해당할 수 있다. HTTP 기반 라이브 스트리밍에서 메타데이터는 m3u8 파일 포맷으로 클라이언트로 전송될 수 있다.
일실시예에 따른 단계(120) 또는 단계(130)에서 갱신된 메타데이터는 클라이언트의 재생 요청에 반응하여, 클라이언트에게 제공(140)될 수 있다. 즉, 일실시예에 따른 서버는 클라이언트의 라이브 스트리밍의 대상이 되는 미디어에 대한 재생 요청을 수신한 경우, 재생 요청에 반응하여 메타데이터를 클라이어트에게 제공할 수 있다.
일실시예에 따른 단계(150)에서 클라이언트는 서버로부터 제공받은 메타데이터에 포함된 세그먼트의 정보에 따라 서버에 세그먼트 파일을 요청할 수 있고, 서버는 클라이언트로부터 요청되는 세그먼트를 제공할 수 있다. 이 때, 클라이언트는 메타데이터에 포함된 세그먼트의 경로에 기초하여 서버에 세그먼트를 요청할 수 있다.
일실시예에 따른 클라이언트로부터 요청되는 세그먼트를 제공하는 단계(150)에서, 세그먼트 파일이 생성 중인 경우에도 클라이언트에게 제공될 수 있다. 일실시예에 따른 세그먼트는 서버에서 파일로 생성 완료되기 전이어도 현재 버퍼에 쌓인 작은 단위의 데이터부터 클라이언트에게 제공될 수 있다.
일실시예에 따른 클라이언트로부터 요청되는 세그먼트를 제공하는 단계(150)는 클라이언트로부터 요청된 세그먼트를 청크(chunk) 단위로 세분화하하여 제공하는 단계를 포함할 수 있다. 다시 말해, 일실시예에 따른 세그먼트는 청크 전송 인코딩(chunked transfer encoding) 메커니즘으로 클라이언트에게 제공될 수 있다. 일실시예에 따른 청크는 세그먼트를 재생하기 위한 프레임, 해당 청크를 디코딩 하기 위한 정보 및 해당 청크를 렌더링하기 위한 정보를 포함할 수 있다.
일실시예에 따른 청크의 구조는 도 5를 참조할 수 있다. 도 5는 하나의 I-frame 과 후속하는 11개의 P-frame을 포함하는 세그먼트를 청크 단위로 분할한 것을 도시한 도면이다. 도 5를 참조할 때, 하나의 청크는 'moof' 원자와 'mdat' 원자를 포함하며, 'moof'는 플레이어가 해당 청크를 디코딩 및 렌더링하기 위하여 필요한 정보를 포함하고, 'mdat' 원자는 세그먼트를 재생하기 위하여 필요한 I-frame의 정보를 포함할 수 있다.
도 6은 일실시예에 따른 HTTP 기반 라이브 스트리밍 서버를 도시한 도면이다.
도 6을 참조할 때, 컨텐츠 제공자(610)는 라이브 스트리밍 대상이 되는 미디어 컨텐츠를 생성하여 서버에 제공하는 자로, 예를 들어 영상을 촬영하여 영상 데이터를 생성하는 촬영 장치가 이에 해당할 수 있다. 컨텐츠 제공자(610) 등에 의해 생성된 미디어 컨텐츠는 서버(620)를 통해 클라이언트(630)에 실시간으로 스트리밍될 수 있다.
일실시예에 따른 서버(620)는 생성기(621) 및 선택기(622)를 포함할 수 있다. 일실시예에 따른 생성기(621)는 스트리밍 대상이 되는 미디어 컨텐츠를 인코딩하여 세그먼트들을 생성하는 장치에 해당할 수 있다. 생성기는 스트리밍 대상이 되는 미디어 컨텐츠가 아날로그 신호로 구성된 경우 이를 디지털 신호로 변환하는 동작을 수행할 수 있다. 또한, 미디어 컨텐츠를 서로 다른 GOP 크기로 인코딩하여 세그먼트들을 생성하는 동작을 수행할 수 있다. 다시 말해, 생성기는 라이브 스트리밍의 대상이 되는 미디어 파일을 제1 GOP의 크기로 인코딩하여 제1 GOP에 대응하는 상기 제1 세그먼트를 생성하고, 동일한 미디어 파일을 제1 GOP의 크기보다 작은 크기의 제2 GOP의 크기로 인코딩하여 제2 GOP에 대응하는 제2 세그먼트를 생성하는 동작을 수행할 수 있다.
일실시예에 따른 선택기(622)는 스트리밍의 현재 시점에 따라 세그먼트들 중 어느 하나를 선택하는 동작을 수행할 수 있다. 다시 말해, 라이브 스트리밍의 현재 시점이 세그먼트들 중 제1 GOP에 대응하는 제1 세그먼트 내의 제1 구간에 포함되는 경우, 제1 세그먼트를 선택하고, 현재 시점이 제1 세그먼트 내의 제2 구간에 포함되는 경우, 세그먼트들 제2 세그먼트를 선택하는 동작을 수행할 수 있다. 여기서, 제1 구간 및 제2 구간은 상술한 도 1에서의 제1 구간 및 제2 구간에 대응될 수 있다.
일실시예에 따른 서버(620)는 선택된 세그먼트의 정보를 포함하도록 메타데이터를 갱신하여 이를 클라이언트에게 전달할 수 있다. 클라이언트는 메타데이터에 기초하여 서버에 세그먼트를 요청하고, 서버는 클라이언트의 요청에 반응하여 세그먼트를 클라이언트에 제공할 수 있다.
일실시예에 따른 서버는 상술한 도 1의 단계들(110 내지 150)의 동작을 수행할 수 있다. 도 6에 도시된 서버의 구성은 예시일 뿐이며, 일실시예의 따른 HTTP 기반 라이브 스트리밍 동작은 하나의 서버에 의해 수행될 수도 있고, 복수의 서버들에 의해서 수행될 수도 있는 것으로 서버의 구성을 한정하는 것은 아니다.
이상에서 설명된 실시예들은 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치, 방법 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, 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), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기를 기초로 다양한 기술적 수정 및 변형을 적용할 수 있다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.

Claims (17)

  1. 라이브 스트리밍을 위하여, 서로 다른 크기의 GOP로 구성된 세그먼트들을 생성하는 단계;
    상기 라이브 스트리밍의 현재 시점이 상기 세그먼트들 중 제1 GOP에 대응하는 제1 세그먼트 내의 제1 구간에 포함되는 경우, 상기 제1 세그먼트의 정보를 포함하도록 상기 라이브 스트리밍 용 메타데이터를 갱신하는 단계;
    상기 현재 시점이 상기 제1 세그먼트 내의 제2 구간에 포함되는 경우, 상기 세그먼트들 중 상기 제1 GOP의 크기보다 작은 크기의 제2 GOP에 대응하는 제2 세그먼트의 정보를 포함하도록 상기 메타데이터를 갱신하는 단계;
    클라이언트의 재생 요청에 반응하여, 상기 메타데이터를 상기 클라이언트로 제공하는 단계; 및
    상기 세그먼트들 중 상기 클라이언트로부터 요청되는 세그먼트를 제공하는 단계
    를 포함하는,
    HTTP 기반 라이브 스트리밍 방법.
  2. 제1항에 있어서,
    상기 제2 구간은 상기 제1 구간에 후속하는,
    HTTP 기반 라이브 스트리밍 방법.
  3. 제1항에 있어서,
    상기 제1 구간은 상기 제1 GOP에 대응하는 세그먼트를 반으로 나눈 전반부에 대응하고,
    상기 제2 구간은 상기 제1 GOP에 대응하는 세그먼트를 반으로 나눈 후반부에 대응하는,
    HTTP 기반 라이브 스트리밍 방법.
  4. 제1항에 있어서,
    상기 서로 다른 크기의 GOP로 구성된 세그먼트들을 생성하는 단계는
    상기 라이브 스트리밍의 대상이 되는 미디어 파일을 상기 제1 GOP의 크기로 인코딩하여 상기 제1 GOP에 대응하는 상기 제1 세그먼트를 생성하는 단계; 및
    상기 미디어 파일을 상기 제1 GOP의 크기보다 작은 크기의 상기 제2 GOP의 크기로 인코딩하여 상기 제2 GOP에 대응하는 상기 제2 세그먼트를 생성하는 단계
    를 포함하는,
    HTTP 기반 라이브 스트리밍 방법.
  5. 제1항에 있어서,
    상기 메타데이터는 적어도 하나의 세그먼트의 정보를 포함한 플레이리스트이고,
    상기 메타데이터에 포함된 상기 세그먼트의 상기 정보는
    상기 세그먼트의 URI(Uniform Resource Identifier)를 포함하는,
    HTTP 기반 라이브 스트리밍 방법.
  6. 제1항에 있어서,
    상기 메타데이터를 상기 클라이언트로 제공하는 단계는
    상기 메타데이터를 m3u8 파일 포맷으로 상기 클라이언트에게 제공하는 단계
    를 포함하는,
    HTTP 기반 라이브 스트리밍 방법.
  7. 제1항에 있어서,
    상기 세그먼트들 중 상기 클라이언트로부터 요청되는 세그먼트를 제공하는 단계는
    상기 클라이언트로부터 상기 메타데이터에 포함된 상기 세그먼트의 정보에 기초한 상기 세그먼트의 요청을 수신하는 단계
    를 포함하고,
    상기 세그먼트의 정보는 상기 세그먼트의 경로를 포함하는
    HTTP 기반 라이브 스트리밍 방법.
  8. 제1항에 있어서,
    상기 세그먼트들 중 상기 클라이언트로부터 요청되는 세그먼트를 제공하는 단계는
    상기 세그먼트를 청크 단위로 세분화하하여 제공하는 단계
    를 포함하고,
    상기 청크는 상기 세그먼트를 재생하기 위한 프레임, 상기 청크를 디코딩 하기 위한 정보 및 상기 청크를 렌더링하기 위한 정보를 포함하는,
    HTTP 기반 라이브 스트리밍 방법.
  9. 하드웨어와 결합되어 제1항 내지 제8항 중 어느 하나의 항의 방법을 실행시키기 위하여 매체에 저장된 컴퓨터 프로그램.
  10. 라이브 스트리밍을 위한 서로 다른 크기의 GOP로 구성된 세크먼트들을 저장하는 메모리; 및
    상기 라이브 스트리밍을 위하여, 서로 다른 크기의 GOP로 구성된 세그먼트들을 생성하고, 상기 라이브 스트리밍의 현재 시점이 상기 세그먼트들 중 제1 GOP에 대응하는 제1 세그먼트 내의 제1 구간에 포함되는 경우, 상기 제1 세그먼트의 정보를 포함하도록 상기 라이브 스트리밍 용 메타데이터를 갱신하고, 상기 현재 시점이 상기 제1 세그먼트 내의 제2 구간에 포함되는 경우, 상기 세그먼트들 중 상기 제1 GOP의 크기보다 작은 크기의 제2 GOP에 대응하는 제2 세그먼트의 정보를 포함하도록 상기 메타데이터를 갱신하며, 클라이언트의 재생 요청에 반응하여, 상기 메타데이터를 상기 클라이언트로 제공하고, 상기 세그먼트들 중 상기 클라이언트로부터 요청되는 세그먼트를 제공하는 적어도 하나의 프로세서
    를 포함하는
    HTTP 기반 라이브 스트리밍 장치.
  11. 제10항에 있어서,
    상기 제2 구간은 상기 제1 구간에 후속하는,
    HTTP 기반 라이브 스트리밍 장치.
  12. 제10항에 있어서,
    상기 제1 구간은 상기 제1 GOP에 대응하는 세그먼트를 반으로 나눈 전반부에 대응하고,
    상기 제2 구간은 상기 제1 GOP에 대응하는 세그먼트를 반으로 나눈 후반부에 대응하는,
    HTTP 기반 라이브 스트리밍 장치.
  13. 제10항에 있어서,
    상기 프로세서는
    상기 서로 다른 크기의 GOP로 구성된 세그먼트들을 생성함에 있어서,
    상기 라이브 스트리밍의 대상이 되는 미디어 파일을 상기 제1 GOP의 크기로 인코딩하여 상기 제1 GOP에 대응하는 상기 제1 세그먼트를 생성하고, 상기 미디어 파일을 상기 제1 GOP의 크기보다 작은 크기의 상기 제2 GOP의 크기로 인코딩하여 상기 제2 GOP에 대응하는 상기 제2 세그먼트를 생성하는
    HTTP 기반 라이브 스트리밍 장치.
  14. 제10항에 있어서,
    상기 메타데이터는 적어도 하나의 세그먼트의 정보를 포함한 플레이리스트이고,
    상기 메타데이터에 포함된 상기 세그먼트의 상기 정보는
    상기 세그먼트의 URI(Uniform Resource Identifier)를 포함하는,
    HTTP 기반 라이브 스트리밍 장치.
  15. 제10항에 있어서,
    상기 프로세서는
    상기 메타데이터를 상기 클라이언트로 제공함에 있어서,
    상기 메타데이터를 m3u8 파일 포맷으로 상기 클라이언트에게 제공하는
    HTTP 기반 라이브 스트리밍 장치.
  16. 제10항에 있어서,
    상기 프로세서는
    상기 세그먼트들 중 상기 클라이언트로부터 요청되는 세그먼트를 제공함에 있어서,
    상기 세그먼트를 청크 단위로 세분화하하여 제공하고,
    상기 청크는 상기 세그먼트를 재생하기 위한 프레임, 상기 청크를 디코딩 하기 위한 정보 및 상기 청크를 렌더링하기 위한 정보를 포함하는,
    HTTP 기반 라이브 스트리밍 장치.
  17. 제10항에 있어서,
    상기 프로세서는
    상기 세그먼트들 중 상기 클라이언트로부터 요청되는 세그먼트를 제공함에 있어서,
    상기 클라이언트로부터 상기 메타데이터에 포함된 상기 세그먼트의 정보에 기초한 상기 세그먼트의 요청을 수신하고,
    상기 세그먼트의 정보는 상기 세그먼트의 경로를 포함하는
    HTTP 기반 라이브 스트리밍 장치.

KR1020200022935A 2020-02-25 2020-02-25 Http 기반 라이브 스트리밍 방법 및 장치 KR102314373B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020200022935A KR102314373B1 (ko) 2020-02-25 2020-02-25 Http 기반 라이브 스트리밍 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200022935A KR102314373B1 (ko) 2020-02-25 2020-02-25 Http 기반 라이브 스트리밍 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20210108114A true KR20210108114A (ko) 2021-09-02
KR102314373B1 KR102314373B1 (ko) 2021-10-18

Family

ID=77794517

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200022935A KR102314373B1 (ko) 2020-02-25 2020-02-25 Http 기반 라이브 스트리밍 방법 및 장치

Country Status (1)

Country Link
KR (1) KR102314373B1 (ko)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20120021246A (ko) * 2010-08-31 2012-03-08 (주)휴맥스 Http 스트리밍을 위한 미디어 정보 파일의 전송 및 수신 방법
KR101743228B1 (ko) * 2016-01-22 2017-06-05 네이버 주식회사 스트리밍 장치 및 그 방법, 이를 이용한 스트리밍 서비스 시스템 및 컴퓨터로 판독 가능한 기록매체

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20120021246A (ko) * 2010-08-31 2012-03-08 (주)휴맥스 Http 스트리밍을 위한 미디어 정보 파일의 전송 및 수신 방법
KR101743228B1 (ko) * 2016-01-22 2017-06-05 네이버 주식회사 스트리밍 장치 및 그 방법, 이를 이용한 스트리밍 서비스 시스템 및 컴퓨터로 판독 가능한 기록매체

Also Published As

Publication number Publication date
KR102314373B1 (ko) 2021-10-18

Similar Documents

Publication Publication Date Title
US10547850B2 (en) Audio splitting with codec-enforced frame sizes
US10432982B2 (en) Adaptive bitrate streaming latency reduction
US8818021B2 (en) Watermarking of digital video
US9338467B1 (en) Parallel video transcoding
US9596522B2 (en) Fragmented file structure for live media stream delivery
US20110246603A1 (en) Methods and devices for live streaming using pre-indexed file formats
CN109587514B (zh) 一种视频播放方法、介质和相关装置
JP2015136060A (ja) 通信装置、通信データ生成方法、および通信データ処理方法
EP3515075A1 (en) Video streaming
US20090319557A1 (en) Method, system and software product for streaming content
US20180034883A1 (en) Operating method of client for streaming service
KR102314373B1 (ko) Http 기반 라이브 스트리밍 방법 및 장치
US8811478B2 (en) Data transmission method and apparatus
US20210377329A1 (en) Transcoder conditioning for segment fluidity
US9106802B2 (en) Dual-type of playback for multimedia content
US20170142179A1 (en) Delivery of media content segments in a content delivery network
EP3210383A1 (en) Adaptive bitrate streaming latency reduction
KR101568317B1 (ko) Ip 카메라에서 hls 프로토콜을 지원하는 시스템 및 그 방법
US10623830B1 (en) Dual-representation streaming frames

Legal Events

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