KR20160031467A - Operating method of client and server for streaming service - Google Patents

Operating method of client and server for streaming service Download PDF

Info

Publication number
KR20160031467A
KR20160031467A KR1020160023984A KR20160023984A KR20160031467A KR 20160031467 A KR20160031467 A KR 20160031467A KR 1020160023984 A KR1020160023984 A KR 1020160023984A KR 20160023984 A KR20160023984 A KR 20160023984A KR 20160031467 A KR20160031467 A KR 20160031467A
Authority
KR
South Korea
Prior art keywords
file
parameter
data
response packet
client
Prior art date
Application number
KR1020160023984A
Other languages
Korean (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 KR1020160023984A priority Critical patent/KR20160031467A/en
Publication of KR20160031467A publication Critical patent/KR20160031467A/en

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/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/85Assembly of content; Generation of multimedia applications
    • H04N21/858Linking data to content, e.g. by linking an URL to a video object, by creating a hotspot
    • H04N21/8586Linking data to content, e.g. by linking an URL to a video object, by creating a hotspot by using a URL
    • 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/226Characteristics of the server or Internal components of the server
    • H04N21/2265Server identification by a unique number or address, e.g. serial number
    • 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/643Communication protocols
    • H04N21/64322IP
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/85Assembly of content; Generation of multimedia applications
    • H04N21/858Linking data to content, e.g. by linking an URL to a video object, by creating a hotspot

Abstract

Disclosed is an operation method of a client and a server for a streaming service. According to an embodiment of the present invention, the client transmits a request packet including a parameter which commands a data request to a server. According to the embodiment, the server transmits a response packet including data of an address range corresponding to the parameter to the client.

Description

스트리밍 서비스를 위한 클라이언트 및 서버의 동작 방법{OPERATING METHOD OF CLIENT AND SERVER FOR STREAMING SERVICE}[0001] OPERATING METHOD OF CLIENT AND SERVER FOR STREAMING SERVICE [0002]

아래 실시예들은 스트리밍 서비스를 위한 클라이언트 및 서버의 동작 방법에 관한 것이다.The following embodiments relate to a method of operating a client and a server for a streaming service.

본 발명의 배경이 되는 기술은 다음의 문헌에 개시되어 있다.Techniques that constitute the background of the present invention are disclosed in the following documents.

1) 한국 공개특허공보 제2014-0054138호 (2014.05.08 공개)1) Korean Laid-Open Patent Publication No. 2014-0054138 (Published May 2014, 2008)

2) 한국 공개특허공보 제2012-0117384호 (2012.10.24 공개)2) Korea Patent Publication No. 2012-0117384 (disclosed on 24, 2012)

과거 대부분의 스트리밍 기술들은 실시간 스트리밍 프로토콜(Real Time Streaming Protocol, RTSP)과 같은 스트리밍 전용 프로토콜을 이용해 왔다. 하지만, 최근 스트리밍 기술들은 인터넷과 같이 넓게 분포된 HTTP 네트워크 상에서 효율적으로 동작할 수 있도록 설계된다. 예를 들어, 가변 비트레이트 스트리밍(adaptive bitrate streaming)은 네트워크의 상태 혹은 전송 속도 등을 기반으로 대역폭이 소화할 수 있는 화질의 컨텐츠를 전송하는 HTTP 기반의 스트리밍 기법이다.Most streaming technologies in the past have used streaming-only protocols such as the Real Time Streaming Protocol (RTSP). However, recent streaming technologies are designed to work efficiently over a widely distributed HTTP network such as the Internet. For example, adaptive bitrate streaming is an HTTP-based streaming technique that transmits content with quality that can be consumed based on the state of the network or transmission speed.

가변 비트레이트 스트리밍은 파일을 시간 단위로 나누어 전송한다. 예를 들어, 가변 비트레이트 스트리밍은 2~10초의 컨텐츠를 저장하는 조각(chunk)을 이용하여 스트리밍 서비스를 제공할 수 있다. 이 때, 전송되는 조각들 각각은 I-frame 등 미리 정해진 키 프레임으로 시작될 것이 요구된다. 이러한 조건을 만족시키기 위하여, 가변 비트레이트 스트리밍에서는 영상 파일을 스트리밍용 파일로 변환(transcoding)하는 과정이 필수적으로 요구된다. 이러한 변환 과정에서 영상 파일의 화질이 저하되고, 또한 변환을 위한 부수적인 시간 및 컴퓨팅 파워가 추가적으로 소모된다.Variable bitrate streaming transfers files in time units. For example, variable bit rate streaming can provide a streaming service using chunks that store 2 to 10 seconds of content. At this time, each piece to be transmitted is required to start with a predetermined key frame such as an I-frame. In order to satisfy such a condition, a process of transcoding an image file into a streaming file is required in variable bit rate streaming. In this conversion process, the image quality of the image file is degraded, and additional time and computing power for conversion are additionally consumed.

또한, 가변 비트레이트 스트리밍은 매니페스트(manifest) 파일을 필수적으로 이용한다. 매니페스트 파일은 스트리밍용 파일의 각 조각들에 대한 정보를 저장하는 파일이다. 매니페스트 파일은 영상 파일이 스트리밍용 파일로 변환될 때 생성된다. 가변 비트레이트 스트리밍에 따르면, 클라이언트는 스트리밍 서비스를 제공받기 위하여 매니페스트 파일을 필수적으로 참조하여야 한다.Variable bitrate streaming also makes use of a manifest file. The manifest file is a file that stores information about each piece of the streaming file. The manifest file is created when a video file is converted to a streaming file. According to the variable bit rate streaming, the client must refer to the manifest file in order to receive the streaming service.

아래에서 설명할 실시예들은 스트리밍용 파일 포맷을 이용하지 않고, 영상 파일 포맷을 그대로 이용하는 HTTP 기반 스트리밍 기술을 제공한다. 실시예들은 영상 파일을 용량 단위로 나누어 전송하는 기술을 제공한다. 예를 들어, 실시예들은 영상 파일을 실제로 분할하지 않고 영상 파일의 일부를 바이트 주소 단위로 전송하는 스트리밍 서비스를 제공할 수 있다. 실시예들에 따르면, 전송되는 조각들은 키 프레임으로 시작될 것이 요구되지 않으며, 영상 파일을 스트리밍용 파일로 변환하는 과정이 생략될 수 있다.The embodiments described below provide an HTTP-based streaming technique that uses the video file format as it is without using the streaming file format. Embodiments provide techniques for transferring an image file in units of capacity. For example, embodiments may provide a streaming service that transmits a portion of an image file on a byte address basis without actually dividing the image file. According to the embodiments, the transmitted pieces are not required to start with a key frame, and the process of converting a video file to a streaming file can be omitted.

실시예들은 영상 파일을 스트리밍용 파일로 변환하는 과정을 생략함으로써, 변환 시 발생되는 화질 저하를 방지하고 서버의 부하를 감소시킬 수 있다. 또한, 실시예들에 따르면, 영상 파일이 서버에 업로드된 이후 영상 파일을 스트리밍용 파일로 변환하는 시간이 요구되지 않으므로, 보다 신속한 스트리밍 서비스가 제공될 수 있다. 뿐만 아니라, 실시예들에 따르면 스트리밍용 파일이 별도로 생성되지 않으므로, 스트리밍용 파일의 조각 정보를 저장하는 매니페스트 파일이 요구되지 않는다.Embodiments can omit the process of converting the video file into the streaming file, thereby preventing the deterioration of image quality caused in the conversion and reducing the load on the server. Further, according to the embodiments, it is not required to convert a video file into a streaming file after the video file is uploaded to the server, so that a streaming service can be provided more rapidly. In addition, according to the embodiments, since a streaming file is not separately generated, a manifest file for storing fragment information of the streaming file is not required.

일 측에 따른 스트리밍 서비스를 위한 클라이언트의 동작 방법은 파일 URL 및 재생 정보 요청을 지시하는 제1 매개변수를 포함하는 제1 요청 패킷을 전송하는 단계; 상기 파일 URL에 대응하는 파일의 재생 정보를 포함하는 제1 응답 패킷을 수신하는 단계; 상기 파일 URL 및 데이터 요청을 지시하는 제2 매개변수를 포함하는 제2 요청 패킷을 전송하는 단계; 상기 파일 내 상기 제2 매개변수에 대응하는 주소 범위의 데이터를 포함하는 제2 응답 패킷을 수신하는 단계; 상기 제2 응답 패킷으로부터 상기 파일의 키 프레임들을 추출하는 단계; 및 상기 키 프레임들에 기초하여 상기 파일의 키 프레임 정보를 생성하는 단계를 포함한다.A method of operating a client for a streaming service according to one side comprising the steps of: transmitting a first request packet including a file URL and a first parameter indicating a playback information request; Receiving a first response packet including playback information of a file corresponding to the file URL; Sending a second request packet comprising a file URL and a second parameter indicating a data request; Receiving a second response packet including data in an address range corresponding to the second parameter in the file; Extracting key frames of the file from the second response packet; And generating key frame information of the file based on the key frames.

상기 클라이언트의 동작 방법은 상기 제1 매개변수를 미리 정해진 제1 지시자로 설정하는 단계; 상기 제1 응답 패킷으로부터 상기 파일에 저장된 컨텐츠의 해상도, 상기 해상도와 다른 제2 해상도의 컨텐츠를 저장하는 제2 파일의 URL, 및 상기 제2 해상도를 추출하는 단계; 상기 제1 응답 패킷으로부터 상기 파일을 분할하는 제1 조각의 크기 및 상기 제1 조각의 개수 중 적어도 하나를 추출하는 단계; 및 상기 제1 응답 패킷으로부터 상기 제2 파일을 분할하는 제2 조각의 크기 및 상기 제2 조각의 개수 중 적어도 하나를 추출하는 단계를 더 포함할 수 있다.The method comprising: setting the first parameter to a predetermined first indicator; Extracting a resolution of the content stored in the file from the first response packet, a URL of a second file storing a content having a second resolution different from the resolution, and the second resolution; Extracting at least one of a size of the first piece and a number of the first pieces that divide the file from the first response packet; And extracting at least one of a size of the second piece that divides the second file from the first response packet and a number of the second piece.

상기 클라이언트의 동작 방법은 버퍼의 잔량을 체크하는 단계; 상기 버퍼의 잔량이 임계 값 이하가 되면, 상기 제2 매개변수를 다음 재생할 조각의 인덱스로 설정하는 단계; 및 상기 제2 응답 패킷의 데이터를 상기 버퍼에 입력하는 단계를 더 포함할 수 있다.The method of operating the client includes: checking a remaining amount of the buffer; Setting the second parameter to an index of a piece to be reproduced next when the remaining amount of the buffer becomes less than a threshold value; And inputting the data of the second response packet to the buffer.

상기 클라이언트의 동작 방법은 해상도 변경 입력을 수신하는 단계; 및 상기 파일 URL을 상기 해상도 변경 입력에 포함된 새로운 해상도에 대응하는 제2 파일의 URL로 설정하는 단계를 더 포함할 수 있다.The method of operating the client includes receiving a resolution change input; And setting the file URL to a URL of a second file corresponding to the new resolution included in the resolution change input.

상기 클라이언트의 동작 방법은 해상도 변경 입력을 수신하는 단계; 상기 파일 URL을 상기 해상도 변경 입력에 포함된 새로운 해상도에 대응하는 제2 파일의 URL로 설정하는 단계; 현재 재생 시간 및 전체 재생 시간에 기초하여 상기 현재 재생 시간에 대응하는 조각을 추정하는 단계; 상기 제2 매개변수를 상기 추정된 조각의 인덱스로 설정하는 단계; 상기 제2 응답 패킷에 포함된 프레임의 시간이 상기 현재 재생 시간을 기준으로 미리 정해진 범위에 포함되는 경우, 상기 제2 응답 패킷의 데이터로부터 상기 현재 재생 시간 이후에 해당하는 키 프레임을 검출하는 단계; 및 상기 검출된 키 프레임 이후의 데이터를 상기 버퍼에 입력하는 단계를 더 포함할 수 있다.The method of operating the client includes receiving a resolution change input; Setting the file URL to a URL of a second file corresponding to a new resolution included in the resolution change input; Estimating a piece corresponding to the current playback time based on a current playback time and a total playback time; Setting the second parameter to an index of the estimated fragments; Detecting a key frame corresponding to the current playback time from the data of the second response packet when the time of the frame included in the second response packet is included in a predetermined range based on the current playback time; And inputting the data after the detected key frame to the buffer.

상기 클라이언트의 동작 방법은 상기 제2 응답 패킷에 포함된 프레임의 시간이 상기 현재 재생 시간을 기준으로 상기 미리 정해진 범위에 포함되지 않는 경우, 상기 현재 재생 시간에 대응하는 새로운 인덱스를 추정하는 단계; 데이터 요청을 지시하는 제3 매개변수를 상기 새로운 인덱스로 설정하는 단계; 상기 파일 URL 및 상기 제3 매개변수를 포함하는 제3 요청 패킷을 전송하는 단계; 상기 파일 내 상기 제3 매개변수에 대응하는 주소 범위의 데이터를 포함하는 제3 응답 패킷을 수신하는 단계; 및 상기 제3 응답 패킷의 데이터로부터 상기 현재 재생 시간 이후에 해당하는 키 프레임을 검출하는 단계를 더 포함할 수 있다.Estimating a new index corresponding to the current playback time if the time of a frame included in the second response packet is not included in the predetermined range based on the current playback time; Setting a third parameter indicating the data request to the new index; Sending a third request packet comprising the file URL and the third parameter; Receiving a third response packet including data in an address range corresponding to the third parameter in the file; And detecting a key frame corresponding to the current playback time from the data of the third response packet.

상기 클라이언트의 동작 방법은 탐색 시간을 수신하는 단계; 상기 탐색 시간과 상기 파일의 전체 재생 시간에 기초하여 상기 탐색 시간에 대응하는 조각을 추정하는 단계; 상기 제2 매개변수를 상기 추정된 조각의 인덱스로 설정하는 단계; 상기 제2 응답 패킷에 포함된 프레임의 시간이 상기 탐색 시간을 기준으로 미리 정해진 범위에 포함되는 경우, 상기 제2 응답 패킷의 데이터로부터 키 프레임을 검출하는 단계; 및 상기 검출된 키 프레임 이후의 데이터를 버퍼에 입력하는 단계를 더 포함할 수 있다.The method comprising: receiving a search time; Estimating a piece corresponding to the search time based on the search time and the total play time of the file; Setting the second parameter to an index of the estimated fragments; Detecting a key frame from data of the second response packet when a time of a frame included in the second response packet is included in a predetermined range based on the search time; And inputting the data after the detected key frame into a buffer.

상기 클라이언트의 동작 방법은 상기 제2 응답 패킷에 포함된 프레임의 시간이 상기 탐색 시간을 기준으로 미리 정해진 범위에 포함되지 않는 경우, 상기 탐색 시간에 대응하는 새로운 인덱스를 추정하는 단계; 데이터 요청을 지시하는 제3 매개변수를 상기 새로운 인덱스로 설정하는 단계; 상기 파일 URL 및 상기 제3 매개변수를 포함하는 제3 요청 패킷을 전송하는 단계; 상기 파일 내 상기 제3 매개변수에 대응하는 주소 범위의 데이터를 포함하는 제3 응답 패킷을 수신하는 단계; 및 상기 제3 응답 패킷의 데이터로부터 키 프레임을 검출하는 단계를 더 포함할 수 있다.Estimating a new index corresponding to the search time when the time of a frame included in the second response packet is not included in a predetermined range based on the search time; Setting a third parameter indicating the data request to the new index; Sending a third request packet comprising the file URL and the third parameter; Receiving a third response packet including data in an address range corresponding to the third parameter in the file; And detecting a key frame from the data of the third response packet.

상기 클라이언트는 서버와의 통신을 위하여 http 프로토콜을 이용할 수 있다.The client can use the http protocol for communication with the server.

일 측에 따른 스트리밍 서비스를 위한 클라이언트의 동작 방법은 파일 URL 및 재생 정보 요청을 지시하는 제1 매개변수를 포함하는 제1 요청 패킷을 전송하는 단계; 상기 파일 URL에 대응하는 파일의 재생 정보를 포함하는 제1 응답 패킷을 수신하는 단계; 상기 파일 URL 및 데이터 요청을 지시하는 제2 매개변수를 포함하는 제2 요청 패킷을 전송하는 단계; 상기 파일 내 상기 제2 매개변수에 대응하는 주소 범위의 데이터를 포함하는 제2 응답 패킷을 수신하는 단계; 상기 제2 응답 패킷의 데이터를 버퍼에 입력하는 단계; 탐색 시간을 수신하는 단계; 상기 파일의 키 프레임 정보를 이용하여 상기 탐색 시간에 대응하는 키 프레임을 검출하는 단계; 데이터 요청을 지시하는 제3 매개변수를 상기 검출된 키 프레임이 속하는 조각의 인덱스로 설정하는 단계; 상기 파일 URL 및 상기 제3 매개변수를 포함하는 제3 요청 패킷을 전송하는 단계; 상기 파일 내 상기 제3 매개변수에 대응하는 주소 범위의 데이터를 포함하는 제3 응답 패킷을 수신하는 단계; 및 상기 제3 응답 패킷의 데이터를 버퍼에 입력하는 단계를 포함한다.A method of operating a client for a streaming service according to one side comprising the steps of: transmitting a first request packet including a file URL and a first parameter indicating a playback information request; Receiving a first response packet including playback information of a file corresponding to the file URL; Sending a second request packet comprising a file URL and a second parameter indicating a data request; Receiving a second response packet including data in an address range corresponding to the second parameter in the file; Inputting data of the second response packet into a buffer; Receiving search time; Detecting a key frame corresponding to the search time using key frame information of the file; Setting a third parameter indicating a data request to an index of a fragment to which the detected key frame belongs; Sending a third request packet comprising the file URL and the third parameter; Receiving a third response packet including data in an address range corresponding to the third parameter in the file; And inputting the data of the third response packet to the buffer.

상기 제3 요청 패킷의 헤더는 주소 범위 파라미터를 포함하고, 상기 주소 범위 파라미터는 상기 검출된 키 프레임의 주소, 상기 검출된 키 프레임의 주소를 포함하는 주소 범위, 및 상기 검출된 키 프레임의 주소에 대응하는 오프셋 주소 중 적어도 하나를 지시할 수 있다.The header of the third request packet includes an address range parameter, and the address range parameter includes an address of the detected key frame, an address range including the address of the detected key frame, and an address range of the detected key frame And may indicate at least one of the corresponding offset addresses.

일 측에 따른 스트리밍 서비스를 위한 클라이언트의 동작 방법은 파일 URL 및 재생 정보 요청을 지시하는 제1 매개변수를 포함하는 제1 요청 패킷을 전송하는 단계; 상기 파일 URL에 대응하는 파일의 재생 정보를 포함하는 제1 응답 패킷을 수신하는 단계; 상기 파일 URL 및 데이터 요청을 지시하는 제2 매개변수를 포함하는 제2 요청 패킷을 전송하는 단계; 상기 파일 내 상기 제2 매개변수에 대응하는 주소 범위의 데이터를 포함하는 제2 응답 패킷을 수신하는 단계; 상기 제2 응답 패킷의 데이터를 버퍼에 입력하는 단계; 해상도 변경 입력을 수신하는 단계; 상기 파일 URL을 상기 해상도 변경 입력에 포함된 새로운 해상도에 대응하는 제2 파일의 URL로 설정하는 단계; 상기 제2 파일의 키 프레임 정보에 기초하여 현재 재생 시간에 대응하는 키 프레임을 검출하는 단계; 데이터 요청을 지시하는 제3 매개변수를 상기 검출된 키 프레임이 속하는 조각의 인덱스로 설정하는 단계; 및 상기 파일 URL 및 상기 제3 매개변수를 포함하는 제3 요청 패킷을 전송하는 단계; 상기 제2 파일 내 상기 제3 매개변수에 대응하는 주소 범위의 데이터를 포함하는 제3 응답 패킷을 수신하는 단계; 상기 제3 응답 패킷의 데이터를 버퍼에 입력하는 단계를 더 포함한다.A method of operating a client for a streaming service according to one side comprising the steps of: transmitting a first request packet including a file URL and a first parameter indicating a playback information request; Receiving a first response packet including playback information of a file corresponding to the file URL; Sending a second request packet comprising a file URL and a second parameter indicating a data request; Receiving a second response packet including data in an address range corresponding to the second parameter in the file; Inputting data of the second response packet into a buffer; Receiving a resolution change input; Setting the file URL to a URL of a second file corresponding to a new resolution included in the resolution change input; Detecting a key frame corresponding to a current playback time based on key frame information of the second file; Setting a third parameter indicating a data request to an index of a fragment to which the detected key frame belongs; And sending a third request packet comprising the file URL and the third parameter; Receiving a third response packet including data in an address range corresponding to the third parameter in the second file; And inputting the data of the third response packet to the buffer.

상기 제3 요청 패킷의 헤더는 주소 범위 파라미터를 포함하고, 상기 주소 범위 파라미터는 상기 검출된 키 프레임의 주소, 상기 검출된 키 프레임의 주소를 포함하는 주소 범위, 및 상기 검출된 키 프레임의 주소에 대응하는 오프셋 주소 중 적어도 하나를 지시할 수 있다.The header of the third request packet includes an address range parameter, and the address range parameter includes an address of the detected key frame, an address range including the address of the detected key frame, and an address range of the detected key frame And may indicate at least one of the corresponding offset addresses.

일 측에 따른 스트리밍 서비스를 위한 클라이언트의 동작 방법은 파일 URL 및 재생 정보 요청을 지시하는 제1 매개변수를 포함하는 제1 요청 패킷을 전송하는 단계; 상기 파일 URL에 대응하는 파일의 재생 정보를 포함하는 제1 응답 패킷을 수신하는 단계; 데이터 요청을 지시하는 제2 매개변수를 최초 인덱스로 설정하는 단계; 및 상기 파일 URL 및 상기 제2 매개변수를 포함하는 제2 요청 패킷을 전송하는 단계; 상기 파일 내 상기 제2 매개변수에 대응하는 주소 범위의 데이터를 포함하는 제2 응답 패킷을 수신하는 단계; 상기 제2 응답 패킷으로부터 상기 파일의 키 프레임 정보를 위한 오프셋 주소를 추출하는 단계; 상기 오프셋 주소의 데이터가 상기 제2 응답 패킷에 포함된 경우, 상기 제2 응답 패킷으로부터 상기 키 프레임 정보를 추출하는 단계; 상기 오프셋 주소의 데이터가 상기 제2 응답 패킷에 포함되지 않는 경우, 데이터 요청을 지시하는 제3 매개변수를 상기 오프셋 주소로 설정하는 단계; 상기 파일 URL 및 상기 제3 매개변수를 포함하는 제3 요청 패킷을 전송하는 단계; 상기 파일 내 상기 제3 매개변수에 대응하는 주소 범위의 데이터를 포함하는 제3 응답 패킷을 수신하는 단계; 및 상기 제3 응답 패킷으로부터 상기 키 프레임 정보를 추출하는 단계를 포함한다.A method of operating a client for a streaming service according to one side comprising the steps of: transmitting a first request packet including a file URL and a first parameter indicating a playback information request; Receiving a first response packet including playback information of a file corresponding to the file URL; Setting a second parameter indicating a data request to an initial index; And sending a second request packet comprising the file URL and the second parameter; Receiving a second response packet including data in an address range corresponding to the second parameter in the file; Extracting an offset address for key frame information of the file from the second response packet; Extracting the key frame information from the second response packet if data of the offset address is included in the second response packet; Setting a third parameter indicating the data request to the offset address when the data of the offset address is not included in the second response packet; Sending a third request packet comprising the file URL and the third parameter; Receiving a third response packet including data in an address range corresponding to the third parameter in the file; And extracting the key frame information from the third response packet.

일 측에 따른 스트리밍 서비스를 위한 서버의 동작 방법은 파일 URL 및 매개변수를 포함하는 요청 패킷을 수신하는 단계; 상기 매개변수가 데이터 요청을 지시하는 경우, 상기 파일 URL에 대응하는 파일 내 상기 매개변수에 대응하는 주소 범위의 데이터를 응답하는 단계; 및 상기 매개변수가 재생 정보 요청을 지시하는 경우, 상기 파일의 재생 정보를 응답하는 단계를 포함한다.A method of operating a server for a streaming service according to one side includes receiving a request packet including a file URL and parameters; If the parameter indicates a data request, responding data in an address range corresponding to the parameter in the file corresponding to the file URL; And responding to the reproduction information of the file when the parameter indicates the reproduction information request.

상기 데이터를 응답하는 단계는 상기 매개 변수가 인덱스를 포함하고, 상기 요청 패킷의 헤더가 주소 범위 파라미터를 포함하는 경우, 상기 주소 범위 파라미터에 기초하여 상기 파일 내 상기 인덱스에 대응하는 주소 범위의 데이터 중 일부 데이터를 응답하는 단계를 포함한다.Wherein the step of responding to the data comprises the step of, when the parameter includes an index and the header of the request packet includes an address range parameter, extracting, from the data of the address range corresponding to the index in the file, And responding to some data.

상기 재생 정보는 상기 파일에 저장된 컨텐츠의 해상도, 상기 해상도와 다른 제2 해상도의 컨텐츠를 저장하는 제2 파일의 URL, 및 상기 제2 해상도를 포함할 수 있다.The reproduction information may include a resolution of the content stored in the file, a URL of a second file storing a content having a second resolution different from the resolution, and the second resolution.

상기 재생 정보는 상기 파일을 분할하는 제1 조각의 크기 및 상기 제1 조각의 개수 중 적어도 하나, 및 상기 제2 파일을 분할하는 제2 조각의 크기 및 상기 제2 조각의 개수 중 적어도 하나를 더 포함할 수 있다.Wherein the playback information includes at least one of a size of a first piece that divides the file and at least one of the number of the first pieces and a size of a second piece that divides the second file and a number of the second pieces .

상기 인덱스에 대응하는 주소 범위는 상기 파일을 분할하는 조각의 크기에 기초하여 결정될 수 있다.The address range corresponding to the index can be determined based on the size of the piece dividing the file.

상기 서버는 클라이언트와의 통신을 위하여 http 프로토콜을 이용할 수 있다.The server can use the http protocol for communication with the client.

도 1은 일 실시예에 따른 클라이언트의 동작 방법을 설명하는 도면.
도 2 내지 도 7은 일 실시예에 따른 서버의 동작 방법을 설명하는 도면들.
도 8은 일 실시예에 따른 클라이언트의 기본 동작을 설명하는 도면.
도 9 내지 도 11은 일 실시예에 따른 키 프레임 정보를 획득하는 동작을 설명하는 도면들.
도 12 내지 도 14는 일 실시예에 따른 해상도 변경 동작을 설명하는 도면들.
도 15 내지 도 17은 일 실시예에 따른 탐색 동작을 설명하는 도면들.
도 18 및 도 19는 복수의 url 스트림들을 이용하는 클라이언트의 동작을 설명하는 도면들.
1 illustrates a method of operating a client according to an embodiment;
FIGS. 2 to 7 are diagrams for explaining a method of operating a server according to an embodiment; FIG.
8 illustrates a basic operation of a client according to an embodiment;
9 to 11 are diagrams for explaining an operation of obtaining key frame information according to an embodiment;
12 to 14 are diagrams for explaining a resolution changing operation according to an embodiment.
15 to 17 are diagrams for explaining a search operation according to an embodiment;
Figures 18 and 19 illustrate the operation of a client using a plurality of url streams.

이하, 실시예들을 첨부된 도면을 참조하여 상세하게 설명한다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다. 하기에서 설명될 실시예들은 스트리밍 서비스를 위한 클라이언트, 또는 서버에 적용될 수 있다.Hereinafter, embodiments will be described in detail with reference to the accompanying drawings. Like reference symbols in the drawings denote like elements. The embodiments described below can be applied to a client or a server for a streaming service.

일 실시예에 따른 클라이언트는 스트리밍 서비스를 제공받는 컴퓨팅 장치로, 예를 들어 퍼스널 컴퓨터, 랩톱 컴퓨터, 테블릿 컴퓨터, PDA, 스마트 폰 등을 포함할 수 있다. 클라이언트에는 http 프로토콜을 이용하여 서버와 통신하는 클라이언트 어플리케이션, 예를 들어 swf 플레이어 등이 설치될 수 있다. 일 실시예에 따른 서버는 스트리밍 서비스를 제공하는 컴퓨팅 장치로, 예를 들어 웹 서버 등을 포함할 수 있다. 서버는 서버 전용 컴퓨팅 장치뿐 아니라 퍼스널 컴퓨터, 랩톱 컴퓨터, 테블릿 컴퓨터, PDA, 스마트 폰 등으로도 구성될 수 있다. 서버에는 http 프로토콜을 이용하여 클라이언트와 통신하는 서버 어플리케이션, 예를 들어 아파치 서버 등이 설치될 수 있다.A client according to an exemplary embodiment may be a computing device that is provided with a streaming service, for example, a personal computer, a laptop computer, a tablet computer, a PDA, a smart phone, or the like. A client may be installed with a client application communicating with the server using the http protocol, such as a swf player. A server according to an exemplary embodiment is a computing device that provides a streaming service, and may include a web server, for example. The server can be configured not only as a server-specific computing device, but also as a personal computer, laptop computer, tablet computer, PDA, or smart phone. A server application that communicates with a client using the http protocol, for example, an Apache server, may be installed in the server.

도 1은 일 실시예에 따른 클라이언트의 동작 방법을 설명하는 도면이다. 도 1을 참조하면, 일 실시예에 따른 클라이언트(110)는 제1 요청 패킷을 서버(120)로 전송한다. 제1 요청 패킷은 파일 URL 및 재생 정보 요청을 지시하는 제1 매개변수를 포함할 수 있다. 여기서, 파일 URL은 컴퓨터 네트워크 상의 자원을 고유하게 지시하는 정보로, 예를 들어 스트리밍 서비스의 대상이 되는 영상 파일을 고유하게 지시하는 정보일 수 있다. 재생 정보 요청을 지시하는 제1 매개변수는 미리 정해진 문자 또는 문자열로, 예를 들어 'i' 또는 'r' 등일 수 있다. 클라이언트(110)는 제1 요청 패킷을 서버(120)에 전송함으로써, 파일 URL에 대응하는 파일의 재생 정보를 요청할 수 있다. 파일의 재생 정보는 스트리밍 서비스를 통하여 파일을 재생하기 위한 정보로, 예를 들어 전송을 위하여 파일이 분할된 정보 등을 포함할 수 있다.1 is a view for explaining a method of operating a client according to an embodiment. Referring to FIG. 1, a client 110 according to an embodiment transmits a first request packet to a server 120. The first request packet may include a file URL and a first parameter indicating a playback information request. Here, the file URL is information for uniquely indicating a resource on the computer network, for example, information that uniquely indicates a video file to be a streaming service target. The first parameter indicating the playback information request may be a predetermined character or string, for example, 'i' or 'r'. The client 110 may request the playback information of the file corresponding to the file URL by transmitting the first request packet to the server 120. [ The reproduction information of the file is information for reproducing the file through the streaming service. For example, the information of the file may be divided for transmission.

클라이언트(110)는 서버(120)로부터 제1 응답 패킷을 수신한다. 제1 응답 패킷은 파일 URL에 대응하는 파일의 재생 정보를 포함할 수 있다. 전술한 바와 같이, 실시예들은 파일을 용량 단위로 나누어 전송하는 스트리밍 기술을 제공할 수 있다. 이하, 파일을 분할하는 개개의 용량 단위는 조각이라고 지칭될 수 있다.The client 110 receives the first response packet from the server 120. The first response packet may include playback information of the file corresponding to the file URL. As described above, the embodiments can provide a streaming technique in which a file is divided into units of capacity and transmitted. Hereinafter, an individual capacity unit for dividing a file may be referred to as a piece.

일 실시예에 따르면, 파일을 분할하는 조각의 크기는 서버(120)에 의하여 정해질 수 있다. 서버(120)는 파일을 분할하는 조각의 크기에 따라 파일을 분할하는데 필요한 조각의 개수를 계산할 수 있다. 이 경우, 제1 응답 패킷의 재생 정보는 조각의 크기 및 조각의 개수를 포함할 수 있다. 또는, 서버(120)는 제1 응답 패킷에 조각의 크기 및 파일의 총 크기를 포함시킬 수 있다. 이 경우, 클라이언트(110)는 조각의 크기 및 파일의 총 크기에 기초하여 파일을 분할하는데 필요한 조각의 개수를 계산할 수 있다.According to one embodiment, the size of the piece that splits the file may be determined by the server 120. [ The server 120 can calculate the number of pieces required to divide the file according to the size of the piece dividing the file. In this case, the reproduction information of the first response packet may include the size of the piece and the number of pieces. Alternatively, the server 120 may include the size of the piece and the total size of the file in the first response packet. In this case, the client 110 can calculate the number of pieces necessary for dividing the file based on the size of the piece and the total size of the file.

다른 실시예에 따르면, 파일을 분할하는 조각의 크기는 클라이언트(120)에 의하여 정해질 수 있다. 클라이언트(120)는 조각의 크기를 제1 매개변수에 포함시켜 서버(120)로 전송할 수 있다. 서버(120)는 수신된 조각의 크기에 기초하여 파일을 분할하는데 필요한 조각의 개수를 계산할 수 있다. 이 경우, 제1 응답 패킷의 재생 정보는 조각의 개수를 포함할 수 있다. 또는, 서버(120)는 제1 응답 패킷에 파일의 총 크기를 포함시킬 수 있다. 이 경우, 클라이언트(110)는 이미 조각의 크기를 알고 있으므로, 파일의 총 크기에 기초하여 파일을 분할하는데 필요한 조각의 개수를 계산할 수 있다.According to another embodiment, the size of the piece dividing the file may be determined by the client 120. [ The client 120 may include the size of the fragment in the first parameter and send it to the server 120. The server 120 may calculate the number of pieces needed to divide the file based on the size of the received piece. In this case, the reproduction information of the first response packet may include the number of pieces. Alternatively, the server 120 may include the total size of the file in the first response packet. In this case, since the client 110 already knows the size of the piece, it can calculate the number of pieces necessary to divide the file based on the total size of the file.

클라이언트(110)는 제2 요청 패킷을 서버(120)로 전송한다. 제2 요청 패킷은 파일 URL 및 데이터 요청을 지시하는 제2 매개변수를 포함할 수 있다. 데이터 요청을 지시하는 제2 매개변수는 파일 내 주소를 지시하는 숫자 또는 문자열로, 예를 들어 '주소r' 또는 '주소1r주소2' 등일 수 있다. 이하, 파일 내 주소는 바이트 주소일 수 있다. 클라이언트(110)는 제2 요청 패킷을 서버(120)에 전송함으로써, 파일 URL에 대응하는 파일의 적어도 일부를 용량 단위로 요청할 수 있다.The client 110 transmits a second request packet to the server 120. [ The second request packet may include a file URL and a second parameter indicating a data request. The second parameter indicating the data request may be a number or a string indicating the address in the file, for example, 'address r' or 'address 1r address 2'. Hereinafter, the address in the file may be a byte address. The client 110 can request at least a part of the file corresponding to the file URL on a capacity basis by transmitting the second request packet to the server 120. [

클라이언트(110)는 서버(120)로부터 제2 응답 패킷을 수신한다. 제2 응답 패킷은 파일 URL에 대응하는 파일 내 제2 매개변수에 대응하는 주소 범위의 데이터를 포함할 수 있다. 클라이언트(110)는 제2 응답 패킷의 데이터를 버퍼에 입력할 수 있다. 아래에서 상세히 설명하겠으나, 버퍼에 입력된 데이터는 디먹스 및/또는 디코더를 통하여 재생될 수 있다.The client 110 receives the second response packet from the server 120. The second response packet may include data in the address range corresponding to the second parameter in the file corresponding to the file URL. The client 110 may input the data of the second response packet into the buffer. As will be described in detail below, data input to the buffer can be reproduced through a demux and / or a decoder.

도 2 내지 도 7은 일 실시예에 따른 서버의 동작 방법을 설명하는 도면들이다. 도 2를 참조하면, 일 실시예에 따른 서버(220)는 클라이언트(210)로부터 요청 패킷을 수신한다. 요청 패킷은 파일 URL 및 매개변수를 포함할 수 있다. 파일 URL은 컴퓨터 네트워크 상의 자원을 고유하게 지시하는 정보로, 예를 들어 서버(220)에 저장된 파일을 지시하는 정보일 수 있다.2 to 7 are diagrams illustrating a method of operating a server according to an embodiment. Referring to FIG. 2, a server 220 according to an embodiment receives a request packet from a client 210. The request packet may include a file URL and a parameter. The file URL may be information that uniquely indicates a resource on the computer network, for example, information indicating a file stored in the server 220. [

서버(220)는 매개변수가 데이터 요청을 지시하는지, 혹은 재생 정보 요청을 지시하는지 여부를 판단할 수 있다. 예를 들어, 서버(220)는 요청 패킷에 포함된 매개변수가 재생 정보 요청을 지시하는 제1 매개변수인지, 혹은 데이터 요청을 지시하는 제2 매개변수인지 여부를 판단할 수 있다. 재생 정보 요청을 지시하는 제1 매개변수 및 데이터 요청을 지시하는 제2 매개변수는 미리 정해질 수 있고, 서버(220)와 클라이언트(210)는 미리 정해진 제1 매개변수 및 제2 매개변수를 공유할 수 있다.The server 220 can determine whether the parameter indicates a data request or a playback information request. For example, the server 220 may determine whether the parameter included in the request packet is a first parameter indicating a replay information request, or a second parameter indicating a data request. A first parameter indicating a playback information request and a second parameter indicating a data request may be predetermined and the server 220 and the client 210 may share a predetermined first parameter and a second parameter can do.

매개변수가 재생 정보 요청을 지시하는 경우, 서버(220)는 파일의 재생 정보를 응답할 수 있다. 일 예로, 도 3을 참조하면, 서버(320)는 클라이언트(310)로부터 파일1 URL 및 제1 지시자를 포함하는 요청 패킷을 수신할 수 있다. 여기서, 제1 지시자는 미리 정해진 문자 또는 문자열로, 예를 들어 'r'일 수 있다. 요청 패킷 내에서 파일1 URL 및 제1 지시자는 미리 정해진 부호, 예를 들어 '?'로 구분될 수 있다. 서버(320)는 요청 패킷에 포함된 매개변수가 제1 지시자를 포함하는지 여부를 판단할 수 있다.If the parameter indicates a playback information request, the server 220 may respond to the playback information of the file. For example, referring to FIG. 3, the server 320 may receive a request packet including a file 1 URL and a first indicator from the client 310. Here, the first indicator may be a predetermined character or string, for example, 'r'. In the request packet, the file 1 URL and the first indicator may be separated by a predetermined code, for example, '?'. The server 320 may determine whether or not the parameter included in the request packet includes the first indicator.

요청 패킷에 포함된 매개변수가 제1 지시자를 포함하는 경우, 서버(320)는 파일1 URL에 대응하는 제1 파일을 분할하는 조각의 크기(chunk 크기), 조각의 개수(chunk 개수), 및 파일 리스트를 응답할 수 있다. 파일 리스트는 제1 파일의 해상도, 및 제1 파일에 저장된 컨텐츠의 제1 해상도와 다른 해상도의 컨텐츠를 저장하는 적어도 하나의 파일의 URL 및 해상도를 포함할 수 있다. 예를 들어, 파일 리스트는 제1 파일에 저장된 컨텐츠의 제1 해상도(파일1해상도), 제1 해상도와 다른 제2 해상도의 컨텐츠를 저장하는 제2 파일의 URL(파일2URL), 및 제2 해상도(파일2해상도) 등을 포함할 수 있다. 제1 해상도와 다른 해상도의 컨텐츠를 저장하는 파일들이 복수인 경우, 파일 리스트는 복수의 파일들의 URL들 및 해상도들을 포함할 수 있다.If the parameter contained in the request packet includes a first indicator, the server 320 determines the size of the fragment (chunk size), the number of fragments (number of chunks), and the size of the fragment You can respond to the file list. The file list may include the resolution of the first file and the URL and resolution of at least one file that stores content at a resolution different from the first resolution of the content stored in the first file. For example, the file list may include a first resolution (file 1 resolution) of contents stored in the first file, a URL (file 2URL) of a second file storing contents having a second resolution different from the first resolution, (File 2 resolution), and the like. When there are a plurality of files storing contents having a resolution different from the first resolution, the file list may include URLs and resolutions of a plurality of files.

서버(320)는 파일1 URL에 대응하는 제1 파일이 저장된 디렉토리 내에서 제1 해상도와 다른 해상도의 컨텐츠를 저장하는 적어도 하나의 파일을 검색할 수 있다. 예를 들어, 제1 파일이 저장된 디렉토리에 표 1과 같은 파일들이 저장되어 있고, 제1 파일이 '뮤직비디오.mp4'인 경우, 서버(320)는 '뮤직비디오_720p.mp4', '뮤직비디오_480p.mp4', 및 '뮤직비디오_360p.mp4'를 검색할 수 있다.The server 320 may search for at least one file storing contents of a resolution different from the first resolution in the directory where the first file corresponding to the file 1 URL is stored. For example, if the files shown in Table 1 are stored in the directory in which the first file is stored and the first file is 'music video .mp4', the server 320 transmits 'music video_720p.mp4' Video480p.mp4, and music video_360p.mp4.

뮤직비디오.mp4
뮤직비디오_720p.mp4
뮤직비디오_480p.mp4
뮤직비디오_360p.mp4
Music Video .mp4
Music video_720p.mp4
Music video_480p.mp4
Music video_360p.mp4

이 경우, 서버(320)는 표 2와 같은 응답 패킷을 생성하고, 응답 패킷을 클라이언트(310)로 전송할 수 있다.In this case, the server 320 may generate a response packet as shown in Table 2, and may transmit a response packet to the client 310.

20971522097152 9797 10801080 URL2URL2 720720 URL3URL3 480480 URL4URL4 360360

여기서, 응답 패킷의 첫 번째 원소는 chunk 크기이고, 두 번째 원소는 chunk 개수이며, 세 번째 원소는 파일1해상도이고, 네 번째 원소는 파일2URL이며, 다섯 번째 원소는 파일2해상도이고, 여섯 번째 원소는 파일3URL이며, 일곱 번째 원소는 파일3해상도이고, 여덟 번째 원소는 파일4URL이며, 아홉 번째 원소는 파일4해상도이다. chunk 크기는 바이트 단위일 수 있다. Here, the first element of the response packet is the chunk size, the second element is the number of chunks, the third element is the file 1 resolution, the fourth element is the file 2URL, the fifth element is the file 2 resolution, Is the file 3URL, the seventh element is the file 3 resolution, the eighth element is the file 4URL, and the ninth element is the file 4 resolution. The chunk size can be in bytes.

경우에 따라서 통일성 있는 자료 구조를 위하여, 파일 리스트는 동일한 컨텐츠에 대응하는 모든 파일들의 URL들 및 해상도들을 포함할 수 있다. 예를 들어, 파일 리스트는 제1 파일의 URL, 제1 파일의 해상도, 및 제1 파일의 해상도와 다른 해상도의 컨텐츠를 저장하는 적어도 하나의 파일의 URL 및 해상도를 포함할 수 있다. 이 경우, 서버(320)는 표 3과 같은 응답 패킷을 생성하고, 응답 패킷을 클라이언트(310)로 전송할 수 있다.In some cases, for a uniform data structure, the file list may include URLs and resolutions of all files corresponding to the same content. For example, the file list may include the URL of the first file, the resolution of the first file, and the URL and resolution of the at least one file that stores content at a resolution different from the resolution of the first file. In this case, the server 320 may generate a response packet as shown in Table 3, and may transmit the response packet to the client 310.

20971522097152 9797 URL1URL1 1080a1080a URL2URL2 720720 URL3URL3 480480 URL4URL4 360360

여기서, 응답 패킷의 첫 번째 원소는 chunk 크기이고, 두 번째 원소는 chunk 개수이며, 세 번째 원소는 파일1URL이고, 네 번째 원소는 파일1해상도이며, 다섯 번째 원소는 파일2URL이고, 여섯 번째 원소는 파일2해상도이며, 일곱 번째 원소는 파일3URL이고, 여덟 번째 원소는 파일3해상도이며, 아홉 번째 원소는 파일4URL이고, 열 번째 원소는 파일4해상도이다. chunk 크기는 바이트 단위일 수 있다. 현재 요청된 파일(제1 파일)의 해상도가 1080(파일1해상도)라는 것을 표시하기 위하여, 파일1해상도의 말미에 미리 정해진 문자 또는 문자열, 예를 들어 'a'가 추가될 수 있다.Here, the first element of the response packet is the size of the chunk, the second element is the number of chunks, the third element is the file 1URL, the fourth element is the file 1 resolution, the fifth element is the file 2URL, File 2 resolution, the seventh element is file 3URL, the eighth element is file 3 resolution, the ninth element is file 4URL, and the tenth element is file 4 resolution. The chunk size can be in bytes. A predefined character or string, e.g., 'a', may be appended to the end of the file 1 resolution to indicate that the resolution of the currently requested file (first file) is 1080 (file 1 resolution).

각각의 파일들은 파일명에 해상도를 포함할 수 있다. 예를 들어, 서버(320)는 원본 영상 파일인 '뮤직비디오.mp4'의 업로드가 완료되면, '뮤직비디오.mp4'를 새로운 해상도로 인코딩을 할 수 있다. 이 때, 서버(320)는 원본 영상 파일의 파일명에 새로운 해상도를 부가하여, 새로운 해상도의 파일명을 결정할 수 있다. 이 경우, 서버(320)는 파일명에 기초하여 해당하는 파일에 저장된 컨텐츠의 해상도를 획득(obtain)할 수 있다.Each file can contain a resolution in the file name. For example, the server 320 can encode 'music video .mp4' at a new resolution when the upload of the original music video file 'music video .mp4' is completed. At this time, the server 320 can determine a file name of a new resolution by adding a new resolution to the file name of the original image file. In this case, the server 320 may obtain the resolution of the content stored in the file based on the file name.

다른 예로, 도 4를 참조하면, 서버(420)는 클라이언트(410)로부터 파일 URL 및 제2 지시자를 포함하는 요청 패킷을 수신할 수 있다. 여기서, 제2 지시자는 미리 정해진 문자 또는 문자열로, 예를 들어 'i'일 수 있다. 요청 패킷 내에서 파일 URL 및 제2 지시자는 미리 정해진 부호, 예를 들어 '?'로 구분될 수 있다. 서버(420)는 요청 패킷에 포함된 매개변수가 제2 지시자를 포함하는지 여부를 판단할 수 있다. 요청 패킷에 포함된 매개변수가 제2 지시자를 포함하는 경우, 서버(420)는 파일 URL에 대응하는 파일을 분할하는 조각의 크기(chunk 크기), 및 조각의 개수(chunk 개수)를 응답할 수 있다.As another example, referring to FIG. 4, the server 420 may receive a request packet including a file URL and a second indicator from the client 410. Here, the second indicator may be a predetermined character or string, for example, 'i'. In the request packet, the file URL and the second indicator may be separated by a predetermined code, for example, '?'. The server 420 may determine whether the parameter included in the request packet includes the second indicator. If the parameters contained in the request packet include a second indicator, the server 420 can respond to the size (chunk size) of the fragment that divides the file corresponding to the file URL and the number of chunks (the number of chunks) have.

예를 들어, 요청 패킷이 '파일3URL?i'인 경우, 서버(420)는 표 4와 같은 응답 패킷을 생성하고, 응답 패킷을 클라이언트(410)로 전송할 수 있다.For example, if the request packet is 'file 3URL? I', the server 420 may generate a response packet as shown in Table 4 and send the response packet to the client 410.

10485761048576 8686

여기서, 응답 패킷의 첫 번째 원소는 chunk 크기이고, 두 번째 원소는 chunk 개수이다. chunk 크기는 바이트 단위일 수 있다. 표 1을 참조하면, 각각의 파일들을 분할하는 chunk 크기는 서로 다르게 설정될 수 있다. 다만, 실시예들은 각각의 파일들을 분할하는 chunk 크기가 서로 다르게 설정되도록 제한되지 않는다. 예를 들어, 각각의 파일들을 분할하는 chunk 크기는 서로 동일하게 설정될 수도 있다.Here, the first element of the response packet is the size of the chunk, and the second element is the number of chunks. The chunk size can be in bytes. Referring to Table 1, the sizes of the chunks for dividing the respective files can be set to be different from each other. However, the embodiments are not limited such that chunk sizes for dividing the respective files are set to be different from each other. For example, the sizes of the chunks for dividing each file may be set equal to each other.

다시 도 2를 참조하면, 매개변수가 데이터 요청을 지시하는 경우, 서버(220)는 파일 URL에 대응하는 파일 내 매개변수에 대응하는 주소 범위의 데이터를 응답할 수 있다. 일 예로, 도 5를 참조하면, 서버(520)는 클라이언트(510)로부터 파일 URL 및 인덱스를 포함하는 요청 패킷을 수신할 수 있다. 여기서, 인덱스는 0 이상의 정수일 수 있다. 요청 패킷 내 파일 URL 및 인덱스는 미리 정해진 부호, 예를 들어 '?'로 구분될 수 있다. 서버(520)는 요청 패킷에 포함된 매개변수가 인덱스를 포함하는지 여부를 판단할 수 있다. 요청 패킷에 포함된 매개변수가 인덱스를 포함하는 경우, 서버(520)는 파일 URL에 대응하는 파일 내 인덱스에 대응하는 주소 범위의 데이터를 응답할 수 있다.Referring again to FIG. 2, if the parameter indicates a data request, the server 220 may respond to the data in the address range corresponding to the parameter in the file corresponding to the file URL. 5, the server 520 may receive a request packet including a file URL and an index from the client 510. [ Here, the index may be an integer equal to or greater than zero. The file URL and index in the request packet can be separated by a predetermined code, for example, '?'. The server 520 may determine whether the parameters included in the request packet include an index. If the parameter included in the request packet includes an index, the server 520 may respond to the data in the address range corresponding to the in-file index corresponding to the file URL.

예를 들어, 요청 패킷이 '파일URL?n'인 경우, 서버(520)는 파일URL에 대응하는 파일을 분할하는 조각의 크기를 획득할 수 있다. 파일을 위한 chunk 크기가 2097152 바이트인 경우, 서버(520)는 표 5와 같은 데이터를 클라이언트(510)로 전송할 수 있다. 표 5의 데이터는 chunk-n으로 지칭될 수 있다.For example, if the request packet is a 'file URL? N', the server 520 may obtain the size of the fragment that divides the file corresponding to the file URL. If the size of the chunk for the file is 2097152 bytes, the server 520 can transmit data as shown in Table 5 to the client 510. The data in Table 5 may be referred to as chunk-n.

[(2097152)*n, (2097152)*(n+1)-1][(2097152) * n, (2097152) * (n + 1) -1]

여기서, [제1 바이트 주소, 제2 바이트 주소]는 제1 바이트 주소부터 제2 바이트 주소까지의 데이터이다.Here, [first byte address, second byte address] is data from the first byte address to the second byte address.

다른 예로, 파일 URL 및 인덱스를 포함하는 요청 패킷은 헤더(header)를 포함할 수 있다. 헤더는 주소 범위 파라미터를 포함할 수 있다. 헤더는 http 헤더일 수 있다. 서버(520)는 요청 패킷의 헤더에 포함된 주소 범위 파라미터를 이용하여 인덱스에 대응하는 조각의 일부 데이터를 클라이언트(510)로 전송할 수 있다. 예를 들어, 요청 패킷에 포함된 파일 URL에 대응하는 파일을 위한 chunk 크기가 2097152 바이트이고, 요청 패킷에 포함된 인덱스가 n이며, 요청패킷의 주소 범위 파라미터가 (start range, end range)인 경우, 서버(520)는 표 6과 같은 데이터를 클라이언트(510)로 전송할 수 있다.As another example, a request packet including a file URL and an index may include a header. The header may contain an address range parameter. The header may be an http header. The server 520 may transmit the piece of data of the piece corresponding to the index to the client 510 using the address range parameter included in the header of the request packet. For example, if the chunk size for the file corresponding to the file URL included in the request packet is 2097152 bytes, the index included in the request packet is n, and the address range parameter of the request packet is (start range, end range) , The server 520 can transmit data as shown in Table 6 to the client 510. [

[(2097152)*n + start range, (2097152)*n + end range][(2097152) * n + start range, (2097152) * n + end range]

여기서, start range와 end range의 단위는 바이트일 수 있다. 서버(520)는 캐시 서버를 포함할 수 있다. 캐시 서버는 파일 URL 및 인덱스에 기초하여 조각 데이터를 캐시할 수 있다. 이 경우, 요청 패킷의 헤더에 포함된 주소 범위 파라미터가 상이하더라도, 요청 패킷에 포함된 파일 URL 및 인덱스가 동일하면, 캐시 서버에 캐싱된 조각 데이터가 활용될 수 있다.Here, units of start range and end range may be bytes. The server 520 may include a cache server. The cache server may cache fragmented data based on the file URL and index. In this case, even if the address range parameter included in the header of the request packet is different, fragment data cached to the cache server can be utilized if the file URL and index included in the request packet are the same.

또 다른 예로, 도 6을 참조하면, 서버(620)는 클라이언트(610)로부터 파일 URL 및 주소를 포함하는 요청 패킷을 수신할 수 있다. 여기서, 주소는 바이트 주소일 수 있다. 요청 패킷 내 파일 URL 및 주소는 미리 정해진 부호, 예를 들어 '?'로 구분될 수 있다. 주소와 인덱스를 구별하기 위하여, 주소 뒤에는 미리 정해진 문자 또는 문자열, 예를 들어 'r'이 추가될 수 있다. 서버(620)는 요청 패킷에 포함된 매개변수가 주소를 포함하는지 여부를 판단할 수 있다. 요청 패킷에 포함된 매개변수가 주소를 포함하는 경우, 서버(620)는 파일 URL에 대응하는 파일 내 주소에 대응하는 주소 범위의 데이터를 응답할 수 있다.As another example, referring to FIG. 6, the server 620 may receive a request packet including a file URL and an address from the client 610. Here, the address may be a byte address. The file URL and address in the request packet can be separated by a predetermined code, for example, '?'. To distinguish the address from the index, a predefined character or string, for example 'r', may be appended to the address. The server 620 may determine whether the parameters included in the request packet include an address. If the parameter included in the request packet includes an address, the server 620 may respond to the data in the address range corresponding to the address in the file corresponding to the file URL.

예를 들어, 요청 패킷이 '파일URL?주소r'인 경우, 서버(620)는 표 7과 같은 데이터를 클라이언트(610)로 전송할 수 있다.For example, if the request packet is a 'file URL? Address r', the server 620 may transmit data as shown in Table 7 to the client 610.

[주소, 파일 끝][Address, end of file]

여기서, [주소, 파일 끝]은 주소부터 파일 끝까지의 데이터이다.Here, [address, file end] is the data from the address to the end of the file.

또 다른 예로, 도 7을 참조하면, 서버(720)는 클라이언트(710)로부터 파일 URL 및 복수의 주소들, 예를 들어 제1 주소와 제2 주소를 포함하는 요청 패킷을 수신할 수 있다. 여기서, 복수의 주소들은 각각 바이트 주소일 수 있다. 요청 패킷 내 파일 URL 및 복수의 주소들은 미리 정해진 부호, 예를 들어 '?'로 구분될 수 있다. 또한, 복수의 주소들을 서로 구별하기 위하여, 복수의 주소들 사이에 미리 정해진 문자 또는 문자열, 예를 들어 'r'이 추가될 수 있다. 서버(720)는 요청 패킷에 포함된 매개변수가 복수의 주소들을 포함하는지 여부를 판단할 수 있다. 요청 패킷에 포함된 매개변수가 복수의 주소들을 포함하는 경우, 서버(720)는 파일 URL에 대응하는 파일 내 복수의 주소들에 대응하는 주소 범위의 데이터를 응답할 수 있다.7, the server 720 may receive a request packet including a file URL and a plurality of addresses, e.g., a first address and a second address, from the client 710. [ Here, the plurality of addresses may each be a byte address. The file URL and the plurality of addresses in the request packet can be separated by a predetermined code, for example, '?'. Further, in order to distinguish a plurality of addresses from each other, a predetermined character or string, e.g., 'r', may be added between a plurality of addresses. The server 720 may determine whether the parameter included in the request packet includes a plurality of addresses. If the parameter included in the request packet includes a plurality of addresses, the server 720 may respond to data in the address range corresponding to the plurality of addresses in the file corresponding to the file URL.

예를 들어, 요청 패킷이 '파일URL?주소1r주소2'인 경우, 서버(720)는 표 8과 같은 데이터를 클라이언트(710)로 전송할 수 있다.For example, if the request packet is a 'file URL? Address 1r address 2', the server 720 may transmit data as shown in Table 8 to the client 710.

[주소1, 주소2][Address1, Address2]

여기서, [주소1, 주소2]는 제1 주소부터 제2 주소까지의 데이터이다.Here, [address 1, address 2] is data from the first address to the second address.

도 8은 일 실시예에 따른 클라이언트의 기본 동작을 설명하는 도면이다. 도 8을 참조하면, 일 실시예에 따른 클라이언트(810)는 스트리밍 서비스를 통하여 재생하려는 제1 파일의 URL, 예를 들어 '파일1URL'을 획득할 수 있다. 클라이언트(810)는 제1 파일의 최초 조각을 요청하는 요청 패킷, 예를 들어 '파일1URL?0'을 서버(820)로 전송할 수 있다. 또한, 클라이언트(810)는 제1 파일의 재생 정보를 요청하는 요청 패킷, 예를 들어 '파일1URL?r'을 서버(820)로 전송할 수 있다.8 is a diagram illustrating a basic operation of a client according to an embodiment. Referring to FIG. 8, a client 810 according to an exemplary embodiment may obtain a URL of a first file to be played through a streaming service, for example, 'file 1 URL'. The client 810 may send a request packet requesting the first fragment of the first file, e.g., 'file 1URL? 0', to the server 820. Also, the client 810 may transmit a request packet requesting the playback information of the first file, for example, 'file 1URL? R' to the server 820.

클라이언트(810)는 서버(820)로부터 제1 파일의 재생 정보를 포함하는 응답 패킷을 수신할 수 있다. 예를 들어, 제1 파일의 재생 정보는 chunk 크기, chunk 개수, 및 파일 리스트를 포함할 수 있다. 파일 리스트는 파일1해상도, 파일2URL, 및 파일2해상도 등을 포함할 수 있다. 클라이언트(810)는 응답 패킷으로부터 제1 파일의 재생 정보를 추출할 수 있다.The client 810 can receive a response packet including the reproduction information of the first file from the server 820. [ For example, the playback information of the first file may include a chunk size, a number of chunks, and a file list. The file list may include a file 1 resolution, a file 2URL, and a file 2 resolution. The client 810 can extract the reproduction information of the first file from the response packet.

클라이언트(810)는 서버(820)로부터 제1 파일의 최초 조각, 예를 들어 'chunk-0'을 포함하는 응답 패킷을 수신할 수 있다. 클라이언트(810)는 'chunk-0'을 재생할 수 있다. 예를 들어, 클라이언트(810)는 응답 패킷에 포함된 'chunk-0'을 버퍼에 입력할 수 있다. 버퍼에 입력된 데이터는 디먹스 및/또는 디코더를 통하여 재생될 수 있다.The client 810 may receive a response packet including the first piece of the first file, e.g., 'chunk-0', from the server 820. [ The client 810 can reproduce 'chunk-0'. For example, the client 810 may input 'chunk-0' included in the response packet into the buffer. Data input to the buffer can be reproduced through a demux and / or decoder.

클라이언트(810)는 버퍼의 잔량을 체크할 수 있다. 예를 들어, 버퍼의 잔량이 미리 정해진 임계 값 이하인지 여부를 판단할 수 있다. 미리 정해진 임계 값은 바이트 단위 또는 시간 단위일 수 있다. 미리 정해진 임계 값이 시간 단위인 경우, 재생 중인 컨텐츠의 해상도에 기초하여 시간 단위 임계 값이 바이트 단위 임계 값으로 환산될 수 있다.The client 810 can check the remaining amount of the buffer. For example, it can be determined whether the remaining amount of the buffer is equal to or less than a predetermined threshold value. The predetermined threshold value may be a byte unit or a time unit. When the predetermined threshold value is time unit, the time unit threshold value can be converted into the byte unit threshold value based on the resolution of the content being reproduced.

버퍼의 잔량이 미리 정해진 임계 값 이하인 경우, 클라이언트(810)는 제1 파일의 다음 조각을 요청하는 요청 패킷을 서버(820)로 전송할 수 있다. 예를 들어, 클라이언트(810)는 현재 재생 중인 조각의 인덱스에 1을 더함으로써, 다음 조각을 위한 인덱스를 계산할 수 있다. 현재 재생 중인 조각의 인덱스가 0인 경우, 클라이언트(810)는 '파일1URL?1'을 서버(820)로 전송할 수 있다. If the remaining amount of the buffer is less than or equal to the predetermined threshold value, the client 810 can send a request packet to the server 820 requesting the next fragment of the first file. For example, the client 810 may calculate an index for the next piece by adding one to the index of the piece currently playing. If the index of the currently playing piece is zero, the client 810 may send 'file 1URL? 1' to the server 820.

클라이언트(810)는 서버(820)로부터 다음 조각, 예를 들어 'chunk-1'을 포함하는 응답 패킷을 수신할 수 있다. 클라이언트(810)는 'chunk-1'을 재생할 수 있다. 예를 들어, 클라이언트(810)는 응답 패킷에 포함된 'chunk-1'을 버퍼에 입력할 수 있다. 버퍼에 입력된 데이터는 디먹스 및/또는 디코더를 통하여 재생될 수 있다.The client 810 may receive a response packet containing the next fragment, e.g., 'chunk-1', from the server 820. The client 810 can reproduce 'chunk-1'. For example, the client 810 can input 'chunk-1' included in the response packet into the buffer. Data input to the buffer can be reproduced through a demux and / or decoder.

도 9 내지 도 11은 일 실시예에 따른 키 프레임 정보를 획득하는 동작을 설명하는 도면들이다. 일 실시예에 따른 클라이언트는 스트리밍 서비스를 통하여 재생하려는 제1 파일의 키 프레임 정보를 획득할 수 있다. 제1 파일에 저장된 컨텐츠는 복수의 프레임들로 구성된다. 복수의 프레임들은 화면의 정보를 완전히 담은 프레임과 다른 프레임을 참조하는 프레임으로 분류될 수 있다. 화면의 정보를 완전히 담은 프레임은 키 프레임이라고 지칭될 수 있다. 다른 프레임을 참조하는 프레임은 해당 프레임의 화면의 정보를 완전히 담지 않으므로, 키 프레임에 비하여 작은 용량을 가질 수 있다. 9 to 11 are diagrams for explaining an operation of obtaining key frame information according to an embodiment. A client according to an exemplary embodiment may obtain key frame information of a first file to be played through a streaming service. The content stored in the first file is composed of a plurality of frames. A plurality of frames may be classified into a frame completely containing information of the screen and a frame referring to another frame. A frame that fully captures information on the screen may be referred to as a key frame. A frame referring to another frame does not completely carry the information of the frame of the frame, and therefore can have a smaller capacity than the key frame.

제1 파일의 키 프레임 정보는 제1 파일에 저장된 컨텐츠를 구성하는 복수의 프레임들 중 키 프레임들에 관한 정보를 포함할 수 있다. 예를 들어, 키 프레임 정보는 키 프레임들 각각의 인덱스, 바이트 주소, 및 타임 스탬프 등을 포함할 수 있다.The key frame information of the first file may include information on key frames among a plurality of frames constituting the content stored in the first file. For example, key frame information may include the index, byte address, and timestamp of each of the key frames.

일 예로, 제1 파일은 키 프레임 정보를 저장할 수 있다. 예를 들어, 제1 파일이 mp4 파일 형식을 가지는 경우, 제1 파일은 키 프레임 정보를 저장할 수 있다. 이 경우, 클라이언트는 키 프레임 정보가 저장된 주소 범위의 데이터를 서버로부터 수신함으로써, 키 프레임 정보를 획득할 수 있다.In one example, the first file may store key frame information. For example, if the first file has the mp4 file format, the first file may store the key frame information. In this case, the client can obtain the key frame information by receiving the data of the address range storing the key frame information from the server.

보다 구체적으로, 도 9를 참조하면, 클라이언트(910)는 제1 파일의 최초 조각을 요청하는 요청 패킷, 예를 들어 '파일1URL?0'을 서버(920)로 전송할 수 있다. 클라이언트(910)는 서버(920)로부터 제1 파일의 최초 조각, 예를 들어 'chunk-0'을 포함하는 응답 패킷을 수신할 수 있다. 클라이언트(910)는 제1 파일의 최초 조각으로부터 키 프레임 정보의 오프셋 주소를 추출할 수 있다.9, the client 910 may send a request packet requesting the first fragment of the first file, e.g., 'file 1URL? 0', to the server 920. The client 910 may receive a response packet including the first piece of the first file, e.g., 'chunk-0', from the server 920. [ The client 910 may extract the offset address of the key frame information from the first piece of the first file.

클라이언트(910)는 오프셋 주소가 최초 조각의 주소 범위 내에 포함되는지 여부를 판단함으로써, 오프셋 주소의 데이터가 최초 조각에 포함되는지 여부를 판단할 수 있다. 오프셋 주소가 최초 조각의 주소 범위 내에 포함되는 경우, 클라이언트(910)는 이미 수신된 최초 조각으로부터 키 프레임 정보를 획득출할 수 있다.The client 910 may determine whether or not the data of the offset address is included in the first fragment by determining whether the offset address is included in the address range of the first fragment. If the offset address is contained within the address range of the original fragment, the client 910 may obtain the key frame information from the already received original fragment.

오프셋 주소가 최초 조각의 주소 범위에 포함되지 않는 경우, 클라이언트(910)는 오프셋 주소 이후의 데이터를 요청하는 요청 패킷, 예를 들어 '파일1URL?오프셋주소r'을 서버(920)로 전송할 수 있다. 클라이언트(910)는 오프셋 주소 이후의 데이터, 예를 들어 [오프셋 주소, 파일1 끝]을 포함하는 응답 패킷을 수신할 수 있다. 클라이언트(910)는 응답 패킷으로부터 키 프레임 정보를 추출할 수 있다.If the offset address is not included in the address range of the first fragment, the client 910 may send a request packet requesting data beyond the offset address, e.g., 'file 1URL? Offset address r' to the server 920 . The client 910 may receive a response packet including data after the offset address, e.g., [offset address, end of file 1]. The client 910 may extract the key frame information from the response packet.

다른 예로, 제1 파일은 키 프레임 정보를 저장하지 않을 수 있다. 예를 들어, 제1 파일이 flv 파일 형식을 가지는 경우, 제1 파일은 키 프레임 정보를 저장하지 않을 수 있다. 이 경우, 클라이언트는 제1 파일을 재생하는 도중 키 프레임 정보를 생성할 수 있다.As another example, the first file may not store key frame information. For example, if the first file has the flv file format, the first file may not store the key frame information. In this case, the client may generate the key frame information during playback of the first file.

보다 구체적으로, 도 10을 참조하면, 클라이언트(1010)는 제1 파일의 최초 조각을 요청하는 요청 패킷, 예를 들어 '파일1URL?0'을 서버(1020)로 전송할 수 있다. 클라이언트(1010)는 서버(1020)로부터 제1 파일의 최초 조각, 예를 들어 'chunk-0'을 포함하는 응답 패킷을 수신할 수 있다. 클라이언트(1010)는 'chunk-0'을 재생할 수 있다. 예를 들어, 클라이언트(1010)는 응답 패킷에 포함된 'chunk-0'을 버퍼에 입력할 수 있다. 버퍼에 입력된 데이터는 디먹스 및/또는 디코더를 통하여 재생될 수 있다.10, the client 1010 may send a request packet requesting the first piece of the first file, for example, 'file 1URL? 0' to the server 1020. The client 1010 may receive a response packet including the first piece of the first file, e.g., 'chunk-0', from the server 1020. [ The client 1010 can reproduce 'chunk-0'. For example, the client 1010 may input 'chunk-0' included in the response packet into the buffer. Data input to the buffer can be reproduced through a demux and / or decoder.

클라이언트(1010)는 'chunk-0'이 재생되는 동안 'chunk-0'에 포함된 키 프레임들을 추출할 수 있다. 클라이언트(1010)는 추출된 키 프레임들에 기초하여 제1 파일을 위한 키 프레임 정보를 생성할 수 있다. 예를 들어, 도 11을 참조하면, 클라이언트(1010)는 키 프레임 정보를 포함하는 탐색 테이블(1100)을 생성할 수 있다.The client 1010 can extract key frames included in 'chunk-0' while 'chunk-0' is reproduced. The client 1010 may generate key frame information for the first file based on the extracted key frames. For example, referring to FIG. 11, a client 1010 may generate a search table 1100 that includes key frame information.

도면에 도시하지 않았으나, 클라이언트(1010)는 최초 조각 이외의 다른 조각을 재생하는 도중에도 키 프레임 정보를 생성할 수 있다. 예를 들어, 클라이언트(1010)는 제1 파일에 저장된 컨텐츠가 재생되는 동안, 탐색 테이블(1100)을 지속적으로 업데이트할 수 있다.Although not shown in the drawing, the client 1010 can generate key frame information during playback of other pieces than the original piece. For example, the client 1010 may continuously update the search table 1100 while the content stored in the first file is played back.

도 12 내지 도 14는 일 실시예에 따른 해상도 변경 동작을 설명하는 도면들이다. 도 12를 참조하면, 일 실시예에 따른 클라이언트(1210)는 스트리밍 서비스를 통하여 재생하려는 제1 파일의 URL, 예를 들어 '파일1URL'을 획득할 수 있다. 클라이언트(1210)는 제1 파일의 최초 조각을 요청하는 요청 패킷, 예를 들어 '파일1URL?0'을 서버(1220)로 전송할 수 있다. 또한, 클라이언트(1210)는 제1 파일의 재생 정보를 요청하는 요청 패킷, 예를 들어 '파일1URL?r'을 서버(1220)로 전송할 수 있다.12 to 14 are diagrams for explaining a resolution changing operation according to an embodiment. Referring to FIG. 12, a client 1210 according to an exemplary embodiment may obtain a URL of a first file to be played through a streaming service, for example, 'file 1URL'. Client 1210 may send a request packet requesting the first fragment of the first file, e.g., 'file 1URL? 0', to server 1220. In addition, the client 1210 may transmit a request packet requesting playback information of the first file, for example, 'file 1URL? R' to the server 1220.

클라이언트(1210)는 서버(1220)로부터 제1 파일의 재생 정보를 포함하는 응답 패킷을 수신할 수 있다. 예를 들어, 제1 파일의 재생 정보는 chunk 크기, chunk 개수, 파일 리스트를 포함할 수 있다. 파일 리스트는 파일1해상도, 파일2URL, 및 파일2해상도 등을 포함할 수 있다. 클라이언트(810)는 응답 패킷으로부터 제1 파일의 재생 정보를 추출할 수 있다.The client 1210 may receive a response packet including the playback information of the first file from the server 1220. [ For example, the reproduction information of the first file may include a chunk size, a number of chunks, and a file list. The file list may include a file 1 resolution, a file 2URL, and a file 2 resolution. The client 810 can extract the reproduction information of the first file from the response packet.

클라이언트(1210)는 서버(1220)로부터 제1 파일의 최초 조각, 예를 들어 '파일1 chunk-0'을 포함하는 응답 패킷을 수신할 수 있다. 클라이언트(1210)는 '파일1 chunk-0'을 재생할 수 있다. 예를 들어, 클라이언트(810)는 응답 패킷에 포함된 '파일1 chunk-0'을 버퍼에 입력할 수 있다. 버퍼에 입력된 데이터는 디먹스 및/또는 디코더를 통하여 재생될 수 있다.The client 1210 may receive a response packet including the first piece of the first file, e.g., 'file 1 chunk-0', from the server 1220. The client 1210 can reproduce 'file 1 chunk-0'. For example, the client 810 may input 'file 1 chunk-0' included in the response packet into the buffer. Data input to the buffer can be reproduced through a demux and / or decoder.

클라이언트(1210)는 해상도 변경 입력을 수신할 수 있다. 예를 들어, 클라이언트(1210)는 미리 정해진 인터페이스를 통하여 사용자에게 현재 재생 중인 컨텐츠의 해상도 및/또는 변경 가능한 해상도를 제공할 수 있다. 클라이언트(1210)는 인터페이스를 통하여 해상도 변경 입력을 수신할 수 있다. Client 1210 may receive a resolution change input. For example, the client 1210 may provide the user with a resolution and / or a changeable resolution of the currently playing content through a predetermined interface. The client 1210 may receive the resolution change input through the interface.

경우에 따라, 클라이언트(1210)는 자동으로 해상도 변경 여부를 결정할 수 있다. 예를 들어, 클라이언트(1210)는 통신 상태, 버퍼링 여부, 통신 비용 등에 기초하여, 해상도 변경 여부를 자동으로 결정할 수 있다.In some cases, the client 1210 can automatically determine whether to change the resolution. For example, the client 1210 can automatically determine whether to change the resolution based on communication status, buffering, communication cost, and the like.

이하, 제1 해상도에서 제2 해상도로 변경하는 실시예를 설명한다. 클라이언트(1210)는 제2 파일의 재생 정보를 요청하는 요청 패킷, 예를 들어 '파일2URL?i'를 서버(1220)로 전송할 수 있다. 클라이언트(1210)는 이미 해상도 리스트를 가지고 있으므로, 제2 지시자, 예를 들어 'i'를 이용하여 제2 파일의 재생 정보를 요청할 수 있다. 클라이언트(1210)는 서버(1220)로부터 제2 파일의 재생 정보를 포함하는 응답 패킷을 수신할 수 있다. 예를 들어, 제2 파일의 재생 정보는 chunk 크기, 및 chunk 개수를 포함할 수 있다.Hereinafter, an embodiment of changing from the first resolution to the second resolution will be described. The client 1210 may transmit a request packet requesting playback information of the second file, for example, 'file 2URL? I' to the server 1220. Since the client 1210 already has the resolution list, it can request the reproduction information of the second file using the second indicator, for example, 'i'. The client 1210 may receive a response packet including the playback information of the second file from the server 1220. [ For example, the playback information of the second file may include a chunk size and a number of chunks.

클라이언트(1210)는 제2 파일의 최초 조각을 요청하는 요청 패킷, 예를 들어 '파일2URL?0'을 서버(1220)로 전송할 수 있다. 클라이언트(1210)는 서버(1220)로부터 제2 파일의 최초 조각, 예를 들어 '파일2 chunk-0'을 포함하는 응답 패킷을 수신할 수 있다. 도면에 도시하지 않았으나, 클라이언트(1210)는 제2 파일의 키 프레임 정보를 획득할 수 있다. 예를 들어, 클라이언트(1210)는 도 9를 통하여 전술한 실시예에 기초하여 제2 파일의 키 프레임 정보를 획득할 수 있다.The client 1210 may send a request packet requesting the first piece of the second file, e.g., 'file 2URL? 0' to the server 1220. The client 1210 may receive a response packet including the first piece of the second file, e.g., 'file 2 chunk-0', from the server 1220. Although not shown in the drawing, the client 1210 can obtain the key frame information of the second file. For example, the client 1210 may obtain the key frame information of the second file based on the above-described embodiment with reference to FIG.

클라이언트(1210)는 제2 파일의 키 프레임 정보에 기초하여 현재 재생 시간에 대응하는 키 프레임을 검출할 수 있다. 예를 들어, 클라이언트(1210)는 현재 재생 시간 이후로 미리 정해진 시간, 예를 들어 1초, 이후의 프레임에 가장 가까운 키 프레임을 검출할 수 있다. The client 1210 can detect the key frame corresponding to the current playback time based on the key frame information of the second file. For example, the client 1210 may detect a key frame that is closest to a frame after a predetermined time, for example, one second, since the current playback time.

클라이언트(1210)는 검출된 키 프레임의 주소 이후의 데이터를 요청하는 요청 패킷, 예를 들어 '파일2URL?키프레임주소r해당chunk끝주소'를 서버(1220)로 전송할 수 있다. '해당chunk끝주소'는 검출된 키 프레임이 속하는 chunk의 끝 주소로, 클라이언트(1210)는 제2 파일의 재생 정보를 이용하여 검출된 키 프레임이 속하는 chunk의 끝 주소를 계산할 수 있다. 도면에 도시하지 않았으나, 클라이언트(1210)는 검출된 키 프레임이 속하는 조각을 요청하는 요청 패킷, 예를 들어 '파일2URL?해당chunk인덱스'를 서버(1220)로 전송하면서, 요청 패킷의 헤더에 포함된 주소 범위 파라미터를 이용하여, [키 프레임 주소, 해당 chunk 끝]의 데이터를 요청할 수 있다. 다른 실시예에 따르면, 클라이언트(1210)는 '파일2URL?키프레임주소r'를 서버(1220)로 전송함으로써, [키 프레임 주소, 파일 끝]의 데이터를 요청할 수도 있다.The client 1210 may transmit a request packet requesting data after the detected key frame address, for example, 'file 2URL? Key frame address r corresponding chunk end address' to the server 1220. The 'chunk end address' is the end address of the chunk to which the detected key frame belongs, and the client 1210 can calculate the end address of the chunk to which the detected key frame belongs using the playback information of the second file. Although not shown in the figure, the client 1210 transmits a request packet requesting a fragment to which the detected key frame belongs, for example, 'file 2URL? Corresponding chunk index' to the server 1220, You can request data at [keyframe address, end of chunk] using the address range parameter. According to another embodiment, client 1210 may request data at [keyframe address, end of file] by sending 'file 2URL? Key frame address r' to server 1220.

클라이언트(1210)는 키 프레임 주소 이후의 데이터, 예를 들어 [키 프레임 주소, 해당 chunk 끝 주소]를 포함하는 응답 패킷을 수신할 수 있다. 클라이언트(1210)는 키 프레임 주소 이후의 데이터를 버퍼에 입력함으로써, 새로운 해상도를 가지는 제2 파일을 재생할 수 있다.The client 1210 may receive a response packet including data after the key frame address, for example, [key frame address, corresponding chunk end address]. The client 1210 can reproduce the second file having the new resolution by inputting the data after the key frame address into the buffer.

도 13을 참조하면, 다른 실시예에 따른 클라이언트(1310)는 제1 파일을 재생 중 해상도 변경 입력을 수신할 수 있다. 예를 들어, 클라이언트(1310)는 미리 정해진 인터페이스를 통하여 사용자에게 현재 재생 중인 컨텐츠의 해상도 및/또는 변경 가능한 해상도를 제공할 수 있다. 클라이언트(1310)는 인터페이스를 통하여 해상도 변경 입력을 수신할 수 있다. 경우에 따라, 클라이언트(1310)는 자동으로 해상도 변경 여부를 결정할 수 있다. 예를 들어, 클라이언트(1310)는 통신 상태, 버퍼링 여부, 통신 비용 등에 기초하여, 해상도 변경 여부를 자동으로 결정할 수 있다.Referring to FIG. 13, the client 1310 according to another embodiment may receive a resolution change input during playback of the first file. For example, the client 1310 may provide the user with a resolution and / or a changeable resolution of the currently playing content through a predetermined interface. The client 1310 may receive the resolution change input through the interface. In some cases, the client 1310 can automatically determine whether to change the resolution. For example, the client 1310 can automatically determine whether to change the resolution based on the communication status, buffering status, communication cost, and the like.

이하, 제1 해상도에서 제2 해상도로 변경하는 실시예를 설명한다. 클라이언트(1310)는 제2 파일의 재생 정보를 요청하는 요청 패킷, 예를 들어 '파일2URL?i'를 서버(1320)로 전송할 수 있다. 클라이언트(1310)는 이미 해상도 리스트를 가지고 있으므로, 제2 지시자, 예를 들어 'i'를 이용하여 제2 파일의 재생 정보를 요청할 수 있다. 클라이언트(1310)는 서버(1320)로부터 제2 파일의 재생 정보를 포함하는 응답 패킷을 수신할 수 있다. 예를 들어, 제2 파일의 재생 정보는 chunk 크기, 및 chunk 개수를 포함할 수 있다.Hereinafter, an embodiment of changing from the first resolution to the second resolution will be described. The client 1310 may transmit a request packet requesting playback information of the second file, for example, 'file 2URL? I' to the server 1320. Since the client 1310 already has the resolution list, it can request the reproduction information of the second file using the second indicator, for example, 'i'. The client 1310 may receive a response packet including the reproduction information of the second file from the server 1320. [ For example, the playback information of the second file may include a chunk size and a number of chunks.

클라이언트(1310)는 제2 파일의 최초 조각을 요청하는 요청 패킷, 예를 들어 '파일2URL?0'을 서버(1320)로 전송할 수 있다. 클라이언트(1310)는 서버(1320)로부터 제2 파일의 최초 조각, 예를 들어 '파일2 chunk-0'을 포함하는 응답 패킷을 수신할 수 있다. Client 1310 may send a request packet requesting the first fragment of the second file, e.g., 'file 2URL? 0' to server 1320. Client 1310 may receive a response packet containing the first piece of the second file, e.g., 'file 2 chunk-0', from server 1320.

이 때, 제2 파일은 키 프레임 정보를 저장하지 않을 수 있다. 이 경우, 클라이언트(1310)는 현재 재생 시간 및 전체 재생 시간에 기초하여, 제2 파일의 조각들 중 현재 재생 시간에 대응하는 조각을 추정할 수 있다. 예를 들어, 클라이언트(1310)는 현재 재생 시간 대 전체 재생 시간의 비를 이용하여, 제2 파일의 조각들 중 현재 재생 시간에 대응하는 조각을 추정할 수 있다.At this time, the second file may not store the key frame information. In this case, the client 1310 can estimate the piece corresponding to the current playback time from the pieces of the second file, based on the current playback time and the total playback time. For example, the client 1310 can estimate the piece corresponding to the current playback time from the pieces of the second file, using the ratio of the current playback time to the total playback time.

클라이언트(1310)는 추정된 조각의 데이터를 요청하는 요청 패킷, 예를 들어 '파일2URL?m'을 서버(1320)로 전송할 수 있다. 여기서, 'm'은 추정된 조각의 인덱스이다. 클라이언트(1310)는 추정된 조각의 데이터, 예를 들어 '파일2 chunk-m'을 를 포함하는 응답 패킷을 수신할 수 있다. 클라이언트(1310)는 추정된 조각의 데이터를 이용하여 추정 성공 여부를 판단할 수 있다. 예를 들어, 클라이언트(1310)는 추정된 조각 내 첫 프레임의 시간과 현재 재생 시간을 비교함으로써, 추정 성공 여부를 판단할 수 있다.The client 1310 may send a request packet requesting data of the estimated fragment, e.g., 'file 2URL? M' to the server 1320. Here, 'm' is the index of the estimated fragment. The client 1310 may receive the response packet including the estimated piece of data, e.g., 'file 2 chunk-m'. The client 1310 can determine whether the estimation is successful by using the estimated pieces of data. For example, the client 1310 can determine the success or failure of the estimation by comparing the time of the first frame in the estimated fragment with the current playback time.

추정이 실패라고 판단되는 경우, 클라이언트(1310)는 새로운 조각을 추정할 수 있다. 추정이 성공이라고 판단되는 경우, 추정된 조각 내 키 프레임들을 추출할 수 있다. 클라이언트(1310)는 현재 재생 시간에 가장 가까운 키 프레임을 검출할 수 있다. 클라이언트(1310)는 검출된 키 프레임 이후의 데이터를 버퍼에 입력할 수 있다.If the estimate is determined to be failure, the client 1310 may estimate a new fragment. If it is determined that the estimation is successful, the estimated key frames in the fragment can be extracted. The client 1310 can detect the key frame closest to the current playback time. The client 1310 can input the data after the detected key frame into the buffer.

도 14를 참조하면, 일 실시예에 따른 클라이언트(1410)는 다양한 비트 레이트들을 이용하여 서버(1420)로부터 조각들을 수신할 수 있다. 전술한 바와 같이, 실시예들에 따르면 조각들이 키 프레임으로 시작할 것이 요구되지 않으며, 나아가 조각들은 키 프레임을 포함하지 않을 수도 있다. 이에 따라, 서버(1420)는 조각에 맞추어 인코딩을 하지 않아도 되고, 서버(1420)는 mp4, flv 등 일반적인 영상 파일을 용량 단위로 나누어 전송할 수 있다. 서버(1420)와 클라이언트(1410) 사이에서 전송되는 조각들이 키 프레임으로 시작하거나, 키 프레임을 포함하는 조건이 요구되지 않으므로, 실시예들은 클로즈드 GOP(Closed GOP)뿐 아니라, 오픈 GOP(Open GOP)도 지원할 수 있다.14, a client 1410 according to one embodiment may receive fragments from a server 1420 using various bit rates. As described above, according to embodiments, pieces are not required to start with a key frame, and further, the pieces may not contain a key frame. Accordingly, the server 1420 does not have to encode according to the fragment, and the server 1420 can transmit general image files such as mp4 and flv by dividing them by capacity. Since the pieces transmitted between the server 1420 and the client 1410 start with a key frame or a condition including a key frame is not required, the embodiments can be applied not only to a closed GOP but also to an open GOP (Open GOP) .

클라이언트(1410)는 버퍼의 크기만큼 조각들을 미리 다운로드 받을 수 있다. 클라이언트(1410)는 재생된 조각들을 저장함으로써, 저장된 조각들에 속한 프레임들을 다시 재생할 때 해당 조각들을 중복하여 다운로드 받지 않도록 할 수 있다. The client 1410 can download the pieces in advance by the size of the buffer. The client 1410 may store the reproduced fragments so that when the frames belonging to the stored fragments are reproduced again, the fragments may not be duplicated and downloaded.

도 15 내지 도 17은 일 실시예에 따른 탐색 동작을 설명하는 도면들이다. 탐색 동작은 컨텐츠를 랜덤 액세스하는 동작이다. 도 15를 참조하면, 일 실시예에 따른 클라이언트(1510)는 제1 파일의 n번째 조각을 요청하는 요청 패킷, 예를 들어 '파일1URL?n'을 서버(1520)로 전송할 수 있다. 클라이언트(1510)는 서버(1520)로부터 제1 파일의 n번째 조각, 예를 들어 'chunk-n'을 포함하는 응답 패킷을 수신할 수 있다. 클라이언트(1510)는 'chunk-n'을 버퍼에 입력할 수 있다. 버퍼에 입력된 데이터는 디먹스 및/또는 디코더를 통하여 재생될 수 있다.FIGS. 15 to 17 are diagrams for explaining a search operation according to an embodiment. The search operation is an operation for randomly accessing the contents. Referring to FIG. 15, a client 1510 according to an embodiment may transmit a request packet requesting an nth piece of a first file, for example, 'file 1URL? N' to the server 1520. The client 1510 may receive a response packet including the nth piece of the first file, e.g., 'chunk-n', from the server 1520. Client 1510 may enter 'chunk-n' into the buffer. Data input to the buffer can be reproduced through a demux and / or decoder.

클라이언트(1510)는 'chunk-n'이 재생되는 도중, 탐색 입력을 수신할 수 있다. 예를 들어, 클라이언트(1510)는 미리 정해진 인터페이스를 통하여 탐색 입력을 수신할 수 있다. 탐색 입력은 탐색 시간을 포함할 수 있다.The client 1510 may receive the search input during 'chunk-n' playback. For example, the client 1510 may receive the search input via a predetermined interface. The search input may include a search time.

클라이언트(1510)는 제1 파일의 키 프레임 정보에 기초하여 탐색 시간에 대응하는 키 프레임을 검출할 수 있다. 예를 들어, 클라이언트(1510)는 탐색 시간의 프레임에 가장 가까운 키 프레임을 검출할 수 있다. The client 1510 can detect the key frame corresponding to the search time based on the key frame information of the first file. For example, the client 1510 may detect the key frame closest to the frame of the search time.

클라이언트(1510)는 검출된 키 프레임의 주소 이후의 데이터를 요청하는 요청 패킷, 예를 들어 '파일1URL?키프레임주소r해당chunk끝주소'를 서버(1520)로 전송할 수 있다. '해당chunk끝주소'는 검출된 키 프레임이 속하는 chunk의 끝 주소로, 클라이언트(1510)는 제1 파일의 재생 정보를 이용하여 검출된 키 프레임이 속하는 chunk의 끝 주소를 계산할 수 있다. 도면에 도시하지 않았으나, 클라이언트(1510)는 검출된 키 프레임이 속하는 조각을 요청하는 요청 패킷, 예를 들어 '파일1URL?해당chunk인덱스'를 서버(1520)로 전송하면서, 요청 패킷의 헤더에 포함된 주소 범위 파라미터를 이용하여, [키 프레임 주소, 해당 chunk 끝]의 데이터를 요청할 수 있다. The client 1510 may transmit a request packet requesting data after the detected key frame address, for example, 'file 1URL? Key frame address r corresponding chunk end address' to the server 1520. The 'chunk end address' is the end address of the chunk to which the detected key frame belongs, and the client 1510 can calculate the end address of the chunk to which the detected key frame belongs using the playback information of the first file. Although not shown in the figure, the client 1510 transmits a request packet requesting a fragment to which the detected key frame belongs, for example, 'file 1URL? Corresponding chunk index' to the server 1520, You can request data at [keyframe address, end of chunk] using the address range parameter.

클라이언트(1510)는 키 프레임 주소 이후의 데이터, 예를 들어 [키 프레임 주소, 해당 chunk 끝 주소]를 포함하는 응답 패킷을 수신할 수 있다. 클라이언트(1510)는 키 프레임 주소 이후의 데이터를 버퍼에 입력함으로써, 제1 파일을 탐색하여 재생할 수 있다.The client 1510 may receive a response packet including data after the key frame address, for example, [key frame address, corresponding chunk end address]. The client 1510 can search for and reproduce the first file by inputting the data after the key frame address into the buffer.

도 16을 참조하면, 다른 실시예에 따른 클라이언트(1610)는 '파일1URL?n'을 서버(1620)로 전송할 수 있다. 클라이언트(1610)는 서버(1620)로부터 'chunk-n'을 포함하는 응답 패킷을 수신할 수 있다. 클라이언트(1610)는 'chunk-n'을 재생할 수 있다.Referring to FIG. 16, the client 1610 according to another embodiment may transmit 'file 1URL? N' to the server 1620. The client 1610 may receive a response packet including 'chunk-n' from the server 1620. The client 1610 can reproduce 'chunk-n'.

클라이언트(1610)는 'chunk-n'이 재생되는 도중, 탐색 입력을 수신할 수 있다. 클라이언트(1610)는 제1 파일의 키 프레임 정보에 기초하여 탐색 시간에 대응하는 키 프레임을 검출할 수 있다. 예를 들어, 클라이언트(1610)는 탐색 시간의 프레임에 가장 가까운 키 프레임을 검출할 수 있다.The client 1610 may receive the search input during 'chunk-n' playback. The client 1610 can detect the key frame corresponding to the search time based on the key frame information of the first file. For example, the client 1610 may detect a key frame closest to the frame of the search time.

클라이언트(1610)는 검출된 키 프레임이 속한 조각의 데이터를 요청하는 요청 패킷, 예를 들어, '파일URL?k'를 서버(1620)로 전송할 수 있다. 여기서 'k'는 검출된 키 프레임이 속한 조각의 인덱스이다. 클라이언트(1610)는 검출된 키 프레임이 속한 조각의 데이터, 예를 들어 '파일1 chunk-k'를 포함하는 응답 패킷을 수신할 수 있다. 클라이언트(1610)는 키 프레임 주소 이후의 데이터를 버퍼에 입력함으로써, 제1 파일을 탐색하여 재생할 수 있다.The client 1610 may send a request packet requesting data of the fragment to which the detected key frame belongs, for example, 'file URL? K' to the server 1620. Here, 'k' is the index of the fragment to which the detected key frame belongs. The client 1610 may receive the response packet including the data of the fragment to which the detected key frame belongs, for example, 'file 1 chunk-k'. The client 1610 can search for and reproduce the first file by inputting the data after the key frame address into the buffer.

도 16의 탐색 동작은 도 15의 탐색 동작에 비하여 캐시 서버의 효율성을 증대시킬 수 있고, 도 15의 탐색 동작은 도 16의 탐색 동작에 비하여 실제 전송되는 데이터의 양을 감소시킬 수 있다. 실시예들은 캐시 서버의 효율성 및 실제 전송되는 데이터의 양 사이의 트레이드-오프 관계를 고려하여, 도 15의 탐색 동작과 도 16의 탐색 동작 중 어느 하나에 따라 동작할 수 있다.The search operation of FIG. 16 can increase the efficiency of the cache server in comparison with the search operation of FIG. 15, and the search operation of FIG. 15 can reduce the amount of actually transmitted data as compared with the search operation of FIG. The embodiments can operate in accordance with either the search operation of FIG. 15 and the search operation of FIG. 16, taking into account the trade-off relationship between the efficiency of the cache server and the amount of data actually transferred.

도 17을 참조하면, 또 다른 실시예에 따른 클라이언트(1710)는 'chunk-n'을 재생 중 탐색 입력을 수신할 수 있다. 탐색 입력은 탐색 시간을 포함할 수 있다. 현재 재생 중인 제1 파일은 키 프레임 정보를 저장하지 않을 수 있다. 이 경우, 클라이언트(1710)는 도 10 및 도 11을 통하여 전술한 실시예에 따라 키 프레임 정보를 생성할 수 있다. 그러나, 탐색 시간에 대응하는 키 프레임은 아직 키 프레임 정보에 포함되지 않을 수 있다.Referring to FIG. 17, a client 1710 according to another embodiment may receive a search input during reproduction of 'chunk-n'. The search input may include a search time. The first file currently being played may not store the key frame information. In this case, the client 1710 can generate the key frame information according to the above-described embodiment through FIGS. 10 and 11. FIG. However, the key frame corresponding to the search time may not yet be included in the key frame information.

클라이언트(1710)는 현재 재생 시간 및 전체 재생 시간에 기초하여, 제1 파일의 조각들 중 현재 재생 시간에 대응하는 조각을 추정할 수 있다. 예를 들어, 클라이언트(1710)는 현재 재생 시간 대 전체 재생 시간의 비를 이용하여, 제1 파일의 조각들 중 현재 재생 시간에 대응하는 조각을 추정할 수 있다.The client 1710 can estimate the piece corresponding to the current playback time among pieces of the first file based on the current playback time and the total playback time. For example, the client 1710 can estimate a piece corresponding to the current playback time of the pieces of the first file, using the ratio of the current playback time to the total playback time.

클라이언트(1710)는 추정된 조각의 데이터를 요청하는 요청 패킷, 예를 들어 '파일1URL?m'을 서버(1720)로 전송할 수 있다. 여기서, 'm'은 추정된 조각의 인덱스이다. 클라이언트(1710)는 추정된 조각의 데이터, 예를 들어 '파일1 chunk-m'을 포함하는 응답 패킷을 수신할 수 있다. 클라이언트(1710)는 추정된 조각의 데이터를 이용하여 추정 성공 여부를 판단할 수 있다. 예를 들어, 클라이언트(1710)는 추정된 조각 내 첫 프레임의 시간과 현재 재생 시간을 비교함으로써, 추정 성공 여부를 판단할 수 있다.The client 1710 may send a request packet requesting data of the estimated fragment, e.g., 'file 1URL? M' to the server 1720. Here, 'm' is the index of the estimated fragment. The client 1710 may receive the response packet including the estimated piece of data, for example, 'file 1 chunk-m'. The client 1710 can determine whether the estimation is successful by using the estimated piece of data. For example, the client 1710 can determine the success or failure of the estimation by comparing the time of the first frame in the estimated fragment with the current playback time.

추정이 실패라고 판단되는 경우, 클라이언트(1710)는 새로운 조각을 추정할 수 있다. 추정이 성공이라고 판단되는 경우, 추정된 조각 내 키 프레임들을 추출할 수 있다. 클라이언트(1710)는 현재 재생 시간에 가장 가까운 키 프레임을 검출할 수 있다. 클라이언트(1710)는 검출된 키 프레임 이후의 데이터를 버퍼에 입력할 수 있다.If the estimate is determined to be failure, the client 1710 may estimate a new slice. If it is determined that the estimation is successful, the estimated key frames in the fragment can be extracted. The client 1710 can detect a key frame closest to the current playback time. The client 1710 may input the data after the detected key frame into the buffer.

도 18 및 도 19는 복수의 url 스트림들을 이용하는 클라이언트의 동작을 설명하는 도면들이다. 도 18을 참조하면, 일 실시예에 따른 클라이언트는 복수의 url 스트림들을 이용하여 해상도 변경 동작 및/또는 탐색 동작을 수행할 수 있다. 이하, 클라이언트가 두 개의 url 스트림들을 이용하는 경우를 설명한다.18 and 19 are diagrams illustrating operations of a client using a plurality of URL streams. Referring to FIG. 18, a client according to an exemplary embodiment may perform a resolution change operation and / or a search operation using a plurality of URL streams. Hereinafter, a case where a client uses two URL streams will be described.

제1 url 스트림 및 제2 url 스트림 각각은 요청 패킷을 생성하여 서버로 전송하고, 서버로부터 수신되는 응답 패킷을 처리할 수 있다. 제1 url 스트림의 데이터는 제1 디먹스와 제1 디코더를 통하여 재생될 수 있다. 제2 url 스트림의 데이터는 제2 디먹스와 제2 디코더를 통하여 재생될 수 있다.Each of the first url stream and the second url stream may generate and transmit a request packet to the server and process the response packet received from the server. The data of the first url stream may be reproduced through the first demux and the first decoder. The data of the second url stream can be reproduced through the second demux and the second decoder.

클라이언트는 제1 디먹스를 제어하는 신호(EN_DEMUX_1), 제1 디코더를 제어하는 신호(EN_DECODER_1), 제2 디먹스를 제어하는 신호(EN_DEMUX_2), 제2 디코더를 제어하는 신호(EN_DECODER_2), 및 출력 먹스를 제어하는 신호(MUX_OUT) 중 적어도 하나를 이용하여, 제1 url 스트림의 데이터 및 제2 url 스트림의 데이터의 데이터 흐름(data flow)를 제어할 수 있다.The client includes a signal EN_DEMUX_1 for controlling the first demux, a signal EN_DECODER_1 for controlling the first decoder, a signal EN_DEMUX_2 for controlling the second demux, a signal EN_DECODER_2 for controlling the second decoder, And a signal (MUX_OUT) for controlling the mux may be used to control the data flow of the data of the first url stream and the data of the second url stream.

일 예로, 도 19를 참조하면, 스트리밍 서비스 시작 시 클라이언트는 제1 url 스트림을 이용하여, 제1 파일의 최초 조각부터 순차적으로 재생할 수 있다. 이 때, 클라이언트는 제2 url 스트림을 이용하여, 제1 파일의 재생 정보를 수신할 수 있다.For example, referring to FIG. 19, at the start of the streaming service, the client can sequentially play back the first piece of the first file using the first url stream. At this time, the client can receive the reproduction information of the first file using the second url stream.

해상도 변경 입력 시 클라이언트는 제1 url 스트림을 이용하여 제1 파일을 재생하면서, 제2 url 스트림을 이용하여 제2 파일의 키 프레임들 중 현재 재생 시간에 대응하는 키 프레임을 검출할 수 있다. 클라이언트는 해상도 변경을 위하여, 검출된 키 프레임이 재생될 시점에 제1 url 스트림의 데이터 흐름과 제2 url 스트림의 데이터 흐름을 제어할 수 있다. Upon input of the resolution change, the client can detect the key frame corresponding to the current playback time among the key frames of the second file by using the second url stream while playing the first file using the first url stream. The client can control the data flow of the first url stream and the data stream of the second url stream at the time the detected key frame is reproduced, for resolution change.

예를 들어, 클라이언트는 제1 url 스트림의 데이터 흐름을 스위치 OFF하고, 제2 url 스트림의 데이터 흐름을 스위치 ON할 수 있다. 경우에 따라서, 클라이언트는 디먹스 및/또는 디코더의 딜레이를 고려하여, 제1 url 스트림의 데이터 흐름 및 제2 url 스트림의 데이터 흐름이 일정 시간, 예를 들어 30ms 동안 함께 스위치 ON되도록 제어할 수 있다.For example, the client may switch off the data flow of the first url stream and switch on the data flow of the second url stream. Optionally, the client can control the data flow of the first url stream and the data flow of the second url stream to be switched on together for a certain time, for example 30 ms, taking into account the delay of the demux and / or decoder .

이후, 클라이언트는 제2 url 스트림을 이용하여 검출된 키 프레임 이후 데이터를 재생할 수 있다. 클라이언트는 제1 url 스트림을 위한 버퍼를 클리어(clear)할 수 있다. 도면에 도시하지는 않았으나, 만약 추가적인 해상도 변경 입력이 수신되면, 클라이언트는 전술한 동작에서 제1 url 스트림과 제2 url 스트림의 역할만 바꿈으로써 추가적인 해상도 변경 입력을 처리할 수 있다.The client may then use the second url stream to play the data after the detected key frame. The client may clear the buffer for the first url stream. Although not shown in the figure, if additional resolution change inputs are received, the client may process additional resolution change inputs by changing only the roles of the first url stream and the second url stream in the operations described above.

이상에서 설명된 실시예들은 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치, 방법 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, 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 in hardware components, software components, and / or a combination of hardware components and software components. For example, the devices, methods, and components described in the embodiments may be implemented within a computer system, such as, for example, a processor, a controller, an arithmetic logic unit (ALU), a digital signal processor, such as an 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 ease of understanding, the processing apparatus may be described as being used singly, but those skilled in the art will recognize that the processing apparatus may have a plurality of processing elements and / As shown in FIG. For example, the processing unit may comprise a plurality of processors or one processor and one controller. Other processing configurations are also possible, such as a parallel processor.

소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.The software may include a computer program, code, instructions, or a combination of one or more of the foregoing, and may be configured to configure the processing device to operate as desired or to process it collectively or collectively Device can be commanded. The software and / or data may be in the form of any type of machine, component, physical device, virtual equipment, computer storage media, or device , Or may be permanently or temporarily embodied in a transmitted signal wave. The software may be distributed over a networked computer system and stored or executed in a distributed manner. The software and data may be stored on 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 an embodiment may be implemented in the form of a program command 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, and the like, alone or in combination. The program instructions to be recorded on the medium may be those specially designed and configured for the embodiments or may be available to those skilled in the art of computer software. Examples of computer-readable media include magnetic media such as hard disks, floppy disks and magnetic tape; optical media such as CD-ROMs and DVDs; magnetic media such as floppy disks; Magneto-optical media, and hardware devices specifically configured to store and execute program instructions such as ROM, RAM, flash memory, and the like. Examples of program instructions include machine language code such as those produced by a compiler, as well as high-level language code 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.

이상과 같이 비록 한정된 도면에 의해 실시예들이 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다. 그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.Although the preferred embodiments of the present invention have been disclosed for illustrative purposes, those skilled in the art will appreciate that various modifications, additions and substitutions are possible, without departing from the scope and spirit of the invention as disclosed in the accompanying claims. For example, it is to be understood that the techniques described may be performed in a different order than the described methods, and / or that components of the described systems, structures, devices, circuits, Lt; / RTI > or equivalents, even if it is replaced or replaced. Therefore, other implementations, other embodiments, and equivalents to the claims are also within the scope of the following claims.

Claims (20)

스트리밍 서비스를 위한 클라이언트의 동작 방법에 있어서,
파일 URL 및 재생 정보 요청을 지시하는 제1 매개변수를 포함하는 제1 요청 패킷을 전송하는 단계;
상기 파일 URL에 대응하는 파일의 재생 정보를 포함하는 제1 응답 패킷을 수신하는 단계;
상기 파일 URL 및 데이터 요청을 지시하는 제2 매개변수를 포함하는 제2 요청 패킷을 전송하는 단계;
상기 파일 내 상기 제2 매개변수에 대응하는 주소 범위의 데이터를 포함하는 제2 응답 패킷을 수신하는 단계;
상기 제2 응답 패킷으로부터 상기 파일의 키 프레임들을 추출하는 단계; 및
상기 키 프레임들에 기초하여 상기 파일의 키 프레임 정보를 생성하는 단계
를 포함하는, 클라이언트의 동작 방법.
A method of operating a client for a streaming service,
Transmitting a first request packet including a first parameter indicating a file URL and a playback information request;
Receiving a first response packet including playback information of a file corresponding to the file URL;
Sending a second request packet comprising a file URL and a second parameter indicating a data request;
Receiving a second response packet including data in an address range corresponding to the second parameter in the file;
Extracting key frames of the file from the second response packet; And
Generating key frame information of the file based on the key frames
Gt; a < / RTI > client.
제1항에 있어서,
상기 제1 매개변수를 미리 정해진 제1 지시자로 설정하는 단계;
상기 제1 응답 패킷으로부터 상기 파일에 저장된 컨텐츠의 해상도, 상기 해상도와 다른 제2 해상도의 컨텐츠를 저장하는 제2 파일의 URL, 및 상기 제2 해상도를 추출하는 단계;
상기 제1 응답 패킷으로부터 상기 파일을 분할하는 제1 조각의 크기 및 상기 제1 조각의 개수 중 적어도 하나를 추출하는 단계; 및
상기 제1 응답 패킷으로부터 상기 제2 파일을 분할하는 제2 조각의 크기 및 상기 제2 조각의 개수 중 적어도 하나를 추출하는 단계
를 더 포함하는, 클라이언트의 동작 방법.
The method according to claim 1,
Setting the first parameter to a predetermined first indicator;
Extracting a resolution of the content stored in the file from the first response packet, a URL of a second file storing a content having a second resolution different from the resolution, and the second resolution;
Extracting at least one of a size of the first piece and a number of the first pieces that divide the file from the first response packet; And
Extracting at least one of a size of a second piece dividing the second file from the first response packet and a number of the second pieces
≪ / RTI >
제1항에 있어서,
버퍼의 잔량을 체크하는 단계;
상기 버퍼의 잔량이 임계 값 이하가 되면, 상기 제2 매개변수를 다음 재생할 조각의 인덱스로 설정하는 단계; 및
상기 제2 응답 패킷의 데이터를 상기 버퍼에 입력하는 단계
를 더 포함하는, 클라이언트의 동작 방법.
The method according to claim 1,
Checking the remaining amount of the buffer;
Setting the second parameter to an index of a piece to be reproduced next when the remaining amount of the buffer becomes less than a threshold value; And
Inputting the data of the second response packet into the buffer
≪ / RTI >
제1항에 있어서,
해상도 변경 입력을 수신하는 단계; 및
상기 파일 URL을 상기 해상도 변경 입력에 포함된 새로운 해상도에 대응하는 제2 파일의 URL로 설정하는 단계
를 더 포함하는, 클라이언트의 동작 방법.
The method according to claim 1,
Receiving a resolution change input; And
Setting the file URL to a URL of a second file corresponding to a new resolution included in the resolution change input
≪ / RTI >
제1항에 있어서,
해상도 변경 입력을 수신하는 단계;
상기 파일 URL을 상기 해상도 변경 입력에 포함된 새로운 해상도에 대응하는 제2 파일의 URL로 설정하는 단계;
현재 재생 시간 및 전체 재생 시간에 기초하여 상기 현재 재생 시간에 대응하는 조각을 추정하는 단계;
상기 제2 매개변수를 상기 추정된 조각의 인덱스로 설정하는 단계;
상기 제2 응답 패킷에 포함된 프레임의 시간이 상기 현재 재생 시간을 기준으로 미리 정해진 범위에 포함되는 경우, 상기 제2 응답 패킷의 데이터로부터 상기 현재 재생 시간 이후에 해당하는 키 프레임을 검출하는 단계; 및
상기 검출된 키 프레임 이후의 데이터를 상기 버퍼에 입력하는 단계
를 더 포함하는, 클라이언트의 동작 방법.
The method according to claim 1,
Receiving a resolution change input;
Setting the file URL to a URL of a second file corresponding to a new resolution included in the resolution change input;
Estimating a piece corresponding to the current playback time based on a current playback time and a total playback time;
Setting the second parameter to an index of the estimated fragments;
Detecting a key frame corresponding to the current playback time from the data of the second response packet when the time of the frame included in the second response packet is included in a predetermined range based on the current playback time; And
Inputting data after the detected key frame into the buffer
≪ / RTI >
제5항에 있어서,
상기 제2 응답 패킷에 포함된 프레임의 시간이 상기 현재 재생 시간을 기준으로 상기 미리 정해진 범위에 포함되지 않는 경우, 상기 현재 재생 시간에 대응하는 새로운 인덱스를 추정하는 단계;
데이터 요청을 지시하는 제3 매개변수를 상기 새로운 인덱스로 설정하는 단계;
상기 파일 URL 및 상기 제3 매개변수를 포함하는 제3 요청 패킷을 전송하는 단계;
상기 파일 내 상기 제3 매개변수에 대응하는 주소 범위의 데이터를 포함하는 제3 응답 패킷을 수신하는 단계; 및
상기 제3 응답 패킷의 데이터로부터 상기 현재 재생 시간 이후에 해당하는 키 프레임을 검출하는 단계
를 더 포함하는, 클라이언트의 동작 방법.
6. The method of claim 5,
Estimating a new index corresponding to the current playback time if a time of a frame included in the second response packet is not included in the predetermined range based on the current playback time;
Setting a third parameter indicating the data request to the new index;
Sending a third request packet comprising the file URL and the third parameter;
Receiving a third response packet including data in an address range corresponding to the third parameter in the file; And
Detecting a key frame corresponding to the current playback time after the data of the third response packet
≪ / RTI >
제1항에 있어서,
탐색 시간을 수신하는 단계;
상기 탐색 시간과 상기 파일의 전체 재생 시간에 기초하여 상기 탐색 시간에 대응하는 조각을 추정하는 단계;
상기 제2 매개변수를 상기 추정된 조각의 인덱스로 설정하는 단계;
상기 제2 응답 패킷에 포함된 프레임의 시간이 상기 탐색 시간을 기준으로 미리 정해진 범위에 포함되는 경우, 상기 제2 응답 패킷의 데이터로부터 키 프레임을 검출하는 단계; 및
상기 검출된 키 프레임 이후의 데이터를 버퍼에 입력하는 단계
를 더 포함하는, 클라이언트의 동작 방법.
The method according to claim 1,
Receiving search time;
Estimating a piece corresponding to the search time based on the search time and the total play time of the file;
Setting the second parameter to an index of the estimated fragments;
Detecting a key frame from data of the second response packet when a time of a frame included in the second response packet is included in a predetermined range based on the search time; And
Inputting data after the detected key frame into a buffer
≪ / RTI >
제7항에 있어서,
상기 제2 응답 패킷에 포함된 프레임의 시간이 상기 탐색 시간을 기준으로 미리 정해진 범위에 포함되지 않는 경우, 상기 탐색 시간에 대응하는 새로운 인덱스를 추정하는 단계;
데이터 요청을 지시하는 제3 매개변수를 상기 새로운 인덱스로 설정하는 단계;
상기 파일 URL 및 상기 제3 매개변수를 포함하는 제3 요청 패킷을 전송하는 단계;
상기 파일 내 상기 제3 매개변수에 대응하는 주소 범위의 데이터를 포함하는 제3 응답 패킷을 수신하는 단계; 및
상기 제3 응답 패킷의 데이터로부터 키 프레임을 검출하는 단계
를 더 포함하는, 클라이언트의 동작 방법.
8. The method of claim 7,
Estimating a new index corresponding to the search time if a time of a frame included in the second response packet is not included in a predetermined range based on the search time;
Setting a third parameter indicating the data request to the new index;
Sending a third request packet comprising the file URL and the third parameter;
Receiving a third response packet including data in an address range corresponding to the third parameter in the file; And
Detecting a key frame from data of the third response packet
≪ / RTI >
제1항에 있어서,
상기 클라이언트는 서버와의 통신을 위하여 http 프로토콜을 이용하는, 클라이언트의 동작 방법.
The method according to claim 1,
Wherein the client uses the http protocol for communication with the server.
스트리밍 서비스를 위한 클라이언트의 동작 방법에 있어서,
파일 URL 및 재생 정보 요청을 지시하는 제1 매개변수를 포함하는 제1 요청 패킷을 전송하는 단계;
상기 파일 URL에 대응하는 파일의 재생 정보를 포함하는 제1 응답 패킷을 수신하는 단계;
상기 파일 URL 및 데이터 요청을 지시하는 제2 매개변수를 포함하는 제2 요청 패킷을 전송하는 단계;
상기 파일 내 상기 제2 매개변수에 대응하는 주소 범위의 데이터를 포함하는 제2 응답 패킷을 수신하는 단계;
상기 제2 응답 패킷의 데이터를 버퍼에 입력하는 단계;
탐색 시간을 수신하는 단계;
상기 파일의 키 프레임 정보를 이용하여 상기 탐색 시간에 대응하는 키 프레임을 검출하는 단계;
데이터 요청을 지시하는 제3 매개변수를 상기 검출된 키 프레임이 속하는 조각의 인덱스로 설정하는 단계;
상기 파일 URL 및 상기 제3 매개변수를 포함하는 제3 요청 패킷을 전송하는 단계;
상기 파일 내 상기 제3 매개변수에 대응하는 주소 범위의 데이터를 포함하는 제3 응답 패킷을 수신하는 단계; 및
상기 제3 응답 패킷의 데이터를 버퍼에 입력하는 단계
를 포함하는, 클라이언트의 동작 방법.
A method of operating a client for a streaming service,
Transmitting a first request packet including a first parameter indicating a file URL and a playback information request;
Receiving a first response packet including playback information of a file corresponding to the file URL;
Sending a second request packet comprising a file URL and a second parameter indicating a data request;
Receiving a second response packet including data in an address range corresponding to the second parameter in the file;
Inputting data of the second response packet into a buffer;
Receiving search time;
Detecting a key frame corresponding to the search time using key frame information of the file;
Setting a third parameter indicating a data request to an index of a fragment to which the detected key frame belongs;
Sending a third request packet comprising the file URL and the third parameter;
Receiving a third response packet including data in an address range corresponding to the third parameter in the file; And
Inputting the data of the third response packet to the buffer
Gt; a < / RTI > client.
제10항에 있어서,
상기 제3 요청 패킷의 헤더는 주소 범위 파라미터를 포함하고,
상기 주소 범위 파라미터는
상기 검출된 키 프레임의 주소, 상기 검출된 키 프레임의 주소를 포함하는 주소 범위, 및 상기 검출된 키 프레임의 주소에 대응하는 오프셋 주소 중 적어도 하나를 지시하는, 클라이언트의 동작 방법.
11. The method of claim 10,
Wherein the header of the third request packet includes an address range parameter,
The address range parameter
The address indicating at least one of an address of the detected key frame, an address range including the address of the detected key frame, and an offset address corresponding to the address of the detected key frame.
스트리밍 서비스를 위한 클라이언트의 동작 방법에 있어서,
파일 URL 및 재생 정보 요청을 지시하는 제1 매개변수를 포함하는 제1 요청 패킷을 전송하는 단계;
상기 파일 URL에 대응하는 파일의 재생 정보를 포함하는 제1 응답 패킷을 수신하는 단계;
상기 파일 URL 및 데이터 요청을 지시하는 제2 매개변수를 포함하는 제2 요청 패킷을 전송하는 단계;
상기 파일 내 상기 제2 매개변수에 대응하는 주소 범위의 데이터를 포함하는 제2 응답 패킷을 수신하는 단계;
상기 제2 응답 패킷의 데이터를 버퍼에 입력하는 단계;
해상도 변경 입력을 수신하는 단계;
상기 파일 URL을 상기 해상도 변경 입력에 포함된 새로운 해상도에 대응하는 제2 파일의 URL로 설정하는 단계;
상기 제2 파일의 키 프레임 정보에 기초하여 현재 재생 시간에 대응하는 키 프레임을 검출하는 단계;
데이터 요청을 지시하는 제3 매개변수를 상기 검출된 키 프레임이 속하는 조각의 인덱스로 설정하는 단계; 및
상기 파일 URL 및 상기 제3 매개변수를 포함하는 제3 요청 패킷을 전송하는 단계;
상기 제2 파일 내 상기 제3 매개변수에 대응하는 주소 범위의 데이터를 포함하는 제3 응답 패킷을 수신하는 단계;
상기 제3 응답 패킷의 데이터를 버퍼에 입력하는 단계
를 더 포함하는, 클라이언트의 동작 방법.
A method of operating a client for a streaming service,
Transmitting a first request packet including a first parameter indicating a file URL and a playback information request;
Receiving a first response packet including playback information of a file corresponding to the file URL;
Sending a second request packet comprising a file URL and a second parameter indicating a data request;
Receiving a second response packet including data in an address range corresponding to the second parameter in the file;
Inputting data of the second response packet into a buffer;
Receiving a resolution change input;
Setting the file URL to a URL of a second file corresponding to a new resolution included in the resolution change input;
Detecting a key frame corresponding to a current playback time based on key frame information of the second file;
Setting a third parameter indicating a data request to an index of a fragment to which the detected key frame belongs; And
Sending a third request packet comprising the file URL and the third parameter;
Receiving a third response packet including data in an address range corresponding to the third parameter in the second file;
Inputting the data of the third response packet to the buffer
≪ / RTI >
제12항에 있어서,
상기 제3 요청 패킷의 헤더는 주소 범위 파라미터를 포함하고,
상기 주소 범위 파라미터는
상기 검출된 키 프레임의 주소, 상기 검출된 키 프레임의 주소를 포함하는 주소 범위, 및 상기 검출된 키 프레임의 주소에 대응하는 오프셋 주소 중 적어도 하나를 지시하는, 클라이언트의 동작 방법.
13. The method of claim 12,
Wherein the header of the third request packet includes an address range parameter,
The address range parameter
The address indicating at least one of an address of the detected key frame, an address range including the address of the detected key frame, and an offset address corresponding to the address of the detected key frame.
스트리밍 서비스를 위한 클라이언트의 동작 방법에 있어서,
파일 URL 및 재생 정보 요청을 지시하는 제1 매개변수를 포함하는 제1 요청 패킷을 전송하는 단계;
상기 파일 URL에 대응하는 파일의 재생 정보를 포함하는 제1 응답 패킷을 수신하는 단계;
데이터 요청을 지시하는 제2 매개변수를 최초 인덱스로 설정하는 단계; 및
상기 파일 URL 및 상기 제2 매개변수를 포함하는 제2 요청 패킷을 전송하는 단계;
상기 파일 내 상기 제2 매개변수에 대응하는 주소 범위의 데이터를 포함하는 제2 응답 패킷을 수신하는 단계;
상기 제2 응답 패킷으로부터 상기 파일의 키 프레임 정보를 위한 오프셋 주소를 추출하는 단계;
상기 오프셋 주소의 데이터가 상기 제2 응답 패킷에 포함된 경우, 상기 제2 응답 패킷으로부터 상기 키 프레임 정보를 추출하는 단계;
상기 오프셋 주소의 데이터가 상기 제2 응답 패킷에 포함되지 않는 경우, 데이터 요청을 지시하는 제3 매개변수를 상기 오프셋 주소로 설정하는 단계;
상기 파일 URL 및 상기 제3 매개변수를 포함하는 제3 요청 패킷을 전송하는 단계;
상기 파일 내 상기 제3 매개변수에 대응하는 주소 범위의 데이터를 포함하는 제3 응답 패킷을 수신하는 단계; 및
상기 제3 응답 패킷으로부터 상기 키 프레임 정보를 추출하는 단계
를 포함하는, 클라이언트의 동작 방법.
A method of operating a client for a streaming service,
Transmitting a first request packet including a first parameter indicating a file URL and a playback information request;
Receiving a first response packet including playback information of a file corresponding to the file URL;
Setting a second parameter indicating a data request to an initial index; And
Sending a second request packet comprising the file URL and the second parameter;
Receiving a second response packet including data in an address range corresponding to the second parameter in the file;
Extracting an offset address for key frame information of the file from the second response packet;
Extracting the key frame information from the second response packet if data of the offset address is included in the second response packet;
Setting a third parameter indicating the data request to the offset address when the data of the offset address is not included in the second response packet;
Sending a third request packet comprising the file URL and the third parameter;
Receiving a third response packet including data in an address range corresponding to the third parameter in the file; And
Extracting the key frame information from the third response packet
Gt; a < / RTI > client.
스트리밍 서비스를 위한 서버의 동작 방법에 있어서,
파일 URL 및 매개변수를 포함하는 요청 패킷을 수신하는 단계;
상기 매개변수가 데이터 요청을 지시하는 경우, 상기 파일 URL에 대응하는 파일 내 상기 매개변수에 대응하는 주소 범위의 데이터를 응답하는 단계; 및
상기 매개변수가 재생 정보 요청을 지시하는 경우, 상기 파일의 재생 정보를 응답하는 단계
를 포함하고,
상기 데이터를 응답하는 단계는
상기 매개 변수가 인덱스를 포함하고, 상기 요청 패킷의 헤더가 주소 범위 파라미터를 포함하는 경우, 상기 주소 범위 파라미터에 기초하여 상기 파일 내 상기 인덱스에 대응하는 주소 범위의 데이터 중 일부 데이터를 응답하는 단계
를 포함하는, 서버의 동작 방법.
A method of operating a server for a streaming service,
Receiving a request packet including a file URL and a parameter;
If the parameter indicates a data request, responding data in an address range corresponding to the parameter in the file corresponding to the file URL; And
If the parameter indicates a request for reproduction information, responding to the reproduction information of the file
Lt; / RTI >
The step of responding to the data
If the parameter includes an index and the header of the request packet includes an address range parameter, responding to the data of the address range corresponding to the index in the file based on the address range parameter
Lt; / RTI >
제15항에 있어서,
상기 재생 정보는
상기 파일에 저장된 컨텐츠의 해상도, 상기 해상도와 다른 제2 해상도의 컨텐츠를 저장하는 제2 파일의 URL, 및 상기 제2 해상도를 포함하는, 서버의 동작 방법.
16. The method of claim 15,
The reproduction information
A resolution of the content stored in the file, a URL of a second file storing a content having a second resolution different from the resolution, and the second resolution.
제16항에 있어서,
상기 재생 정보는
상기 파일을 분할하는 제1 조각의 크기 및 상기 제1 조각의 개수 중 적어도 하나, 및
상기 제2 파일을 분할하는 제2 조각의 크기 및 상기 제2 조각의 개수 중 적어도 하나
를 더 포함하는, 서버의 동작 방법.
17. The method of claim 16,
The reproduction information
At least one of a size of the first piece dividing the file and a number of the first pieces, and
At least one of the size of the second piece dividing the second file and the number of the second pieces
Lt; / RTI >
제15항에 있어서,
상기 인덱스에 대응하는 주소 범위는 상기 파일을 분할하는 조각의 크기에 기초하여 결정되는, 서버의 동작 방법.
16. The method of claim 15,
Wherein the address range corresponding to the index is determined based on the size of the piece dividing the file.
제15항에 있어서,
상기 서버는 클라이언트와의 통신을 위하여 http 프로토콜을 이용하는, 서버의 동작 방법.
16. The method of claim 15,
Wherein the server uses the http protocol for communication with the client.
하드웨어와 결합되어 제1항 내지 제19항 중 어느 하나의 항의 방법을 실행시키기 위하여 매체에 저장된 컴퓨터 프로그램.19. A computer program stored in a medium for executing the method of any one of claims 1 to 19 in combination with hardware.
KR1020160023984A 2016-02-29 2016-02-29 Operating method of client and server for streaming service KR20160031467A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020160023984A KR20160031467A (en) 2016-02-29 2016-02-29 Operating method of client and server for streaming service

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160023984A KR20160031467A (en) 2016-02-29 2016-02-29 Operating method of client and server for streaming service

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020140089679A Division KR101600469B1 (en) 2014-07-16 2014-07-16 Operating method of client and server for streaming service

Publications (1)

Publication Number Publication Date
KR20160031467A true KR20160031467A (en) 2016-03-22

Family

ID=55644865

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160023984A KR20160031467A (en) 2016-02-29 2016-02-29 Operating method of client and server for streaming service

Country Status (1)

Country Link
KR (1) KR20160031467A (en)

Similar Documents

Publication Publication Date Title
KR101600469B1 (en) Operating method of client and server for streaming service
US10715877B2 (en) System for adaptive video switching for variable network conditions
CA2965484C (en) Adaptive bitrate streaming latency reduction
KR101082642B1 (en) Apparatus system and method for adaptive-rate shifting of streaming content
US9609340B2 (en) Just-in-time (JIT) encoding for streaming media content
US9641566B1 (en) Methods and systems for instantaneous asynchronous media sharing
US20150256600A1 (en) Systems and methods for media format substitution
EP2521369A2 (en) Media file storage format and adaptive delivery system
US9680901B2 (en) Method, apparatus and non-transitory computer medium for encoding data of a media file
EP2779657B1 (en) A method, apparatus, and computer program for obtaining a required frame size for a compressed data frame
US10003626B2 (en) Adaptive real-time transcoding method and streaming server therefor
WO2015192683A1 (en) Content distribution method, device and system based on adaptive streaming technology
US20150067753A1 (en) Generating frame chunking for video fast starts
US11489899B1 (en) Segment ladder transitioning in adaptive streaming
KR101863598B1 (en) Operating method of client for streaming service
US9294821B2 (en) Scrubbing noise remover and methods for use therewith
Kesavan et al. Rate adaptation performance and quality analysis of adaptive HTTP streaming methods
US9106802B2 (en) Dual-type of playback for multimedia content
KR20160031467A (en) Operating method of client and server for streaming service
KR102237900B1 (en) Method for retrieving, by a client terminal, a content part of a multimedia content
KR102273143B1 (en) System for cloud streaming service, method of cloud streaming service based on still image and apparatus for the same
KR20210108114A (en) Http-based live streaming method and apparatus

Legal Events

Date Code Title Description
A107 Divisional application of patent
N231 Notification of change of applicant
A201 Request for examination
E701 Decision to grant or registration of patent right