KR102314373B1 - Http-based live streaming method and apparatus - Google Patents
Http-based live streaming method and apparatus Download PDFInfo
- Publication number
- KR102314373B1 KR102314373B1 KR1020200022935A KR20200022935A KR102314373B1 KR 102314373 B1 KR102314373 B1 KR 102314373B1 KR 1020200022935 A KR1020200022935 A KR 1020200022935A KR 20200022935 A KR20200022935 A KR 20200022935A KR 102314373 B1 KR102314373 B1 KR 102314373B1
- Authority
- KR
- South Korea
- Prior art keywords
- segment
- gop
- live streaming
- metadata
- http
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/236—Assembling 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/23614—Multiplexing of additional data and video streams
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/21—Server components or server architectures
- H04N21/218—Source of audio or video content, e.g. local disk arrays
- H04N21/2187—Live feed
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/235—Processing of additional data, e.g. scrambling of additional data or processing content descriptors
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/239—Interfacing the upstream path of the transmission network, e.g. prioritizing client content requests
- H04N21/2393—Interfacing the upstream path of the transmission network, e.g. prioritizing client content requests involving handling client requests
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/60—Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client
- H04N21/63—Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
- H04N21/631—Multimode 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에 대응하는 세그먼트들을 생성하는 단계, 라이브 스트리밍의 현재 시점에 따라 상기 세그먼트들 중 어느 하나의 세그먼트를 선택하는 단계, 선택된 세그먼트의 정보를 포함하도록 메타데이터를 갱신하는 단계,메타데이터를 클라이언트로 제공하는 단계, 메타데이터에 포함된 정보에 기초하여 클라이언트로부터 요청되는 세그먼트를 제공하는 단계를 포함한다.An HTTP-based live streaming method and apparatus with reduced playback latency are disclosed. The embodiment encodes the media content to be live streaming with different sizes of GOPs to generate segments corresponding to different sizes of GOPs, selecting any one of the segments according to the current time of live streaming and updating the metadata to include information of the selected segment, providing the metadata to the client, and providing the segment requested from the client based on the information included in the metadata.
Description
아래 실시예들은 HTTP 기반 라이브 스트리밍 방법 및 장치에 관한 것이다.The following embodiments relate to an HTTP-based live streaming method and apparatus.
스트리밍(streaming)은 소리 및 동영상 등의 멀티미디어 컨텐츠를 서버에서 클라이언트로 전송 및 재생하기 위한 방식 중 하나이다. 서버는 스트리밍을 통해 컨텐츠을 지속적으로 전송하고, 클라이언트는 컨텐츠를 서버로부터 수신하는 동시에 재생할 수 있다.Streaming is one of methods for transmitting and playing multimedia content such as sound and video from a server to a client. The server continuously transmits the content through streaming, and the client can play the content while receiving it from the server.
다양한 프로토콜에 기반한 스트리밍 서비스를 통해 클라이언트는 자신의 전송 채널 등에 적합한 미디어 시퀀스를 서버에 요청할 수 있으며, 서버는 저장된 다양한 퀄리티의 미디어 시퀀스들 중 클라이언트의 요청에 부합하는 미디어 시퀀스를 제공할 수 있다.Through a streaming service based on various protocols, a client may request a media sequence suitable for its own transmission channel, etc. from the server, and the server may provide a media sequence that meets the client's request among stored media sequences of various qualities.
현재의 스트리밍 서비스는 촬영 등에 의해 미디어 컨텐츠가 생성됨과 동시에 클라이언트에게 전송되는 실시간 또는 라이브 스트리밍 서비스를 포함한다. 라이브 스트리밍은 재생 시간이 지연될 수 있고, 많은 비용이 소모될 수 있어, 라이브 스트리밍 서비스를 제공하기 위한 기술이 요구되고 있다.Current streaming services include real-time or live streaming services in which media content is generated by shooting or the like and transmitted to a client at the same time. Live streaming may delay playback time and consume a lot of cost, so a technology for providing a live streaming service is required.
실시예들은 스트리밍의 대상이 되는 미디어 파일을 서로 다른 GOP 크기로인코딩하여, 서로 다른 크기의 GOP로 구성된 세그먼트들을 생성하고, 라이브 스트리밍의 현재 시점에 따라 상기 세그먼트들 중 하나를 선택하여 클라이언트에 제공함으로써, 재생 지연 시간이 단축된 HTTP 기반 라이브 스트리밍 기술을 제공할 수 있다.Embodiments encode a media file to be streamed into different GOP sizes, generate segments composed of GOPs of different sizes, and select one of the segments according to the current time of live streaming and provide it to the client. , can provide HTTP-based live streaming technology with reduced playback latency.
보다 구체적으로, 실시예들은 제1 GOP의 크기로 인코딩된 제1 세그먼트 내에서 현재 시점이 속한 구간에 따라, 제1 세그먼트의 정보 또는 제1 GOP의 크기보다 작은 제2 GOP의 크기로 인코딩된 제2 세그먼트의 정보를 포함하도록 메타데이터를 갱신함으로써, 재생 지연 시간이 단축된 HTTP 기반 라이브 스트리밍 기술을 제공할 수 있다.More specifically, according to the section to which the current view belongs in the first segment encoded with the size of the first GOP, the embodiments provide information on the first segment or the second GOP encoded with the size of the second GOP smaller than the size of the first GOP. By updating the metadata to include the information of the two segments, it is possible to provide HTTP-based live streaming technology with reduced playback delay time.
일 측에 따른 HTTP 기반 라이브 스트리밍 방법은 라이브 스트리밍을 위하여, 서로 다른 크기의 GOP로 구성된 세그먼트들을 생성하는 단계; 상기 라이브 스트리밍의 현재 시점이 상기 세그먼트들 중 제1 GOP에 대응하는 제1 세그먼트 내의 제1 구간에 포함되는 경우, 상기 제1 세그먼트의 정보를 포함하도록 상기 라이브 스트리밍 용 메타데이터를 갱신하는 단계; 상기 현재 시점이 상기 제1 세그먼트 내의 제2 구간에 포함되는 경우, 상기 세그먼트들 중 상기 제1 GOP의 크기보다 작은 크기의 제2 GOP에 대응하는 제2 세그먼트의 정보를 포함하도록 상기 메타데이터를 갱신하는 단계; 클라이언트의 재생 요청에 반응하여, 상기 메타데이터를 상기 클라이언트로 제공하는 단계; 및 상기 세그먼트들 중 상기 클라이언트로부터 요청되는 세그먼트를 제공하는 단계를 포함한다.HTTP-based live streaming method according to one side for live streaming, generating segments composed of GOPs of different sizes; updating the live streaming metadata to include information on the first segment when the current time point of the live streaming is included in a first section in a first segment corresponding to a first GOP among the segments; When the current time is included in the second section within the first segment, the metadata is updated to include information on a second segment corresponding to a second GOP having a size smaller than that of the first GOP among the segments. to do; in response to a playback request of the client, providing the metadata to the client; and providing one of the segments requested by the client.
상기 제2 구간은 상기 제1 구간에 후속하는 구간에 해당할 수 있다.The second section may correspond to a section subsequent to the first section.
상기 제1 구간은 상기 제1 GOP에 대응하는 세그먼트를 반으로 나눈 전반부에 대응하고, 상기 제2 구간은 상기 제1 GOP에 대응하는 세그먼트를 반으로 나눈 후반부에 대응할 수 있다.The first section may correspond to a first half of dividing the segment corresponding to the first GOP in half, and the second section may correspond to a second half of dividing the segment corresponding to the first GOP in half.
상기 서로 다른 크기의 GOP로 구성된 세그먼트들을 생성하는 단계는 상기 라이브 스트리밍의 대상이 되는 미디어 파일을 상기 제1 GOP의 크기로 인코딩하여 상기 제1 GOP에 대응하는 상기 제1 세그먼트를 생성하는 단계; 상기 미디어 파일을 상기 제1 GOP의 크기보다 작은 크기의 상기 제2 GOP의 크기로 인코딩하여 상기 제2 GOP에 대응하는 상기 제2 세그먼트를 생성하는 단계를 포함할 수 있다.The generating of the segments composed of the GOPs of different sizes may include: encoding the media file, which is the target of the live streaming, to the size of the first GOP to generate the first segment corresponding to the first GOP; and encoding the media file to a size of the second GOP that is smaller than a size of the first GOP to generate the second segment corresponding to the second GOP.
상기 메타데이터는 적어도 하나의 세그먼트의 정보를 포함한 플레이리스트이고, 상기 메타데이터에 포함된 상기 세그먼트의 상기 정보는 상기 세그먼트의 URI(Uniform Resource Identifier)를 포함할 수 있다.The metadata may be a playlist including information on at least one segment, and the information on the segment included in the metadata may include a Uniform Resource Identifier (URI) of the segment.
상기 메타데이터를 상기 클라이언트로 제공하는 단계는 상기 메타데이터를 m3u8 파일 포맷으로 상기 클라이언트에게 제공하는 단계를 포함할 수 있다.The providing of the metadata to the client may include providing the metadata to the client in an m3u8 file format.
상기 세그먼트들 중 상기 클라이언트로부터 요청되는 세그먼트를 제공하는 단계는 상기 클라이언트로부터 상기 메타데이터에 포함된 상기 세그먼트의 정보에 기초한 상기 세그먼트의 요청을 수신하는 단계를 포함하고, 상기 세그먼트의 정보는 상기 세그먼트의 경로를 포함할 수 있다.The providing of the segment requested from the client among the segments includes receiving a request for the segment based on information of the segment included in the metadata from the client, wherein the information of the segment includes information about the segment. It can include paths.
상기 세그먼트들 중 상기 클라이언트로부터 요청되는 세그먼트를 제공하는 단계는 상기 세그먼트를 청크 단위로 세분화하하여 제공하는 단계를 포함하고, 상기 청크는 상기 세그먼트를 재생하기 위한 프레임, 상기 청크를 디코딩 하기 위한 정보 및 상기 청크를 렌더링하기 위한 정보를 포함할 수 있다.The step of providing the segment requested from the client among the segments includes subdividing the segment into chunks and providing the segment, wherein the chunk includes a frame for reproducing the segment, information for decoding the chunk, and It may include information for rendering the chunk.
일측에 따른 HTTP 기반 라이브 스트리밍 장치는 라이브 스트리밍을 위한 서로 다른 크기의 GOP로 구성된 세크먼트들을 저장하는 메모리; 및 상기 라이브 스트리밍을 위하여 서로 다른 크기의 GOP로 구성된 세그먼트들을 생성하고, 상기 세그먼트들 중 제1 GOP에 대응하는 제1 세그먼트 내의 제1 구간에 포함되는 경우, 상기 제1 세그먼트의 정보를 포함하도록 상기 라이브 스트리밍 용 메타데이터를 갱신하고, 상기 현재 시점이 상기 제1 세그먼트 내의 제2 구간에 포함되는 경우, 상기 세그먼트들 중 상기 제1 GOP의 크기보다 작은 크기의 제2 GOP에 대응하는 제2 세그먼트의 정보를 포함하도록 상기 메타데이터를 갱신하며, 클라이언트의 재생 요청에 반응하여, 상기 메타데이터를 상기 클라이언트로 제공하고, 상기 세그먼트들 중 상기 클라이언트로부터 요청되는 세그먼트를 제공하는 적어도 하나의 프로세서를 포함한다.HTTP-based live streaming device according to one side is a memory for storing segments composed of GOPs of different sizes for live streaming; and generating segments composed of GOPs of different sizes for the live streaming, and when included in the first section in the first segment corresponding to the first GOP among the segments, to include information on the first segment When the metadata for live streaming is updated and the current time is included in the second section within the first segment, a second segment corresponding to a second GOP having a size smaller than that of the first GOP among the segments. and at least one processor that updates the metadata to include information, provides the metadata to the client in response to a playback request of the client, and provides one of the segments requested from the client.
상기 제2 구간은 상기 제1 구간에 후속하는 구간에 해당할 수 있다.The second section may correspond to a section subsequent to the first section.
상기 제1 구간은 상기 제1 GOP에 대응하는 세그먼트를 반으로 나눈 전반부에 대응하고, 상기 제2 구간은 상기 제1 GOP에 대응하는 세그먼트를 반으로 나눈 후반부에 대응할 수 있다.The first section may correspond to a first half of dividing the segment corresponding to the first GOP in half, and the second section may correspond to a second half of dividing the segment corresponding to the first GOP in half.
상기 프로세서는 상기 서로 다른 크기의 GOP로 구성된 세그먼트들을 생성함에 있어서, 상기 라이브 스트리밍의 대상이 되는 미디어 파일을 상기 제1 GOP의 크기로 인코딩하여 상기 제1 GOP에 대응하는 상기 제1 세그먼트를 생성하고, 상기 미디어 파일을 상기 제1 GOP의 크기보다 작은 크기의 상기 제2 GOP의 크기로 인코딩하여 상기 제2 GOP에 대응하는 상기 제2 세그먼트를 생성할 수 있다.The processor generates the first segment corresponding to the first GOP by encoding the media file, which is the target of the live streaming, to the size of the first GOP in generating the segments composed of the GOPs of different sizes, and , it is possible to generate the second segment corresponding to the second GOP by encoding the media file to a size of the second GOP that is smaller than the size of the first GOP.
상기 메타데이터는 적어도 하나의 세그먼트의 정보를 포함한 플레이리스트이고, 상기 메타데이터에 포함된 상기 세그먼트의 상기 정보는 상기 세그먼트의 URI(Uniform Resource Identifier)를 포함할 수 있다.\The metadata may be a playlist including information on at least one segment, and the information on the segment included in the metadata may include a Uniform Resource Identifier (URI) of the segment.\
상기 프로세서는 상기 메타데이터를 상기 클라이언트로 제공함에 있어서, 상기 메타데이터를 m3u8 파일 포맷으로 상기 클라이언트에게 제공할 수 있다.When providing the metadata to the client, the processor may provide the metadata to the client in an m3u8 file format.
상기 프로세서는 상기 세그먼트들 중 상기 클라이언트로부터 요청되는 세그먼트를 제공함에 있어서, 상기 세그먼트를 청크 단위로 세분화하하여 제공하고, 상기 청크는 상기 세그먼트를 재생하기 위한 프레임, 상기 청크를 디코딩 하기 위한 정보 및 상기 청크를 렌더링하기 위한 정보를 포함할 수 있다.In providing the segment requested by the client among the segments, the processor subdivides the segment into chunks and provides the segment, and the chunk includes a frame for reproducing the segment, information for decoding the chunk, and the It may contain information for rendering the chunk.
상기 프로세서는 상기 세그먼트들 중 상기 클라이언트로부터 요청되는 세그먼트를 제공함에 있어서, 상기 클라이언트로부터 상기 메타데이터에 포함된 상기 세그먼트의 정보에 기초한 상기 세그먼트의 요청을 수신하고, 상기 세그먼트의 정보는 상기 세그먼트의 경로를 포함할 수 있다.When the processor provides a segment requested from the client among the segments, the processor receives a request for the segment based on information on the segment included in the metadata from the client, and the information on the segment is a path of the segment. may include.
도 1은 일실시예에 따른 HTTP 기반 라이브 스트리밍 방법을 설명하기 위한도면.
도 2는 미디어 파일을 특정 GOP의 크기로 인코딩한 미디어 스트림을 서로 다른 크기의 세그먼트로 분할한 경우의 세크먼트들을 도시한 도면.
도 3은 동일한 미디어 파일을 30 GOP로 인코딩하여 생성된 미디어 스트림 및 2 GOP로 인코딩하여 생성된 미디어 스트림을 도시한 도면.
도 4는 현재 시점이 30 GOP에 대응되는 세그먼트 내에서 속한 구간에 따라 서로 다른 세그먼트가 선택되는 예를 도시한 도면.
도 5는 청크 전송 인코딩 메커니즘에서 청크 단위의 구조를 도시한 도면.
도 6은 은 일실시예에 따른 HTTP 기반 라이브 스트리밍 서버를 도시한 도면.1 is a diagram for explaining an HTTP-based live streaming method according to an embodiment.
FIG. 2 is a diagram illustrating segments when a media stream encoded by a media file having a specific GOP size is divided into segments having different sizes; FIG.
3 is a diagram illustrating a media stream generated by encoding the same media file with 30 GOP and a media stream generated by encoding with 2 GOP.
4 is a diagram illustrating an example in which different segments are selected according to a section belonging to a segment corresponding to 30 GOP at a current time point;
5 is a diagram illustrating a structure of a chunk unit in a chunk transfer encoding mechanism.
6 is a diagram illustrating an HTTP-based live streaming server according to an embodiment.
본 명세서에서 개시되어 있는 특정한 구조적 또는 기능적 설명들은 단지 기술적 개념에 따른 실시예들을 설명하기 위한 목적으로 예시된 것으로서, 실시예들은 다양한 다른 형태로 실시될 수 있으며 본 명세서에 설명된 실시예들에 한정되지 않는다.Specific structural or functional descriptions disclosed in this specification are merely illustrative for the purpose of describing embodiments according to technical concepts, and the embodiments may be embodied in various other forms and are limited to the embodiments described herein. doesn't happen
제1 또는 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 이런 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 이해되어야 한다. 예를 들어 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.Terms such as first or second may be used to describe various elements, but these terms should be understood only for the purpose of distinguishing one element from another element. For example, a first component may be termed a second component, and similarly, a second component may also be termed a first component.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 표현들, 예를 들어 "~간에"와 "바로~간에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.When a component is referred to as being “connected” or “connected” to another component, it is understood that the other component may be directly connected or connected to the other component, but other components may exist in between. it should be On the other hand, when it is mentioned that a certain element is "directly connected" or "directly connected" to another element, it should be understood that the other element does not exist in the middle. Expressions describing the relationship between elements, for example, "between" and "between" or "neighboring to" and "directly adjacent to", etc. should be interpreted similarly.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함으로 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.The singular expression includes the plural expression unless the context clearly dictates otherwise. In this specification, terms such as "comprise" or "have" are intended to designate that the described feature, number, step, operation, component, part, or combination thereof exists, and includes one or more other features or numbers, It should be understood that the possibility of the presence or addition of steps, operations, components, parts or combinations thereof is not precluded in advance.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 해당 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.Unless defined otherwise, all terms used herein, including technical or scientific terms, have the same meaning as commonly understood by one of ordinary skill in the art. Terms such as those defined in a commonly used dictionary should be interpreted as having a meaning consistent with the meaning in the context of the related art, and should not be interpreted in an ideal or excessively formal meaning unless explicitly defined in the present specification. does not
도 1은 일실시예에 따른 HTTP 기반 라이브 스트리밍 방법을 설명하기 위한도면이다.1 is a diagram for explaining an HTTP-based live streaming method according to an embodiment.
라이브 스트리밍 또는 실시간 스트리밍은 비디오 등의 미디어 컨텐츠를 네트워크를 통해 실시간으로 전송 및 재생하는 방식으로, 예를 들어 카메라로 촬영한 영상을 서버를 통해 실시간으로 전송하여 클라이언트의 단말에서 재생하는 방식을 의미한다. HTTP 기반 스트리밍은 HTTP(hyper text transfer protocol)을 이용하여 스트리밍을 위한 서버와 클라이어트 간의 요청 및 응답을 전송하는 스트리밍 방식을 의미한다.Live streaming or real-time streaming is a method of transmitting and playing media content, such as video, in real time through a network, for example, a method of transmitting an image captured by a camera in real time through a server and playing it on a client's terminal . HTTP-based streaming refers to a streaming method that transmits a request and a response between a server and a client for streaming using HTTP (hyper text transfer protocol).
일실시예에 따른 라이브 스트리밍의 대상이 되는 미디어 컨텐츠는 비디오, 오디오 등 다양한 형태의 미디어 컨텐츠를 포함할 수 있으나, 이하에서 영상을 예로 들어 설명한다. 이하에서, 미디어 파일은 컨텐츠 제공자에 의해 서버로 제공된 라이브 스트리밍의 대상이 되는 미디어 컨텐츠 데이터를 의미하고, 미디어 스트림은 미디어 파일을 인코딩하여 생성된 세그먼트 파일들을 의미한다. 미디어 스트림은 스트림 또는 소스 스트림으로 지칭될 수 있다.The media content that is the target of live streaming according to an embodiment may include various types of media content such as video and audio. Hereinafter, an image will be described as an example. Hereinafter, a media file means media content data that is a target of live streaming provided by a content provider to a server, and a media stream means segment files generated by encoding a media file. A media stream may be referred to as a stream or a source stream.
도 1을 참조하면, 일실시예에 따른 라이브 스트리밍 방법은 서로 다른 크기의 GOP로 구성된 세그먼트들을 생성하는 단계(110), 라이브 스트리밍의 현재 시점이 제1 세그먼트 내의 제1 구간에 포함되는 경우, 제1 세그먼트의 정보를 포함하도록 메타데이터를 갱신하는 단계(120), 라이브 스트리밍의 현재 시점이 제1 세그먼트 내의 제2 구간에 포함되는 경우, 제2 세그먼트의 정보를 포함하도록 메타데이터를 갱신하는 단계(130), 클라이언트의 재생 요청에 반응하여, 메타데이터를 클라이언트로 제공하는 단계(140), 및 클라이언트로부터 요청되는 세그먼트를 제공하는 단계(150)를 포함한다.Referring to FIG. 1 , in the live streaming method according to an embodiment, generating segments comprising GOPs of different sizes ( 110 ), when the current time point of live streaming is included in the first section within the first segment, the first Updating the metadata to include information on the first segment (120), updating the metadata to include information on the second segment when the current time point of the live streaming is included in the second section in the first segment ( 130), in response to the client's request for playback, providing the metadata to the client (140), and providing the requested segment from the client (150).
GOP(group of pictures)는 영상을 인코딩한 미디어 스트림 내 프레임들을 그룹화한 단위를 의미한다. 영상을 인코딩하는 것은 영상을 용도에 맞게 변환하는 것을 의미하는 것으로, 예를 들어 영상을 전송 또는 재생하기 위하여 영상의 포맷을 변경하거나 압축하는 것을 의미한다. 영상을 인코딩하는 것은 아날로그 신호로 구성된 미디어 컨텐츠를 디지털 신호로 변경하는 동작을 포함할 수 있고, 영상의 포맷을 스트리밍 방식 및/또는 프로토콜에 따라 변환하는 동작을 포함할 수 있으며, 영상의 용량을 줄이기 위해 압축하는 동작을 포함할 수 있다.A group of pictures (GOP) refers to a unit in which frames in a media stream encoding an image are grouped. Encoding an image means converting an image according to a purpose, for example, changing or compressing a format of an image in order to transmit or reproduce the image. Encoding the image may include converting media content composed of an analog signal into a digital signal, and may include converting the format of the image according to a streaming method and/or protocol, and reducing the capacity of the image. It may include an operation of compressing to
영상을 압축하는 방법으로, 영상 내 프레임들 중 일부 프레임들에 대한 정보는 이전 프레임에서 변화된 정보만 저장하도록 함으로써 영상의 용량을 줄이는 방법이 사용될 수 있다. 이 때, 해당 프레임의 모든 정보를 포함하는 프레임은 I-frame(intra frame), 이전 프레임을 참조하여 변화가 발생된 부분의 정보만을 포함하는 프레임은 P-frame(predictive frame)으로 지칭될 수 있다. 이러한 방식으로 영상을 압축한 미디어 스트림은 자체적으로 렌더링할 수 있는 하나의 I-frame과 이전 프레임을 참조하여 렌더링 할 수 있도록 용량을 줄인 여러 개의 P-frame이 반복되는 구조를 갖게 된다.As a method of compressing an image, a method of reducing the capacity of an image by storing only information changed from a previous frame may be used for information on some of the frames in the image. In this case, a frame including all information of the corresponding frame may be referred to as an I-frame (intra frame), and a frame including only information on a portion in which a change occurs with reference to a previous frame may be referred to as a P-frame (predictive frame). . The media stream compressed in this way has a structure in which one I-frame that can be rendered by itself and several P-frames whose capacity is reduced so that they can be rendered with reference to the previous frame are repeated.
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이 나타나게 된다.A group consisting of the I-frame and the P-frames following it is called a GOP (Group of Pictures). The size of the GOP means the number of frames included in one GOP, that is, how many frames an I-frame appears once in the media stream. That is, if the size of GOP is 1, it means that all frames are I-frames, which corresponds to a media stream without compression at all. If the size of GOP is 3, if a specific frame in the media stream is I-frame, it The two frames used are P-frames, and the next frame corresponds to I-frames. For example, when an image of 30 frames per second is encoded with a GOP size of 30, an I-frame appears every second.
압축 방법에 따라 압축된 영상은 I-frame, P-frame 및 B-frame(bi-predictive inter frame)을 포함할 수 있는데, B-frame은 이전 프레임 및 이후 프레임 모두를 참조하여 복원될 수 있는 프레임이다. 이 경우 GOP는 하나의 I-frame 및 다른 I-frame이 나오기 전까지의 후속하는 P-frame 및/또는 B-frame으로 구성된 그룹을 의미한다.An image compressed according to a compression method may include an I-frame, a P-frame, and a bi-predictive inter frame (B-frame). am. In this case, the GOP means a group consisting of one I-frame and a subsequent P-frame and/or B-frame before the other I-frame appears.
미디어 세그먼트 파일은 GOP를 여러 개 묶어서 파일로 생성한 것을 의미하는 것으로, 세그먼트는 영상이 재생되는 단위에 해당할 수 있다. 이하에서 미디어 세그먼트 파일은 간략하게 미디어 세그먼트, 세그먼트 또는 세그먼트 파일로 지칭될 수 있다.A media segment file means that several GOPs are bundled to create a file, and a segment may correspond to a unit in which an image is reproduced. Hereinafter, a media segment file may be briefly referred to as a media segment, a segment, or a segment file.
세그먼트의 크기는 시간 단위로 나타낼 수 있다. 예를 들어, 초당 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을 포함한다.The size of the segment may be expressed in units of time. For example, when a media stream in which an image of 30 frames per second is encoded with a GOP size of 30 is divided into segments having a size of 4 seconds, one segment may be represented as the
즉, 세그먼트의 크기에 따라 세그먼트에 포함되는 GOP의 개수가 결정될 수 있으며, 하나의 세그먼트에는 GOP가 적어도 하나 포함될 수 있다. 특정 세그먼트에 복수 개의 GOP가 포함된 경우, 해당 세그먼트에 포함된 GOP들의 크기는 동일할 수 있다.That is, the number of GOPs included in a segment may be determined according to the size of the segment, and at least one GOP may be included in one segment. When a plurality of GOPs are included in a specific segment, the sizes of the GOPs included in the corresponding segment may be the same.
실시간 스트리밍에서 실시간으로 송출되는 영상을 세그먼트의 크기에 대응하는 시간 동안 저장한 뒤 세그먼트가 생성될 수 있다. 예를 들어, 초당 30 프레임의 영상을 GOP 크기 30으로 인코딩한 미디어 스트림을 4초 크기의 세그먼트로 분할하는 경우, GOP 4개가 버퍼에 쌓여야 세그먼트가 생성될 수 있다.In real-time streaming, a segment may be created after the video transmitted in real time is stored for a time corresponding to the size of the segment. For example, when a media stream encoded by encoding an image of 30 frames per second with a GOP size of 30 is divided into segments with a size of 4 seconds, 4 GOPs must be accumulated in a buffer to generate a segment.
일실시예에 따른 서로 다른 크기의 GOP로 구성된 세그먼트들을 생성하는 단계(110)는 라이브 스트리밍을 위하여, 서버가 서로 다른 크기의 GOP를 가지는 세그먼트들을 생성하는 단계에 해당할 수 있다. 서로 다른 크기의 GOP로 구성된 세그먼트들을 생성하는 단계는 라이브 스트리밍의 대상이 되는 미디어 파일을 제1 GOP의 크기로 인코딩하여 제1 GOP에 대응하는 제1 세그먼트를 생성하는 단계 및 동일한 미디어 파일을 제1 GOP의 크기보다 작은 크기의 제2 GOP의 크기로 인코딩하여 제2 GOP에 대응하는 제2 세그먼트를 생성하는 단계를 포함할 수 있다. The
여기서, 제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를 포함할 수 있다.Here, the first segment corresponding to the first GOP corresponds to a first segment including at least one first GOP of a first size, and the first segment corresponding to the second GOP includes at least a second GOP of a second size. It may correspond to a second segment including one. The number of GOPs included in one segment may be determined based on a predetermined size of the GOP and the size of the segment. For example, if it is predetermined to divide a media stream encoded with a 30 frames per second video into
다시 말해, 일실시예에 따른 서로 다른 크기의 GOP로 구성된 세그먼트들을 생성하는 단계(110)는 라이브 스트리밍의 대상이 되는 미디어 컨텐츠를 제1 GOP의 크기로 인코딩하여, 제1 GOP를 적어도 하나 포함하는 제1 세그먼트로 분할하고, 동일한 미디어 컨텐츠를 제2 GOP의 크기로 인코딩하여, 제2 GOP를 적어도 하나 포함하는 제2 세그먼트로 분할하는 단계에 해당할 수 있다. 이 때, 생성된 세그먼트들은 서버에 저장될 수 있다. 인코딩 방법에 따라 한번의 인코딩으로 서로 다른 크기의 GOP를 포함하는 미디어 스트림들을 생성할 수도 있다. 인코딩 과정과 미디어 스트림을 분할하여 서로 다른 크기의 GOP로 구성된 세그먼트들을 생성하는 과정은 서로 유기적으로 연동하며 동시에 수행될 수도 있고, 실시예에 따라서 순차적으로 수행될 수도 있다.In other words, the
제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로 표시할 수 있다.The first GOP size and the second GOP size are distinguished from each other, and the second GOP size is smaller than the first GOP size. That is,
일실시예에 따른 라이브 스트리밍의 현재 시점이 제1 구간에 포함되는 경우, 제1 세그먼트의 정보를 포함하도록 메타데이터를 갱신하는 단계(120)는 라이브 스트리밍의 현재 시점이 단계(110)에서 생성된 세그먼트들 중 제1 GOP에 대응하는 제1 세그먼트 내의 제1 구간에 포함되는 경우, 서버가 제1 세그먼트의 정보를 포함하도록 라이브 스트리밍 용 메타데이터를 갱신하는 단계에 해당할 수 있다.When the current point of time of live streaming according to an embodiment is included in the first section, updating the metadata to include information of the first segment ( 120 ) includes the current point of time of live streaming generated in step ( 110 ). When included in the first section in the first segment corresponding to the first GOP among the segments, the server may correspond to the step of updating the metadata for live streaming to include the information of the first segment.
일실시예에 따른 라이브 스트리밍의 현재 시점이 제2 구간에 포함되는 경우, 제2 세그먼트의 정보를 포함하도록 메타데이터를 갱신하는 단계(130)는 라이브 스트리밍의 현재 시점이 단계(110)에서 생성된 세그먼트들 중 제1 GOP에 대응하는 제1 세그먼트 내의 제2 구간에 포함되는 경우, 서버가 제2 세그먼트의 정보를 포함하도록 라이브 스트리밍 용 메타데이터를 갱신하는 단계에 해당할 수 있다. 여기서, 제2 세그먼트는 현재 시점을 포함하는 제2 GOP에 대응하는 세그먼트에 해당할 수 있다.When the current time of the live streaming according to an embodiment is included in the second section, the step of updating the metadata to include the information of the
일실시예에 따른 제1 구간 및 제2 구간은 제1 세그먼트 내의 서로 구분되는 구간에 해당하며, 제2 구간은 제1 구간에 후속하는 구간에 해당할 수 있다. 예를 들어, 일실시예에 따른 단계(120) 및 단계(130)는 라이브 스트리밍의 현재 시점이 제1 GOP에 대응하는 제1 세그먼트 내의 특정 기준값보다 앞쪽인 경우, 제2 GOP보다 큰 크기의 제1 GOP에 대응하는 제1 세그먼트의 정보를 포함하도록 메타데이터를 갱신하고, 현재 시점이 특정 기준값보다 뒤쪽인 경우 작은 크기의 제2 GOP에 대응하는 제2 세그먼트의 정보가 포함되도록 메타데이터를 갱신하는 단계에 해당할 수 있다.According to an exemplary embodiment, the first section and the second section may correspond to separate sections within the first segment, and the second section may correspond to a section subsequent to the first section. For example, in
일실시예에 따를 때, 제1 구간은 제1 세그먼트 내의 전반부, 즉 제1 세그먼트 내에서 제1 GOP 크기의 절반에 해당하는 앞쪽 구간에 해당할 수 있고, 제2 구간은 제1 세그먼트 내의 후반부, 즉 제1 세그먼트 내에서 제1 GOP 크기의 절반에 해당하는 뒤쪽 구간에 해당할 수 있다.According to one embodiment, the first section may correspond to the first half in the first segment, that is, the front section corresponding to half the size of the first GOP in the first segment, and the second section is the second half in the first segment; That is, it may correspond to a rear section corresponding to half the size of the first GOP within the first segment.
예를 들어, 도 4를 참조하면 단계(110)에 따라 30 GOP 하나를 포함하는 제1 세그먼트 및 2 GOP 하나를 포함하는 제2 세그먼트가 생성된 경우, 현재 시점(401)이 제1 세그먼트의 전반부인 제1 구간(410)에 포함되면 메타데이터에는 제1 세그먼트의 정보가 포함되고, 현재 시점(402)이 제1 세그먼트의 후반부인 제2 구간(420)에 포함되면 메타데이터에는 제2 세그먼트의 정보가 포함될 수 있다. 현재 재생 시점이 제2 구간(420)에 해당하는 경우, 서버는 일정 기간 동안 작은 크기의 제2 세그먼트의 정보를 포함하도록 메타데이터를 갱신하고, 일정 기간 후에는 큰 크기의 제1 세그먼트를 포함하도록 메타데이터를 갱신할 수 있다. 일정 기간은 미리 정해진 기준에 따라 결정될 수 있으며, 실시예에 따라 다르게 결정될 수 있다.For example, referring to FIG. 4 , when a first segment including one 30 GOP and a second segment including one 2 GOP are generated according to
일실시예에 따른 메타데이터는 클라이언트에서 세그먼트에 접근하고 재생하기 위해 필요한 세그먼트의 정보를 포함할 수 있다. 메타데이터는 세그먼트에 관한 URI(uniform resource identifier) 및 메타데이터에 포함된 정보를 구분하기 위한 태그들을 포함할 수 있다. 메타데이터에 포함되는 세그먼트의 정보는 세그먼트의 경로를 포함할 수 있으며, 세그먼트의 경로는 절대 경로, 상대 경로 및/또는 URL(uniform resource locator)을 포함할 수 있다. 메타데이터는 클라이언트가 세그먼트에 접근하여 미디어를 재생할 수 있도록 클라이언트에게 전송되는 미디어의 플레이리스트에 해당할 수 있다. HTTP 기반 라이브 스트리밍에서 메타데이터는 m3u8 파일 포맷으로 클라이언트로 전송될 수 있다.The metadata according to an embodiment may include information on the segment required for the client to access and play the segment. The metadata may include a uniform resource identifier (URI) regarding a segment and tags for distinguishing information included in the metadata. The segment information included in the metadata may include a path of the segment, and the path of the segment may include an absolute path, a relative path, and/or a uniform resource locator (URL). The metadata may correspond to a playlist of media transmitted to the client so that the client can access the segment and play the media. In HTTP-based live streaming, metadata can be sent to the client in the m3u8 file format.
일실시예에 따른 단계(120) 또는 단계(130)에서 갱신된 메타데이터는 클라이언트의 재생 요청에 반응하여, 클라이언트에게 제공(140)될 수 있다. 즉, 일실시예에 따른 서버는 클라이언트의 라이브 스트리밍의 대상이 되는 미디어에 대한 재생 요청을 수신한 경우, 재생 요청에 반응하여 메타데이터를 클라이어트에게 제공할 수 있다.The metadata updated in
일실시예에 따른 단계(150)에서 클라이언트는 서버로부터 제공받은 메타데이터에 포함된 세그먼트의 정보에 따라 서버에 세그먼트 파일을 요청할 수 있고, 서버는 클라이언트로부터 요청되는 세그먼트를 제공할 수 있다. 이 때, 클라이언트는 메타데이터에 포함된 세그먼트의 경로에 기초하여 서버에 세그먼트를 요청할 수 있다. In
일실시예에 따른 클라이언트로부터 요청되는 세그먼트를 제공하는 단계(150)에서, 세그먼트 파일이 생성 중인 경우에도 클라이언트에게 제공될 수 있다. 일실시예에 따른 세그먼트는 서버에서 파일로 생성 완료되기 전이어도 현재 버퍼에 쌓인 작은 단위의 데이터부터 클라이언트에게 제공될 수 있다.In the
일실시예에 따른 클라이언트로부터 요청되는 세그먼트를 제공하는 단계(150)는 클라이언트로부터 요청된 세그먼트를 청크(chunk) 단위로 세분화하하여 제공하는 단계를 포함할 수 있다. 다시 말해, 일실시예에 따른 세그먼트는 청크 전송 인코딩(chunked transfer encoding) 메커니즘으로 클라이언트에게 제공될 수 있다. 일실시예에 따른 청크는 세그먼트를 재생하기 위한 프레임, 해당 청크를 디코딩 하기 위한 정보 및 해당 청크를 렌더링하기 위한 정보를 포함할 수 있다.The step of providing the segment requested from the
일실시예에 따른 청크의 구조는 도 5를 참조할 수 있다. 도 5는 하나의 I-frame 과 후속하는 11개의 P-frame을 포함하는 세그먼트를 청크 단위로 분할한 것을 도시한 도면이다. 도 5를 참조할 때, 하나의 청크는 'moof' 원자와 'mdat' 원자를 포함하며, 'moof'는 플레이어가 해당 청크를 디코딩 및 렌더링하기 위하여 필요한 정보를 포함하고, 'mdat' 원자는 세그먼트를 재생하기 위하여 필요한 I-frame의 정보를 포함할 수 있다.The structure of a chunk according to an embodiment may refer to FIG. 5 . 5 is a diagram illustrating a segment including one I-frame and 11 subsequent P-frames divided into chunks. Referring to FIG. 5 , one chunk includes an 'moof' atom and an 'mdat' atom, 'moof' includes information necessary for a player to decode and render the corresponding chunk, and an 'mdat' atom is a segment I-frame information required to reproduce
도 6은 일실시예에 따른 HTTP 기반 라이브 스트리밍 서버를 도시한 도면이다.6 is a diagram illustrating an HTTP-based live streaming server according to an embodiment.
도 6을 참조할 때, 컨텐츠 제공자(610)는 라이브 스트리밍 대상이 되는 미디어 컨텐츠를 생성하여 서버에 제공하는 자로, 예를 들어 영상을 촬영하여 영상 데이터를 생성하는 촬영 장치가 이에 해당할 수 있다. 컨텐츠 제공자(610) 등에 의해 생성된 미디어 컨텐츠는 서버(620)를 통해 클라이언트(630)에 실시간으로 스트리밍될 수 있다.Referring to FIG. 6 , a
일실시예에 따른 서버(620)는 생성기(621) 및 선택기(622)를 포함할 수 있다. 일실시예에 따른 생성기(621)는 스트리밍 대상이 되는 미디어 컨텐츠를 인코딩하여 세그먼트들을 생성하는 장치에 해당할 수 있다. 생성기는 스트리밍 대상이 되는 미디어 컨텐츠가 아날로그 신호로 구성된 경우 이를 디지털 신호로 변환하는 동작을 수행할 수 있다. 또한, 미디어 컨텐츠를 서로 다른 GOP 크기로 인코딩하여 세그먼트들을 생성하는 동작을 수행할 수 있다. 다시 말해, 생성기는 라이브 스트리밍의 대상이 되는 미디어 파일을 제1 GOP의 크기로 인코딩하여 제1 GOP에 대응하는 상기 제1 세그먼트를 생성하고, 동일한 미디어 파일을 제1 GOP의 크기보다 작은 크기의 제2 GOP의 크기로 인코딩하여 제2 GOP에 대응하는 제2 세그먼트를 생성하는 동작을 수행할 수 있다.The
일실시예에 따른 선택기(622)는 스트리밍의 현재 시점에 따라 세그먼트들 중 어느 하나를 선택하는 동작을 수행할 수 있다. 다시 말해, 라이브 스트리밍의 현재 시점이 세그먼트들 중 제1 GOP에 대응하는 제1 세그먼트 내의 제1 구간에 포함되는 경우, 제1 세그먼트를 선택하고, 현재 시점이 제1 세그먼트 내의 제2 구간에 포함되는 경우, 세그먼트들 제2 세그먼트를 선택하는 동작을 수행할 수 있다. 여기서, 제1 구간 및 제2 구간은 상술한 도 1에서의 제1 구간 및 제2 구간에 대응될 수 있다.The
일실시예에 따른 서버(620)는 선택된 세그먼트의 정보를 포함하도록 메타데이터를 갱신하여 이를 클라이언트에게 전달할 수 있다. 클라이언트는 메타데이터에 기초하여 서버에 세그먼트를 요청하고, 서버는 클라이언트의 요청에 반응하여 세그먼트를 클라이언트에 제공할 수 있다.The
일실시예에 따른 서버는 상술한 도 1의 단계들(110 내지 150)의 동작을 수행할 수 있다. 도 6에 도시된 서버의 구성은 예시일 뿐이며, 일실시예의 따른 HTTP 기반 라이브 스트리밍 동작은 하나의 서버에 의해 수행될 수도 있고, 복수의 서버들에 의해서 수행될 수도 있는 것으로 서버의 구성을 한정하는 것은 아니다. The server according to an embodiment may perform the operations of
이상에서 설명된 실시예들은 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치, 방법 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.The embodiments described above may be implemented by a hardware component, a software component, and/or a combination of a hardware component and a software component. For example, the apparatus, methods and components described in the embodiments may include, for example, a processor, a controller, an arithmetic logic unit (ALU), a digital signal processor, a microcomputer, a field programmable gate (FPGA). array), a programmable logic unit (PLU), a microprocessor, or any other device capable of executing and responding to instructions. The processing device may execute an operating system (OS) and one or more software applications running on the operating system. The processing device may also access, store, manipulate, process, and generate data in response to execution of the software. For convenience of understanding, although one processing device is sometimes described as being used, one of ordinary skill in the art will recognize that the processing device includes a plurality of processing elements and/or a plurality of types of processing elements. It can be seen that can include For example, the processing device may include a plurality of processors or one processor and one controller. Other processing configurations are also possible, such as parallel processors.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.The software may comprise a computer program, code, instructions, or a combination of one or more thereof, which configures a processing device to operate as desired or is independently or collectively processed You can command the device. The software and/or data may be any kind of machine, component, physical device, virtual equipment, computer storage medium or device, to be interpreted by or to provide instructions or data to the processing device. , or may be permanently or temporarily embody in a transmitted signal wave. The software may be distributed over networked computer systems, and stored or executed in a distributed manner. Software and data may be stored in one or more computer-readable recording media.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.The method according to the embodiment may be implemented in the form of program instructions that can be executed through various computer means and recorded in a computer-readable medium. The computer-readable medium may include program instructions, data files, data structures, etc. alone or in combination. The program instructions recorded on the medium may be specially designed and configured for the embodiment, or may be known and available to those skilled in the art of computer software. Examples of the computer-readable recording medium include magnetic media such as hard disks, floppy disks and magnetic tapes, optical media such as CD-ROMs and DVDs, and magnetic such as floppy disks. - includes magneto-optical media, and hardware devices specially configured to store and carry out program instructions, such as ROM, RAM, flash memory, and the like. Examples of program instructions include not only machine language codes such as those generated by a compiler, but also high-level language codes that can be executed by a computer using an interpreter or the like. The hardware devices described above may be configured to operate as one or more software modules to perform the operations of the embodiments, and vice versa.
이상과 같이 실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기를 기초로 다양한 기술적 수정 및 변형을 적용할 수 있다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.As described above, although the embodiments have been described with reference to the limited drawings, those skilled in the art may apply various technical modifications and variations based on the above. For example, the described techniques are performed in a different order than the described method, and/or the described components of the system, structure, apparatus, circuit, etc. are combined or combined in a different form than the described method, or other components Or substituted or substituted by equivalents may achieve an appropriate result.
Claims (17)
상기 라이브 스트리밍의 현재 시점이 상기 세그먼트들 중 제1 GOP에 대응하는 제1 세그먼트 내의 제1 구간에 포함되는 경우, 상기 제1 세그먼트의 정보를 포함하도록 상기 라이브 스트리밍 용 메타데이터를 갱신하는 단계;
상기 현재 시점이 상기 제1 세그먼트 내의 제2 구간에 포함되는 경우, 상기 세그먼트들 중 상기 제1 GOP의 크기보다 작은 크기의 제2 GOP에 대응하는 제2 세그먼트의 정보를 포함하도록 상기 메타데이터를 갱신하는 단계;
클라이언트의 재생 요청에 반응하여, 상기 메타데이터를 상기 클라이언트로 제공하는 단계; 및
상기 클라이언트의 세그먼트 요청에 반응하여, 상기 현재 시점에 대응하는 상기 제1 세그먼트 및 상기 제2 세그먼트 중 상기 메타데이터에 포함된 세그먼트를 제공하는 단계
를 포함하는,
HTTP 기반 라이브 스트리밍 방법.
For live streaming, generating segments composed of GOPs of different sizes;
updating the live streaming metadata to include information on the first segment when the current time point of the live streaming is included in a first section in a first segment corresponding to a first GOP among the segments;
When the current time point is included in the second section within the first segment, the metadata is updated to include information on a second segment corresponding to a second GOP having a size smaller than that of the first GOP among the segments. to do;
in response to a playback request of the client, providing the metadata to the client; and
providing a segment included in the metadata among the first segment and the second segment corresponding to the current time in response to the client's request for a segment
containing,
HTTP-based live streaming method.
상기 제2 구간은 상기 제1 구간에 후속하는,
HTTP 기반 라이브 스트리밍 방법.
According to claim 1,
The second section follows the first section,
HTTP-based live streaming method.
상기 제1 구간은 상기 제1 GOP에 대응하는 세그먼트를 반으로 나눈 전반부에 대응하고,
상기 제2 구간은 상기 제1 GOP에 대응하는 세그먼트를 반으로 나눈 후반부에 대응하는,
HTTP 기반 라이브 스트리밍 방법.
According to claim 1,
The first section corresponds to the first half of dividing the segment corresponding to the first GOP in half,
The second section corresponds to the second half of dividing the segment corresponding to the first GOP in half,
HTTP-based live streaming method.
상기 서로 다른 크기의 GOP로 구성된 세그먼트들을 생성하는 단계는
상기 라이브 스트리밍의 대상이 되는 미디어 파일을 상기 제1 GOP의 크기로 인코딩하여 상기 제1 GOP에 대응하는 상기 제1 세그먼트를 생성하는 단계; 및
상기 미디어 파일을 상기 제1 GOP의 크기보다 작은 크기의 상기 제2 GOP의 크기로 인코딩하여 상기 제2 GOP에 대응하는 상기 제2 세그먼트를 생성하는 단계
를 포함하는,
HTTP 기반 라이브 스트리밍 방법.
According to claim 1,
The step of generating segments composed of GOPs of different sizes comprises:
generating the first segment corresponding to the first GOP by encoding the media file, which is the target of the live streaming, to the size of the first GOP; and
generating the second segment corresponding to the second GOP by encoding the media file into a size of the second GOP that is smaller than the size of the first GOP
containing,
HTTP-based live streaming method.
상기 메타데이터는 적어도 하나의 세그먼트의 정보를 포함한 플레이리스트이고,
상기 메타데이터에 포함된 상기 세그먼트의 상기 정보는
상기 세그먼트의 URI(Uniform Resource Identifier)를 포함하는,
HTTP 기반 라이브 스트리밍 방법.
According to claim 1,
The metadata is a playlist including information on at least one segment,
The information of the segment included in the metadata is
Containing a Uniform Resource Identifier (URI) of the segment,
HTTP-based live streaming method.
상기 메타데이터를 상기 클라이언트로 제공하는 단계는
상기 메타데이터를 m3u8 파일 포맷으로 상기 클라이언트에게 제공하는 단계
를 포함하는,
HTTP 기반 라이브 스트리밍 방법.
According to claim 1,
The step of providing the metadata to the client includes:
providing the metadata to the client in an m3u8 file format;
containing,
HTTP-based live streaming method.
상기 세그먼트를 제공하는 단계는
상기 클라이언트로부터 상기 메타데이터에 포함된 상기 세그먼트의 정보에 기초한 상기 세그먼트의 요청을 수신하는 단계
를 더 포함하고,
상기 세그먼트의 정보는 상기 세그먼트의 경로를 포함하는
HTTP 기반 라이브 스트리밍 방법.
According to claim 1,
providing the segment
Receiving a request for the segment based on information on the segment included in the metadata from the client
further comprising,
The segment information includes a path of the segment.
HTTP-based live streaming method.
상기 세그먼트를 제공하는 단계는
상기 세그먼트를 청크 단위로 세분화하하여 제공하는 단계
를 포함하고,
상기 청크는 상기 세그먼트를 재생하기 위한 프레임, 상기 청크를 디코딩 하기 위한 정보 및 상기 청크를 렌더링하기 위한 정보를 포함하는,
HTTP 기반 라이브 스트리밍 방법.
According to claim 1,
providing the segment
providing the segment by subdividing the segment into chunks
including,
The chunk includes a frame for playing the segment, information for decoding the chunk, and information for rendering the chunk,
HTTP-based live streaming method.
A computer program stored in a medium for executing the method of any one of claims 1 to 8 in combination with hardware.
상기 라이브 스트리밍을 위하여, 서로 다른 크기의 GOP로 구성된 세그먼트들을 생성하고, 상기 라이브 스트리밍의 현재 시점이 상기 세그먼트들 중 제1 GOP에 대응하는 제1 세그먼트 내의 제1 구간에 포함되는 경우, 상기 제1 세그먼트의 정보를 포함하도록 상기 라이브 스트리밍 용 메타데이터를 갱신하고, 상기 현재 시점이 상기 제1 세그먼트 내의 제2 구간에 포함되는 경우, 상기 세그먼트들 중 상기 제1 GOP의 크기보다 작은 크기의 제2 GOP에 대응하는 제2 세그먼트의 정보를 포함하도록 상기 메타데이터를 갱신하며, 클라이언트의 재생 요청에 반응하여, 상기 메타데이터를 상기 클라이언트로 제공하고, 상기 클라이언트의 세그먼트 요청에 반응하여, 상기 현재 시점에 대응하는 상기 제1 세그먼트 및 상기 제2 세그먼트 중 상기 메타데이터에 포함된 세그먼트를 제공하는 적어도 하나의 프로세서
를 포함하는
HTTP 기반 라이브 스트리밍 장치.
a memory for storing segments composed of GOPs of different sizes for live streaming; and
For the live streaming, segments composed of GOPs of different sizes are generated, and when the current time of the live streaming is included in a first section in a first segment corresponding to the first GOP among the segments, the first When the metadata for live streaming is updated to include segment information, and the current time is included in a second section within the first segment, a second GOP having a size smaller than the size of the first GOP among the segments update the metadata to include information of a second segment corresponding to at least one processor providing a segment included in the metadata among the first segment and the second segment
containing
HTTP-based live streaming device.
상기 제2 구간은 상기 제1 구간에 후속하는,
HTTP 기반 라이브 스트리밍 장치.
11. The method of claim 10,
The second section follows the first section,
HTTP-based live streaming device.
상기 제1 구간은 상기 제1 GOP에 대응하는 세그먼트를 반으로 나눈 전반부에 대응하고,
상기 제2 구간은 상기 제1 GOP에 대응하는 세그먼트를 반으로 나눈 후반부에 대응하는,
HTTP 기반 라이브 스트리밍 장치.
11. The method of claim 10,
The first section corresponds to the first half of dividing the segment corresponding to the first GOP in half,
The second section corresponds to the second half of dividing the segment corresponding to the first GOP in half,
HTTP-based live streaming device.
상기 프로세서는
상기 서로 다른 크기의 GOP로 구성된 세그먼트들을 생성함에 있어서,
상기 라이브 스트리밍의 대상이 되는 미디어 파일을 상기 제1 GOP의 크기로 인코딩하여 상기 제1 GOP에 대응하는 상기 제1 세그먼트를 생성하고, 상기 미디어 파일을 상기 제1 GOP의 크기보다 작은 크기의 상기 제2 GOP의 크기로 인코딩하여 상기 제2 GOP에 대응하는 상기 제2 세그먼트를 생성하는
HTTP 기반 라이브 스트리밍 장치.
11. The method of claim 10,
the processor
In generating segments composed of the GOPs of different sizes,
The first segment corresponding to the first GOP is generated by encoding the media file, which is the target of the live streaming, to the size of the first GOP, and the second segment of the media file is smaller than the size of the first GOP. Encoding to a size of 2 GOPs to generate the second segment corresponding to the second GOP
HTTP-based live streaming device.
상기 메타데이터는 적어도 하나의 세그먼트의 정보를 포함한 플레이리스트이고,
상기 메타데이터에 포함된 상기 세그먼트의 상기 정보는
상기 세그먼트의 URI(Uniform Resource Identifier)를 포함하는,
HTTP 기반 라이브 스트리밍 장치.
11. The method of claim 10,
The metadata is a playlist including information on at least one segment,
The information of the segment included in the metadata is
Containing a Uniform Resource Identifier (URI) of the segment,
HTTP-based live streaming device.
상기 프로세서는
상기 메타데이터를 상기 클라이언트로 제공함에 있어서,
상기 메타데이터를 m3u8 파일 포맷으로 상기 클라이언트에게 제공하는
HTTP 기반 라이브 스트리밍 장치.
11. The method of claim 10,
the processor
In providing the metadata to the client,
providing the metadata to the client in an m3u8 file format
HTTP-based live streaming device.
상기 프로세서는
상기 세그먼트를 제공함에 있어서,
상기 세그먼트를 청크 단위로 세분화하하여 제공하고,
상기 청크는 상기 세그먼트를 재생하기 위한 프레임, 상기 청크를 디코딩 하기 위한 정보 및 상기 청크를 렌더링하기 위한 정보를 포함하는,
HTTP 기반 라이브 스트리밍 장치.
11. The method of claim 10,
the processor
In providing the segment,
subdivide the segment into chunks and provide,
The chunk includes a frame for playing the segment, information for decoding the chunk, and information for rendering the chunk,
HTTP-based live streaming device.
상기 프로세서는
상기 세그먼트를 제공함에 있어서,
상기 클라이언트로부터 상기 메타데이터에 포함된 상기 세그먼트의 정보에 기초한 상기 세그먼트의 요청을 수신하고,
상기 세그먼트의 정보는 상기 세그먼트의 경로를 포함하는
HTTP 기반 라이브 스트리밍 장치.
11. The method of claim 10,
the processor
In providing the segment,
receiving a request for the segment based on information on the segment included in the metadata from the client;
The segment information includes a path of the segment.
HTTP-based live streaming device.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200022935A KR102314373B1 (en) | 2020-02-25 | 2020-02-25 | Http-based live streaming method and apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200022935A KR102314373B1 (en) | 2020-02-25 | 2020-02-25 | Http-based live streaming method and apparatus |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20210108114A KR20210108114A (en) | 2021-09-02 |
KR102314373B1 true KR102314373B1 (en) | 2021-10-18 |
Family
ID=77794517
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020200022935A KR102314373B1 (en) | 2020-02-25 | 2020-02-25 | Http-based live streaming method and apparatus |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102314373B1 (en) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101743228B1 (en) * | 2016-01-22 | 2017-06-05 | 네이버 주식회사 | Streaming apparatus and method thereof, streaming service system using the streaming apparatus and computer readable recording medium |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012030120A2 (en) * | 2010-08-31 | 2012-03-08 | ㈜휴맥스 | Methods of transmitting and receiving a media information file for http streaming |
-
2020
- 2020-02-25 KR KR1020200022935A patent/KR102314373B1/en active IP Right Grant
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101743228B1 (en) * | 2016-01-22 | 2017-06-05 | 네이버 주식회사 | Streaming apparatus and method thereof, streaming service system using the streaming apparatus and computer readable recording medium |
Also Published As
Publication number | Publication date |
---|---|
KR20210108114A (en) | 2021-09-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10230958B2 (en) | Audio splitting with codec-enforced frame sizes | |
CA2965484C (en) | Adaptive bitrate streaming latency reduction | |
US8818021B2 (en) | Watermarking of digital video | |
KR102706030B1 (en) | Video streaming | |
US20110246603A1 (en) | Methods and devices for live streaming using pre-indexed file formats | |
US20130031219A1 (en) | Device And Method For Downloading Movie File | |
US20110302618A1 (en) | Fragmented file structure for live media stream delivery | |
CN109587514B (en) | Video playing method, medium and related device | |
JP2015136060A (en) | Communication device, communication data generation method, and communication data processing method | |
CN106789976A (en) | The player method of media file, service end, client and system | |
KR102455406B1 (en) | Transcoder conditioning for segment fluidity | |
US20090319557A1 (en) | Method, system and software product for streaming content | |
KR102137858B1 (en) | Transmission device, transmission method, reception device, reception method, and program | |
US20180034883A1 (en) | Operating method of client for streaming service | |
KR102314373B1 (en) | Http-based live streaming method and apparatus | |
US20070122123A1 (en) | Data Transmission Method And Apparatus | |
US20170142179A1 (en) | Delivery of media content segments in a content delivery network | |
EP3210383A1 (en) | Adaptive bitrate streaming latency reduction | |
KR101568317B1 (en) | System for supporting hls protocol in ip cameras and the method thereof |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |