KR101863598B1 - 스트리밍 서비스를 위한 클라이언트의 동작 방법 - Google Patents

스트리밍 서비스를 위한 클라이언트의 동작 방법 Download PDF

Info

Publication number
KR101863598B1
KR101863598B1 KR1020160096803A KR20160096803A KR101863598B1 KR 101863598 B1 KR101863598 B1 KR 101863598B1 KR 1020160096803 A KR1020160096803 A KR 1020160096803A KR 20160096803 A KR20160096803 A KR 20160096803A KR 101863598 B1 KR101863598 B1 KR 101863598B1
Authority
KR
South Korea
Prior art keywords
media
file
piece
header
client
Prior art date
Application number
KR1020160096803A
Other languages
English (en)
Other versions
KR20180013298A (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 KR1020160096803A priority Critical patent/KR101863598B1/ko
Priority to EP16790509.0A priority patent/EP3292697A4/en
Priority to PCT/KR2016/010573 priority patent/WO2018021616A1/en
Priority to CN201680002210.1A priority patent/CN108702542A/zh
Priority to US15/274,009 priority patent/US20180034883A1/en
Publication of KR20180013298A publication Critical patent/KR20180013298A/ko
Application granted granted Critical
Publication of KR101863598B1 publication Critical patent/KR101863598B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/61Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
    • H04L65/613Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for the control of the source by the destination
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/70Media network packetisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/434Disassembling of a multiplex stream, e.g. demultiplexing audio and video streams, extraction of additional data from a video stream; Remultiplexing of multiplex streams; Extraction or processing of SI; Disassembling of packetised elementary stream
    • H04N21/4345Extraction or processing of SI, e.g. extracting service information from an MPEG stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/61Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
    • H04L65/612Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for unicast
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/65Network streaming protocols, e.g. real-time transport protocol [RTP] or real-time control protocol [RTCP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/75Media network packet handling
    • H04L65/762Media network packet handling at the source 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/434Disassembling of a multiplex stream, e.g. demultiplexing audio and video streams, extraction of additional data from a video stream; Remultiplexing of multiplex streams; Extraction or processing of SI; Disassembling of packetised elementary stream
    • H04N21/4343Extraction or processing of packetized elementary streams [PES]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/47End-user applications
    • H04N21/472End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content
    • H04N21/4722End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content for requesting additional data associated with the content
    • H04N21/4725End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content for requesting additional data associated with the content using interactive regions of the image, e.g. hot spots
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]

Landscapes

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

Abstract

스트리밍 서비스를 위한 클라이언트의 동작 방법이 개시된다. 일 실시예에 따른 클라이언트의 동작 방법은 스트리밍 미디어의 헤더 정보에 기초하여 요청 바이트 범위를 결정하고, 스트리밍 미디어의 데이터 중 요청 바이트 범위의 미디어 조각을 수신하며, 수신된 미디어 조각을 재생하는 단계들을 포함한다.

Description

스트리밍 서비스를 위한 클라이언트의 동작 방법{OPERATING METHOD OF CLIENT FOR STREAMING SERVICE}
아래 실시예들은 스트리밍 서비스를 위한 클라이언트의 동작 방법에 관한 것이다.
본 발명의 배경이 되는 기술은 다음의 문헌에 개시되어 있다.
1) 한국 공개특허공보 제2014-0054138호 (2014.05.08 공개)
2) 한국 공개특허공보 제2012-0117384호 (2012.10.24 공개)
과거 대부분의 스트리밍 기술들은 실시간 스트리밍 프로토콜(Real Time Streaming Protocol, RTSP)과 같은 스트리밍 전용 프로토콜을 이용해 왔다. 하지만, 최근 스트리밍 기술들은 인터넷과 같이 넓게 분포된 HTTP 네트워크 상에서 효율적으로 동작할 수 있도록 설계된다. 예를 들어, 가변 비트레이트 스트리밍(adaptive bitrate streaming)은 네트워크의 상태 혹은 전송 속도 등을 기반으로 대역폭이 소화할 수 있는 화질의 컨텐츠를 전송하는 HTTP 기반의 스트리밍 기법이다.
가변 비트레이트 스트리밍은 파일을 시간 단위로 나누어 전송한다. 예를 들어, 가변 비트레이트 스트리밍은 2~10초의 컨텐츠를 저장하는 조각(chunk)을 이용하여 스트리밍 서비스를 제공할 수 있다. 이 때, 전송되는 조각들 각각은 I-frame 등 미리 정해진 키 프레임으로 시작될 것이 요구된다. 이러한 조건을 만족시키기 위하여, 가변 비트레이트 스트리밍에서는 영상 파일을 스트리밍용 파일로 변환(transcoding)하는 과정이 필수적으로 요구된다. 이러한 변환 과정에서 영상 파일의 화질이 저하되고, 또한 변환을 위한 부수적인 시간 및 컴퓨팅 파워가 추가적으로 소모된다.
또한, 가변 비트레이트 스트리밍은 매니페스트(manifest) 파일을 필수적으로 이용한다. 매니페스트 파일은 스트리밍용 파일의 각 조각들에 대한 정보를 저장하는 파일이다. 매니페스트 파일은 영상 파일이 스트리밍용 파일로 변환될 때 생성된다. 가변 비트레이트 스트리밍에 따르면, 클라이언트는 스트리밍 서비스를 제공받기 위하여 매니페스트 파일을 필수적으로 참조하여야 한다.
아래에서 설명할 실시예들은 스트리밍용 파일 포맷을 이용하지 않고, 영상 파일 포맷을 그대로 이용하는 HTTP 기반 스트리밍 기술을 제공한다. 실시예들은 영상 파일을 용량 단위로 나누어 전송하는 기술을 제공한다. 예를 들어, 실시예들은 영상 파일을 실제로 분할하지 않고 영상 파일의 일부를 바이트 주소 단위로 전송하는 스트리밍 서비스를 제공할 수 있다. 실시예들에 따르면, 영상 파일을 스트리밍용 파일로 변환하는 과정이 생략될 수 있다.
실시예들은 영상 파일을 스트리밍용 파일로 변환하는 과정을 생략함으로써, 변환 시 발생되는 화질 저하를 방지하고 서버의 부하를 감소시킬 수 있다. 또한, 실시예들에 따르면, 영상 파일이 서버에 업로드된 이후 영상 파일을 스트리밍용 파일로 변환하는 시간이 요구되지 않으므로, 보다 신속한 스트리밍 서비스가 제공될 수 있다. 뿐만 아니라, 실시예들에 따르면 스트리밍용 파일이 별도로 생성되지 않으므로, 스트리밍용 파일의 조각 정보를 저장하는 매니페스트 파일이 요구되지 않는다.
일 측에 따른 스트리밍 서비스를 위한 클라이언트의 동작 방법은 스트리밍 서버로부터, 파일 URL에 대응하는 파일의 헤더를 수신하는 단계; 상기 헤더에 기초하여 제1 바이트 범위(byte range)를 결정하는 단계; 상기 파일 URL 및 상기 제1 바이트 범위를 포함하는 제1 요청 패킷을 상기 스트리밍 서버로 전송하는 단계; 상기 파일 URL에 대응하는 파일의 미디어 데이터 중 상기 제1 바이트 범위의 제1 미디어 조각을 수신하는 단계; 및 상기 제1 미디어 조각을 재생하는 단계를 포함한다.
상기 클라이언트의 동작 방법은 탐색 요청을 수신하는 단계; 상기 헤더 및 상기 탐색 요청에 기초하여 제2 바이트 범위를 결정하는 단계; 상기 파일 URL 및 상기 제2 바이트 범위를 포함하는 제2 요청 패킷을 상기 스트리밍 서버로 전송하는 단계; 상기 파일 URL에 대응하는 파일의 미디어 데이터 중 상기 제2 바이트 범위의 제2 미디어 조각을 수신하는 단계; 및 상기 제2 미디어 조각을 재생하는 단계를 포함할 수 있다.
상기 제2 바이트 범위를 결정하는 단계는 상기 헤더에 기초하여, 상기 탐색 요청에 대응하는 지점 혹은 상기 지점 이전의 RAP(Random Access Point)를 획득하는 단계; 및 상기 RAP를 상기 제2 바이트 범위의 시작 지점으로 설정하는 단계를 포함할 수 있다.
상기 클라이언트의 동작 방법은 해상도 변경 요청을 수신하는 단계; 상기 스트리밍 서버로부터, 변경 요청된 해상도의 제2 파일의 헤더를 수신하는 단계; 상기 제2 파일의 헤더 및 현재 재생 지점에 기초하여 제2 바이트 범위를 결정하는 단계; 상기 제2 파일의 파일 URL 및 상기 제2 바이트 범위를 포함하는 제2 요청 패킷을 상기 스트리밍 서버로 전송하는 단계; 상기 제2 파일의 미디어 데이터 중 상기 제2 바이트 범위의 제2 미디어 조각을 수신하는 단계; 및 상기 제2 미디어 조각을 재생하는 단계를 포함할 수 있다.
상기 제2 바이트 범위를 결정하는 단계는 상기 제2 파일의 헤더에 기초하여, 상기 현재 재생 지점 이후의 RAP를 획득하는 단계; 및 상기 RAP를 상기 제2 바이트 범위의 시작 지점으로 설정하는 단계를 포함할 수 있다.
상기 제1 미디어 조각을 재생하는 단계는 상기 헤더에 기초하여 상기 제1 미디어 조각을 위한 제1 헤더를 생성하는 단계; 및 제1 스레드를 이용하여 상기 제1 헤더와 상기 제1 미디어 조각을 포함하는 제1 조각 미디어 파일을 재생하는 단계를 포함할 수 있다.
상기 클라이언트의 동작 방법은 상기 제1 바이트 범위에 기초하여 제2 바이트 범위를 결정하는 단계; 상기 파일 URL 및 상기 제2 바이트 범위를 포함하는 제2 요청 패킷을 상기 스트리밍 서버로 전송하는 단계; 상기 파일 URL에 대응하는 파일의 미디어 데이터 중 상기 제2 바이트 범위의 제2 미디어 조각을 수신하는 단계; 및
상기 제2 미디어 조각을 재생하는 단계를 더 포함할 수 있다.
상기 제2 미디어 조각을 재생하는 단계는 상기 헤더에 기초하여 상기 제2 미디어 조각을 위한 제2 헤더를 생성하는 단계; 및 제2 스레드를 이용하여 상기 제2 헤더와 상기 제2 미디어 조각을 포함하는 제2 조각 미디어 파일을 재생하는 단계를 포함할 수 있다.
상기 제2 조각 미디어 파일을 재생하는 단계는 상기 제2 미디어 조각의 재생 시작 시점에 도달하였는지를 감지하는 단계; 상기 제2 미디어 조각의 재생 시작 시점에 도달한 경우, 상기 제1 미디어 조각을 디코딩하는 제1 스레드로부터 상기 제2 스레드로 스위치 하는 단계; 및 상기 제2 스레드를 이용하여 상기 제2 미디어 조각을 디코딩 하는 단계를 포함할 수 있다.
상기 제2 미디어 조각을 재생하는 단계는 상기 제1 미디어 조각의 적어도 일부 및 상기 제2 미디어 조각의 적어도 일부를 포함하는 제2' 미디어 조각을 설정하는 단계; 상기 헤더에 기초하여 상기 제2' 미디어 조각을 위한 제2' 헤더를 생성하는 단계; 및 제2 스레드를 이용하여 상기 제2' 헤더와 상기 제2' 미디어 조각을 포함하는 제2' 조각 미디어 파일을 재생하는 단계를 포함할 수 있다.
상기 제2' 미디어 조각을 설정하는 단계는 오픈 지오피 방식으로 인코딩된 프레임에 의하여 참조되는 이전 또는 이후 프레임의 범위에 기초하여, 상기 제1 미디어 조각의 일부를 상기 제2' 미디어 조각에 포함시키는 단계를 포함할 수 있다.
상기 클라이언트의 동작 방법은 상기 스트리밍 서버로부터, 동일한 컨텐츠의 복수의 해상도들에 대응하는 복수의 파일 URL들을 수신하는 단계를 더 포함할 수 있다.
일 측에 따른 스트리밍 서비스를 위한 클라이언트 장치는 제1 해상도의 파일의 파일 URL 및 헤더를 저장하는 메모리; 상기 헤더에 기초하여 제1 바이트 범위(byte range)를 결정하는 프로세서; 및 상기 파일 URL 및 상기 제1 바이트 범위를 포함하는 제1 요청 패킷을 상기 스트리밍 서버로 전송하고, 상기 제1 해상도의 파일의 미디어 데이터 중 상기 제1 바이트 범위의 제1 미디어 조각을 수신하는 통신부를 포함한다.
상기 프로세서는 탐색 요청에 반응하여, 상기 헤더에 기초하여 상기 탐색 요청에 대응하는 지점 혹은 상기 지점 이전의 RAP(Random Access Point)를 획득하고, 상기 RAP를 시작 지점으로 하는 제2 바이트 범위를 결정하고, 상기 통신부는 상기 파일 URL 및 상기 제2 바이트 범위를 포함하는 제2 요청 패킷을 상기 스트리밍 서버로 전송하며, 상기 제1 해상도의 파일의 미디어 데이터 중 상기 제2 바이트 범위의 제2 미디어 조각을 수신할 수 있다.
상기 메모리는 제2 해상도의 파일의 파일 URL 및 헤더를 더 저장하고, 상기 프로세서는 해상도 변경 요청에 반응하여, 상기 제2 해상도의 파일의 헤더에 기초하여 현재 재생 지점 이후의 RAP를 획득하고, 상기 RAP를 시작 지점으로 하는 제2 바이트 범위를 결정하며, 상기 통신부는 상기 제2 해상도의 파일의 파일 URL 및 상기 제2 바이트 범위를 포함하는 제2 요청 패킷을 상기 스트리밍 서버로 전송하고, 상기 제2 해상도의 파일의 미디어 데이터 중 상기 제2 바이트 범위의 제2 미디어 조각을 수신할 수 있다.
상기 프로세서는 상기 제1 바이트 범위에 기초하여 제2 바이트 범위를 결정하고, 상기 통신부는 상기 파일 URL 및 상기 제2 바이트 범위를 포함하는 제2 요청 패킷을 상기 스트리밍 서버로 전송하며, 상기 제1 해상도의 파일의 미디어 데이터 중 상기 제2 바이트 범위의 제2 미디어 조각을 수신할 수 있다.
도 1은 일 실시예에 따른 클라이언트의 동작 방법을 설명하는 도면.
도 2는 일 실시예에 따른 복수의 스레드들을 이용하여 미디어 조각들을 재생하는 방법을 설명하는 도면.
도 3은 일 실시예에 따른 미디어 조각들의 전송 및 재생 시나리오를 설명하는 도면.
도 4는 다른 실시예에 따른 복수의 스레드들을 이용하여 미디어 조각들을 재생하는 방법을 설명하는 도면.
도 5는 다른 실시예에 따른 미디어 조각들의 전송 및 재생 시나리오를 설명하는 도면.
도 6은 일 실시예에 따른 탐색 동작을 설명하는 도면.
도 7은 일 실시예에 따른 해상도 변경 동작을 설명하는 도면.
도 8은 일 실시예에 따른 헤더 정보를 획득하는 동작을 설명하는 도면.
이하, 실시예들을 첨부된 도면을 참조하여 상세하게 설명한다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다. 하기에서 설명될 실시예들은 스트리밍 서비스를 위한 클라이언트, 또는 서버에 적용될 수 있다.
일 실시예에 따른 클라이언트는 스트리밍 서비스를 제공받는 컴퓨팅 장치로, 예를 들어 퍼스널 컴퓨터, 랩톱 컴퓨터, 테블릿 컴퓨터, PDA, 스마트 폰 등을 포함할 수 있다. 클라이언트에는 HTML5 표준을 이용하여 서버와 통신하는 클라이언트 어플리케이션, 예를 들어 웹 기반 mp4 플레이어 등이 설치될 수 있다. 일 실시예에 따른 서버는 스트리밍 서비스를 제공하는 컴퓨팅 장치로, 예를 들어 웹 서버 등을 포함할 수 있다. 서버는 서버 전용 컴퓨팅 장치뿐 아니라 퍼스널 컴퓨터, 랩톱 컴퓨터, 테블릿 컴퓨터, PDA, 스마트 폰 등으로도 구성될 수 있다.
도 1은 일 실시예에 따른 클라이언트의 동작 방법을 설명하는 도면이다. 도 1을 참조하면, 일 실시예에 따른 클라이언트(110)는 바이트 범위(byte range)를 이용하여 서버(120)에 저장된 미디어 파일의 조각을 요청한다. 예를 들어, 클라이언트(110)는 범위(range) 헤더 요청을 허용하는 HTTP/1.1 표준을 이용할 수 있다.
서버(120)는 복수의 해상도들의 파일들을 저장할 수 있다. 복수의 해상도들의 파일들 각각은 헤더와 미디어 데이터를 포함하며, 복수의 해상도들의 파일들 각각은 서로 다른 URL들에 의하여 접근될 수 있다. 여기서, URL은 컴퓨터 네트워크 상의 자원을 고유하게 지시하는 정보로, 예를 들어 스트리밍 서비스의 대상이 되는 영상 파일을 고유하게 지시하는 정보일 수 있다.
클라이언트(110)는 서버(120)에 저장된 복수의 해상도들의 파일들의 URL들을 포함하는 파일 리스트를 획득할 수 있다. 예를 들어, 클라이언트(110)는 웹 브라우저 등을 통하여 접속한 서버(120)의 웹 페이지의 src 속성으로부터 파일 리스트를 획득할 수 있다.
파일 리스트는 제1 해상도의 파일의 URL 및 제1 해상도와 다른 제2 해상도의 파일의 URL 등을 포함할 수 있다. 경우에 따라서 통일성 있는 자료 구조를 위하여, 파일 리스트는 동일한 컨텐츠에 대응하는 모든 파일들의 URL들 및 해상도들을 포함할 수 있다. 예를 들어, 파일 리스트는 제1 파일의 URL, 제1 파일의 해상도, 및 제1 파일의 해상도와 다른 해상도의 컨텐츠를 저장하는 적어도 하나의 파일의 URL 및 해상도를 포함할 수 있다.
각각의 파일들은 파일명에 해상도를 포함할 수 있다. 예를 들어, 서버(120)는 원본 영상 파일인 '뮤직비디오.mp4'의 업로드가 완료되면, '뮤직비디오.mp4'를 새로운 해상도로 인코딩을 할 수 있다. 이 때, 서버(120)는 원본 영상 파일의 파일명에 새로운 해상도를 부가하여, 새로운 해상도의 파일명을 결정할 수 있다.
클라이언트(110)는 서버(120)로부터 제1 해상도의 파일의 헤더를 획득할 수 있다. 일반적으로 제1 해상도의 헤더는 제1 해상도의 파일의 시작 부분에 위치한다. 이 경우, 클라이언트(110)는 제1 해상도의 파일의 시작 부분에 해당하는 바이트 범위를 서버(120)에 요청함으로써, 제1 해상도의 파일의 헤더를 획득할 수 있다.
도면에 도시하지 않았으나, 제1 해상도의 파일의 헤더가 제1 해상도의 파일의 끝 부분 혹은 중간 부분에 위치할 수 있다. 이 경우, 클라이언트(110)는 제1 해상도의 파일의 시작 부분에 해당하는 바이트 범위를 서버(120)에 요청함으로써, 제1 해상도의 파일의 헤더가 위치한 오프셋을 획득할 수 있다. 클라이언트(110)는 오프셋 이후의 부분에 해당하는 바이트 범위를 서버(120)에 요청함으로써, 제1 해상도의 파일의 헤더를 획득할 수 있다.
클라이언트(110)는 제1 해상도의 파일의 URL 및 제1 바이트 범위를 포함하는 제1 요청 패킷을 서버(120)로 전송한다. 클라이언트(110)는 제1 요청 패킷을 서버(120)에 전송함으로써, 제1 해상도의 파일의 미디어 데이터 중 일부(예를 들어, 제1 바이트 범위)에 해당하는 미디어 조각을 요청할 수 있다. 클라이언트(110)는 서버(120)로부터 제1 해상도의 파일의 미디어 데이터 중 제1 바이트 범위에 해당하는 미디어 조각을 수신하여 재생한다. 실시예들은 미디어 파일을 용량 단위로 나누어 전송하는 스트리밍 기술을 제공할 수 있다.
클라이언트(110)는 제1 해상도의 파일의 헤더에 기초하여, 제1 바이트 범위를 결정할 수 있다. 예를 들어, 제1 해상도의 파일을 처음부터 재생하기 위하여, 클라이언트(110)는 제1 해상도의 파일의 헤더로부터 첫 랜덤 액세스 포인트(random access point, RAP)의 오프셋을 획득할 수 있다. RAP는 인코딩된 미디어 스트림 내에서 직접적으로 접근 가능한 지점이다. RAP는 이전 또는 이후 프레임을 참조하지 않으므로, 디코딩 시에 클라이언트(110)는 RAP의 이전 또는 이후 프레임을 디코딩할 필요 없이 RAP만 단독으로 디코딩할 수 있다. 클라이언트(110)는 제1 바이트 범위의 시작 지점을 첫 RAP의 오프셋으로 설정할 수 있다.
서버(120)에 요청되는 바이트 범위의 사이즈는 미리 정해지거나 클라이언트(120)에 의하여 설정될 수 있다. 예를 들어, 바이트 범위의 사이즈는 해상도 별로 다르게 정해지거나, 스트리밍 환경 등에 따라 클라이언트(110)에 의하여 설정될 수 있다. 전술한 방식에 따라, 클라이언트(110)는 바이트 범위의 시작 시점 및 사이즈를 설정할 수 있다. 경우에 따라, 클라이언트(110)는 바이트 범위의 사이즈 대신 끝 시점을 설정할 수도 있다.
클라이언트(110)는 제1 바이트 범위에 해당하는 미디어 조각을 재생하는 동안, 제1 해상도 파일의 URL 및 제2 바이트 범위를 포함하는 제2 요청 패킷을 서버(120)로 전송할 수 있다. 제2 바이트 범위는 제1 해상도의 파일 내에서 제1 요청 패킷에 의하여 요청된 제1 바이트 범위를 바로 뒤따르는 바이트 범위일 수 있다. 클라이언트(110)는 서버(120)로부터 제1 해상도의 파일의 미디어 데이터 중 제2 바이트 범위에 해당하는 미디어 조각을 수신하여 재생한다.
클라이언트(110)는 버퍼의 잔량을 체크할 수 있다. 예를 들어, 버퍼의 잔량이 미리 정해진 임계 값 이하인지 여부를 판단할 수 있다. 미리 정해진 임계 값은 바이트 단위 또는 시간 단위일 수 있다. 미리 정해진 임계 값이 시간 단위인 경우, 재생 중인 컨텐츠의 해상도에 기초하여 시간 단위 임계 값이 바이트 단위 임계 값으로 환산될 수 있다. 버퍼의 잔량이 미리 정해진 임계 값 이하인 경우, 클라이언트(110)는 제1 바이트 범위의 다음 바이트 범위를 요청하는 제2 요청 패킷을 서버(120)로 전송할 수 있다.
도 2는 일 실시예에 따른 복수의 스레드들을 이용하여 미디어 조각들을 재생하는 방법을 설명하는 도면이다. 도 2를 참조하면, 클라이언트(110)는 서버(120)로부터 제1 해상도의 파일(210)의 헤더(211)를 수신하여 저장할 수 있다. 클라이언트(110)는 도 1을 참조하여 설명한 것과 같이, 제1 해상도의 파일(210)의 미디어 데이터(212) 중 적어도 일부를 바이트 범위로 요청할 수 있다.
클라이언트(110)는 제1 바이트 범위에 해당하는 제1 미디어 조각(222)을 수신하고, 제1 미디어 조각(222)에 맞게 헤더(211)를 가공하여 제1 헤더(221)를 생성할 수 있다. 예를 들어, 헤더(211)는 RAP 정보, 키 프레임 정보, 프레임 당 시간구간 정보, 비디오 프레임 오프셋, 오디오 프레임 오프셋, 프레임의 바이트 사이즈, 코덱 정보 등을 포함할 수 있다. 클라이언트(110)는 헤더(211)에 포함된 정보 중 일부를 추출하거나, 오프셋 등을 제1 미디어 조각(222)에 맞게 수정함으로써 제1 헤더(221)를 생성할 수 있다.
제1 헤더(221)와 제1 미디어 조각(222)은 독립적인 제1 조각 미디어 파일로 인식될 수 있으며, 클라이언트(110)는 제1 스레드(230)를 이용하여 제1 조각 미디어 파일을 재생할 수 있다. 제1 스레드(230)는 디코딩 인스턴스일 수 있다.
클라이언트(110)는 제2 바이트 범위에 해당하는 제2 미디어 조각(242)을 수신하고, 제2 미디어 조각(242)에 맞게 헤더(211)를 가공하여 제2 헤더(241)를 생성할 수 있다. 제2 헤더(241)와 제2 미디어 조각(242)은 독립적인 제2 조각 미디어 파일로 인식될 수 있으며, 클라이언트(110)는 제2 스레드(250)를 이용하여 제2 조각 미디어 파일을 재생할 수 있다. 제2 스레드(230)는 디코딩 인스턴스일 수 있다.
도 3은 일 실시예에 따른 미디어 조각들의 전송 및 재생 시나리오를 설명하는 도면이다. 도 3을 참조하면, 클라이언트(110)는 제1 스레드(230)와 제2 스레드(250)를 번갈아 이용하여, 연속적으로 요청되는 바이트 범위의 미디어 조각들을 재생할 수 있다. 일 실시예에 따르면, 미디어 조각들 각각은 RAP로 시작될 수 있다.
도 2 및 도 3에서, 바이트 요청되는 미디어 조각 단위로 조각 미디어 파일이 생성되어 재생되는 실시예를 설명하였다. 이하, 도 4 및 도 5에서, 바이트 요청되는 미디어 조각과 조각 미디어 파일에 포함되는 미디어 조각이 일치하지 않는 실시예를 설명한다.
도 4는 다른 실시예에 따른 복수의 스레드들을 이용하여 미디어 조각들을 재생하는 방법을 설명하는 도면이다. 도 4를 참조하면, 클라이언트(110)는 서버(120)로부터 제1 해상도의 파일(410)의 헤더(411)를 수신하여 저장할 수 있다. 클라이언트(110)는 제1 해상도의 파일(410)의 미디어 데이터(412) 중 적어도 일부를 바이트 범위로 요청할 수 있다.
클라이언트(110)는 제1 바이트 범위에 해당하는 제1 미디어 조각(421)을 수신하고, 제1 미디어 조각(421)에 맞게 헤더(411)를 가공하여 제1 헤더(431)를 생성할 수 있다. 제1 헤더(431)와 제1 미디어 조각(421)은 독립적인 제1 조각 미디어 파일로 인식될 수 있으며, 클라이언트(110)는 제1 스레드(440)를 이용하여 제1 조각 미디어 파일을 재생할 수 있다.
클라이언트(110)는 제2 바이트 범위에 해당하는 제2 미디어 조각(422)을 수신한다. 이 때, 클라이언트(110)는 제1 미디어 조각(421)의 끝 부분과 제2 미디어 조각(422)을 포함하는 제2' 미디어 조각(452)을 이용하여 제2' 조각 미디어 파일을 생성할 수 있다. 클라이언트(110)는 제2' 미디어 조각(452)에 맞게 헤더(411)를 가공하여 제2' 헤더(451)를 생성할 수 있다. 제2' 헤더(451)와 제2' 미디어 조각(452)은 독립적인 제2' 조각 미디어 파일로 인식될 수 있으며, 클라이언트(110)는 제2 스레드(460)를 이용하여 제2' 조각 미디어 파일을 재생할 수 있다.
이처럼 클라이언트(110)는 연속적으로 요청되는 바이트 영역의 미디어 조각들을 미리 정해진 사이즈 또는 시간만큼 중첩시켜 조각 미디어 파일들을 생성할 수 있다. 이 경우, 클라이언트(110)는 오픈 지오피(open GOP) 방식으로 인코딩 된 미디어 스트림에 대한 스트리밍 서비스를 지원할 수 있다. 예를 들어, 인접한 조각 미디어 파일들 사이에 중첩되는 사이즈 또는 시간은, 조각 미디어 파일이 다음 조각 미디어 파일로 스위칭되는 지점 혹은 조각 미디어 파일이 시작되는 지점 부근의 프레임들을 디코딩할 때 오픈 지오피 방식에 의하여 참조되는 이전 또는 이후의 프레임들을 충분히 포함하는 정도로 설정될 수 있다. 일 예로, 바이트 요청되는 미디어 조각이 초당 24프레임으로 약 3초 분량에 해당하는 사이즈를 가지는 경우, 중첩되는 영역은 약 0.3초 분량에 해당하는 사이즈로 설정될 수 있다.
도 5는 다른 실시예에 따른 미디어 조각들의 전송 및 재생 시나리오를 설명하는 도면이다. 도 5를 참조하면, 클라이언트(110)는 제1 스레드(440)와 제2 스레드(460)를 번갈아 이용하여, 연속적으로 요청되는 바이트 범위의 미디어 조각들을 재생할 수 있다.
도 6은 일 실시예에 따른 탐색 동작을 설명하는 도면이다. 탐색 동작은 컨텐츠를 랜덤 액세스하는 동작이다. 도 6을 참조하면, 클라이언트(110)는 바이트 범위(610)이 제1 스레드(620)에 의하여 재생되는 도중, 탐색 요청(630)을 수신할 수 있다. 예를 들어, 클라이언트(110)는 미리 정해진 인터페이스를 통하여 탐색 입력을 수신할 수 있다. 탐색 입력은 탐색 시간을 포함할 수 있다.
클라이언트(110)는 제1 파일의 헤더에 기초하여 탐색 시간에 대응하는 RAP를 검출할 수 있다. 예를 들어, 클라이언트(110)는 탐색 시간의 프레임과 동일하거나 탐색 시간의 프레임보다 앞서는 가장 가까운 RAP를 검출할 수 있다.
클라이언트(110)는 검출된 RAP를 시작 지점으로 하는 바이트 범위(640)를 요청하여 수신한 뒤, 바이트 범위(610)를 재생 중인 제1 스레드(620)를 제2 스레드(650)로 스위치 함으로써 탐색 동작을 수행할 수 있다. 이 때, 제2 스레드(650)는 바이트 범위(640)의 시작 지점부터 재생하는 대신, 탐색 요청(630)에 대응하는 지점부터 재생할 수 있다.
도 7은 일 실시예에 따른 해상도 변경 동작을 설명하는 도면이다. 도 7을 참조하면, 클라이언트(110)는 바이트 범위(710)이 제1 스레드(720)에 의하여 재생되는 도중, 해상도 변경 요청(730)을 수신할 수 있다.
예를 들어, 클라이언트(110)는 미리 정해진 인터페이스를 통하여 사용자에게 현재 재생 중인 컨텐츠의 해상도 및/또는 변경 가능한 해상도를 제공할 수 있다. 클라이언트(110)는 인터페이스를 통하여 해상도 변경 입력을 수신할 수 있다.
경우에 따라, 클라이언트(110)는 자동으로 해상도 변경 여부를 결정할 수 있다. 예를 들어, 클라이언트(110)는 통신 상태, 버퍼링 여부, 통신 비용 등에 기초하여, 해상도 변경 여부를 자동으로 결정할 수 있다.
이하, 제1 해상도를 제2 해상도로 전환하는 실시예를 설명한다.
클라이언트(110)는 서버(120)로부터 제2 파일의 헤더를 수신할 수 있다. 제2 파일의 헤더를 수신하는 동작은 제1 파일의 헤더를 수신하는 동작과 동일하므로, 보다 상세한 설명은 생략한다.
클라이언트(110)는 제2 파일의 헤더에 기초하여 현재 재생 시간에 대응하는 RAP를 검출할 수 있다. 예를 들어, 클라이언트(110)는 현재 재생 시간 이후로 미리 정해진 시간, 예를 들어 1초, 이후의 프레임에 가장 가까운 RAP를 검출할 수 있다.
클라이언트(110)는 검출된 RAP를 시작 지점으로 하는 바이트 범위(740)를 요청하여 수신한 뒤, 바이트 범위(710)를 재생 중인 제1 스레드(720)를 제2 스레드(750)로 스위치 함으로써 해상도 변경 동작을 수행할 수 있다.
도 8은 일 실시예에 따른 헤더를 획득하는 동작을 설명하는 도면들이다. 일 실시예에 따른 클라이언트는 스트리밍 서비스를 통하여 재생하려는 제1 파일의 헤더를 획득할 수 있다. 제1 파일에 저장된 컨텐츠는 복수의 프레임들로 구성된다. 복수의 프레임들은 화면의 정보를 완전히 담은 프레임과 다른 프레임을 참조하는 프레임으로 분류될 수 있다. 화면의 정보를 완전히 담은 프레임은 RAP라고 지칭될 수 있다. 다른 프레임을 참조하는 프레임은 해당 프레임의 화면의 정보를 완전히 담지 않으므로, RAP에 비하여 작은 용량을 가질 수 있다.
제1 파일의 헤더는 제1 파일에 저장된 컨텐츠를 구성하는 복수의 프레임들 중 RAP들에 관한 정보를 포함할 수 있다. 예를 들어, 헤더는 RAP들 각각의 인덱스, 바이트 주소, 및 타임 스탬프 등을 포함할 수 있다.
일 예로, 제1 파일은 헤더를 저장할 수 있다. 예를 들어, 제1 파일이 mp4 파일 형식을 가지는 경우, 제1 파일은 헤더를 저장할 수 있다. 이 경우, 클라이언트는 헤더가 저장된 범위의 데이터를 서버로부터 수신함으로써, 헤더를 획득할 수 있다.
보다 구체적으로, 도 8을 참조하면, 클라이언트(110)는 제1 파일의 최초 조각(chunk-0)을 요청하는 요청 패킷을 서버(120)로 전송할 수 있다. 클라이언트(110)는 서버(120)로부터 제1 파일의 최초 조각을 포함하는 응답 패킷을 수신할 수 있다. 클라이언트(110)는 제1 파일의 최초 조각으로부터 헤더의 오프셋을 추출할 수 있다.
클라이언트(110)는 오프셋이 최초 조각의 범위 내에 포함되는지 여부를 판단함으로써, 오프셋의 데이터가 최초 조각에 포함되는지 여부를 판단할 수 있다. 오프셋이 최초 조각의 범위 내에 포함되는 경우, 클라이언트(110)는 이미 수신된 최초 조각으로부터 헤더를 획득할 수 있다.
오프셋이 최초 조각의 범위에 포함되지 않는 경우, 클라이언트(110)는 오프셋 이후의 데이터를 요청하는 요청 패킷을 서버(120)로 전송할 수 있다. 클라이언트(110)는 오프셋 이후의 데이터를 포함하는 응답 패킷을 수신할 수 있다. 클라이언트(110)는 응답 패킷으로부터 헤더를 추출할 수 있다.
도 9를 참조하면, 일 실시예에 따른 클라이언트(110)는 다양한 비트 레이트들을 이용하여 서버(120)로부터 조각들을 수신할 수 있다. 전술한 바와 같이, 실시예들에 따르면 조각들이 키 프레임으로 시작할 것이 요구되지 않으며, 나아가 조각들은 키 프레임을 포함하지 않을 수도 있다. 이에 따라, 서버(120)는 조각에 맞추어 인코딩을 하지 않아도 되고, 서버(120)는 mp4 등 일반적인 영상 파일을 용량 단위로 나누어 전송할 수 있다. 서버(120)와 클라이언트(110) 사이에서 전송되는 조각들이 키 프레임으로 시작하거나, 키 프레임을 포함하는 조건이 요구되지 않으므로, 실시예들은 클로즈드 GOP(Closed GOP)뿐 아니라, 오픈 GOP(Open GOP)도 지원할 수 있다.
클라이언트(110)는 버퍼의 크기만큼 조각들을 미리 다운로드 받을 수 있다. 클라이언트(110)는 재생된 조각들을 저장함으로써, 저장된 조각들에 속한 프레임들을 다시 재생할 때 해당 조각들을 중복하여 다운로드 받지 않도록 할 수 있다.
이상에서 설명된 실시예들은 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치, 방법 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 비록 한정된 도면에 의해 실시예들이 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다. 그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.

Claims (17)

  1. 스트리밍 서비스를 위한 클라이언트의 동작 방법에 있어서,
    스트리밍 서버로부터, 파일 URL에 대응하는 파일의 헤더를 수신하는 단계;
    상기 헤더에 기초하여 제1 바이트 범위(byte range)를 결정하는 단계;
    상기 파일 URL 및 상기 제1 바이트 범위를 포함하는 제1 요청 패킷을 상기 스트리밍 서버로 전송하는 단계;
    상기 파일 URL에 대응하는 파일의 미디어 데이터 중 상기 제1 바이트 범위의 제1 미디어 조각을 수신하는 단계; 및
    상기 제1 미디어 조각을 재생하는 단계
    를 포함하고,
    상기 제1 미디어 조각을 재생하는 단계는
    상기 헤더에 기초하여 상기 제1 미디어 조각을 위한 제1 헤더를 생성하는 단계; 및
    제1 스레드를 이용하여 상기 제1 헤더와 상기 제1 미디어 조각을 포함하는 제1 조각 미디어 파일을 재생하는 단계
    를 포함하는, 클라이언트의 동작 방법.
  2. 제1항에 있어서,
    탐색 요청을 수신하는 단계;
    상기 헤더 및 상기 탐색 요청에 기초하여 제2 바이트 범위를 결정하는 단계;
    상기 파일 URL 및 상기 제2 바이트 범위를 포함하는 제2 요청 패킷을 상기 스트리밍 서버로 전송하는 단계;
    상기 파일 URL에 대응하는 파일의 미디어 데이터 중 상기 제2 바이트 범위의 제2 미디어 조각을 수신하는 단계; 및
    상기 제2 미디어 조각을 재생하는 단계
    를 포함하는, 클라이언트의 동작 방법.
  3. 제2항에 있어서,
    상기 제2 바이트 범위를 결정하는 단계는
    상기 헤더에 기초하여, 상기 탐색 요청에 대응하는 지점 혹은 상기 지점 이전의 RAP(Random Access Point)를 획득하는 단계; 및
    상기 RAP를 상기 제2 바이트 범위의 시작 지점으로 설정하는 단계
    를 포함하는, 클라이언트의 동작 방법.
  4. 제1항에 있어서,
    해상도 변경 요청을 수신하는 단계;
    상기 스트리밍 서버로부터, 변경 요청된 해상도의 제2 파일의 헤더를 수신하는 단계;
    상기 제2 파일의 헤더 및 현재 재생 지점에 기초하여 제2 바이트 범위를 결정하는 단계;
    상기 제2 파일의 파일 URL 및 상기 제2 바이트 범위를 포함하는 제2 요청 패킷을 상기 스트리밍 서버로 전송하는 단계;
    상기 제2 파일의 미디어 데이터 중 상기 제2 바이트 범위의 제2 미디어 조각을 수신하는 단계; 및
    상기 제2 미디어 조각을 재생하는 단계
    를 포함하는, 클라이언트의 동작 방법.
  5. 제4항에 있어서,
    상기 제2 바이트 범위를 결정하는 단계는
    상기 제2 파일의 헤더에 기초하여, 상기 현재 재생 지점 이후의 RAP를 획득하는 단계; 및
    상기 RAP를 상기 제2 바이트 범위의 시작 지점으로 설정하는 단계
    를 포함하는, 클라이언트의 동작 방법.
  6. 삭제
  7. 제1항에 있어서,
    상기 제1 바이트 범위에 기초하여 제2 바이트 범위를 결정하는 단계;
    상기 파일 URL 및 상기 제2 바이트 범위를 포함하는 제2 요청 패킷을 상기 스트리밍 서버로 전송하는 단계;
    상기 파일 URL에 대응하는 파일의 미디어 데이터 중 상기 제2 바이트 범위의 제2 미디어 조각을 수신하는 단계; 및
    상기 제2 미디어 조각을 재생하는 단계
    를 더 포함하는, 클라이언트의 동작 방법.
  8. 제7항에 있어서,
    상기 제2 미디어 조각을 재생하는 단계는
    상기 헤더에 기초하여 상기 제2 미디어 조각을 위한 제2 헤더를 생성하는 단계; 및
    제2 스레드를 이용하여 상기 제2 헤더와 상기 제2 미디어 조각을 포함하는 제2 조각 미디어 파일을 재생하는 단계
    를 포함하는, 클라이언트의 동작 방법.
  9. 제8항에 있어서,
    상기 제2 조각 미디어 파일을 재생하는 단계는
    상기 제2 미디어 조각의 재생 시작 시점에 도달하였는지를 감지하는 단계;
    상기 제2 미디어 조각의 재생 시작 시점에 도달한 경우, 상기 제1 미디어 조각을 디코딩하는 제1 스레드로부터 상기 제2 스레드로 스위치 하는 단계; 및
    상기 제2 스레드를 이용하여 상기 제2 미디어 조각을 디코딩 하는 단계
    를 포함하는, 클라이언트의 동작 방법.
  10. 제7항에 있어서,
    상기 제2 미디어 조각을 재생하는 단계는
    상기 제1 미디어 조각의 적어도 일부 및 상기 제2 미디어 조각의 적어도 일부를 포함하는 제2' 미디어 조각을 설정하는 단계;
    상기 헤더에 기초하여 상기 제2' 미디어 조각을 위한 제2' 헤더를 생성하는 단계; 및
    제2 스레드를 이용하여 상기 제2' 헤더와 상기 제2' 미디어 조각을 포함하는 제2' 조각 미디어 파일을 재생하는 단계
    를 포함하는, 클라이언트의 동작 방법.
  11. 제10항에 있어서,
    상기 제2' 미디어 조각을 설정하는 단계는
    오픈 지오피 방식으로 인코딩된 프레임에 의하여 참조되는 이전 또는 이후 프레임의 범위에 기초하여, 상기 제1 미디어 조각의 일부를 상기 제2' 미디어 조각에 포함시키는 단계
    를 포함하는, 클라이언트의 동작 방법.
  12. 제1항에 있어서,
    상기 스트리밍 서버로부터, 동일한 컨텐츠의 복수의 해상도들에 대응하는 복수의 파일 URL들을 수신하는 단계
    를 더 포함하는, 클라이언트의 동작 방법.
  13. 하드웨어와 결합되어 제1항 내지 제5항 및 제7항 내지 제12항 중 어느 하나의 항의 방법을 실행시키기 위하여 기록매체에 저장된 컴퓨터 프로그램.
  14. 스트리밍 서비스를 위한 클라이언트 장치에 있어서,
    제1 해상도의 파일의 파일 URL 및 헤더를 저장하는 메모리;
    상기 헤더에 기초하여 제1 바이트 범위(byte range)를 결정하는 프로세서; 및
    상기 파일 URL 및 상기 제1 바이트 범위를 포함하는 제1 요청 패킷을 스트리밍 서버로 전송하고, 상기 제1 해상도의 파일의 미디어 데이터 중 상기 제1 바이트 범위의 제1 미디어 조각을 수신하는 통신부
    를 포함하고,
    상기 프로세서는 상기 헤더에 기초하여 상기 제1 미디어 조각을 위한 제1 헤더를 생성하고, 상기 제1 헤더에 기초하여 상기 제1 미디어 조각을 재생하는 클라이언트 장치.
  15. 제14항에 있어서,
    상기 프로세서는 탐색 요청에 반응하여,
    상기 헤더에 기초하여 상기 탐색 요청에 대응하는 지점 혹은 상기 지점 이전의 RAP(Random Access Point)를 획득하고, 상기 RAP를 시작 지점으로 하는 제2 바이트 범위를 결정하고,
    상기 통신부는
    상기 파일 URL 및 상기 제2 바이트 범위를 포함하는 제2 요청 패킷을 상기 스트리밍 서버로 전송하며, 상기 제1 해상도의 파일의 미디어 데이터 중 상기 제2 바이트 범위의 제2 미디어 조각을 수신하는, 클라이언트 장치.
  16. 제14항에 있어서,
    상기 메모리는
    제2 해상도의 파일의 파일 URL 및 헤더를 더 저장하고,
    상기 프로세서는 해상도 변경 요청에 반응하여,
    상기 제2 해상도의 파일의 헤더에 기초하여 현재 재생 지점 이후의 RAP를 획득하고, 상기 RAP를 시작 지점으로 하는 제2 바이트 범위를 결정하며,
    상기 통신부는
    상기 제2 해상도의 파일의 파일 URL 및 상기 제2 바이트 범위를 포함하는 제2 요청 패킷을 상기 스트리밍 서버로 전송하고, 상기 제2 해상도의 파일의 미디어 데이터 중 상기 제2 바이트 범위의 제2 미디어 조각을 수신하는, 클라이언트 장치.
  17. 제14항에 있어서,
    상기 프로세서는
    상기 제1 바이트 범위에 기초하여 제2 바이트 범위를 결정하고,
    상기 통신부는
    상기 파일 URL 및 상기 제2 바이트 범위를 포함하는 제2 요청 패킷을 상기 스트리밍 서버로 전송하며, 상기 제1 해상도의 파일의 미디어 데이터 중 상기 제2 바이트 범위의 제2 미디어 조각을 수신하는, 클라이언트 장치.
KR1020160096803A 2016-07-29 2016-07-29 스트리밍 서비스를 위한 클라이언트의 동작 방법 KR101863598B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020160096803A KR101863598B1 (ko) 2016-07-29 2016-07-29 스트리밍 서비스를 위한 클라이언트의 동작 방법
EP16790509.0A EP3292697A4 (en) 2016-07-29 2016-09-22 Operating method of client for streaming service
PCT/KR2016/010573 WO2018021616A1 (en) 2016-07-29 2016-09-22 Operating method of client for streaming service
CN201680002210.1A CN108702542A (zh) 2016-07-29 2016-09-22 用于串流服务的客户端操作方法
US15/274,009 US20180034883A1 (en) 2016-07-29 2016-09-23 Operating method of client for streaming service

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160096803A KR101863598B1 (ko) 2016-07-29 2016-07-29 스트리밍 서비스를 위한 클라이언트의 동작 방법

Publications (2)

Publication Number Publication Date
KR20180013298A KR20180013298A (ko) 2018-02-07
KR101863598B1 true KR101863598B1 (ko) 2018-06-01

Family

ID=61010781

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160096803A KR101863598B1 (ko) 2016-07-29 2016-07-29 스트리밍 서비스를 위한 클라이언트의 동작 방법

Country Status (5)

Country Link
US (1) US20180034883A1 (ko)
EP (1) EP3292697A4 (ko)
KR (1) KR101863598B1 (ko)
CN (1) CN108702542A (ko)
WO (1) WO2018021616A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102654716B1 (ko) * 2019-02-11 2024-04-04 한화비전 주식회사 요청된 영상 재생시점에 따라 영상을 재생하는 방법 및 그 장치
US20220408135A1 (en) * 2019-10-01 2022-12-22 Streamonkey Gmbh Server-Side Adaptive Media Streaming
CN111093110B (zh) * 2019-12-03 2021-02-12 华为技术有限公司 一种http请求传输方法及设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002215516A (ja) 2001-01-22 2002-08-02 Sony Corp 情報端末装置、ダウンロード制御方法およびコンピュータプログラム
WO2012033319A2 (ko) * 2010-09-06 2012-03-15 한국전자통신연구원 스트리밍 컨텐츠 제공 장치 및 방법
WO2012060581A2 (ko) * 2010-11-02 2012-05-10 엘지전자 주식회사 미디어 콘텐트 송수신 방법 및 그를 이용한 송수신 장치

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101019634B1 (ko) * 2008-09-04 2011-03-07 에스케이 텔레콤주식회사 미디어 전송 시스템 및 방법
US9917874B2 (en) * 2009-09-22 2018-03-13 Qualcomm Incorporated Enhanced block-request streaming using block partitioning or request controls for improved client-side handling
AU2010314582B2 (en) * 2009-11-09 2015-03-12 Snaptrack, Inc. Method, system and network equipment for implementing HTTP-based streaming media service
US9185439B2 (en) * 2010-07-15 2015-11-10 Qualcomm Incorporated Signaling data for multiplexing video components
US9131033B2 (en) * 2010-07-20 2015-09-08 Qualcomm Incoporated Providing sequence data sets for streaming video data
US9026671B2 (en) * 2011-04-05 2015-05-05 Qualcomm Incorporated IP broadcast streaming services distribution using file delivery methods
US8849950B2 (en) * 2011-04-07 2014-09-30 Qualcomm Incorporated Network streaming of video data using byte range requests
US9357275B2 (en) * 2011-09-06 2016-05-31 Qualcomm Incorporated Network streaming of coded video data
EP2908535A4 (en) * 2012-10-09 2016-07-06 Sharp Kk Content transfer device, content playback device, content distribution system, method for controlling a content transfer device, method for controlling a content playback device, control program and recording medium
US9674251B2 (en) * 2013-06-17 2017-06-06 Qualcomm Incorporated Mediating content delivery via one or more services
KR101600469B1 (ko) * 2014-07-16 2016-03-07 김재경 스트리밍 서비스를 위한 클라이언트 및 서버의 동작 방법
US9973345B2 (en) * 2014-09-10 2018-05-15 Qualcomm Incorporated Calculating and signaling segment availability times for segments of media data
KR101700786B1 (ko) * 2015-01-13 2017-02-01 주식회사 위즈메타 동영상 파일의 블록 조합을 위한 사용자 인터페이스 방법
US9854375B2 (en) * 2015-12-01 2017-12-26 Qualcomm Incorporated Selection of coded next generation audio data for transport

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002215516A (ja) 2001-01-22 2002-08-02 Sony Corp 情報端末装置、ダウンロード制御方法およびコンピュータプログラム
WO2012033319A2 (ko) * 2010-09-06 2012-03-15 한국전자통신연구원 스트리밍 컨텐츠 제공 장치 및 방법
WO2012060581A2 (ko) * 2010-11-02 2012-05-10 엘지전자 주식회사 미디어 콘텐트 송수신 방법 및 그를 이용한 송수신 장치

Also Published As

Publication number Publication date
WO2018021616A1 (en) 2018-02-01
KR20180013298A (ko) 2018-02-07
EP3292697A1 (en) 2018-03-14
EP3292697A4 (en) 2018-12-19
CN108702542A (zh) 2018-10-23
US20180034883A1 (en) 2018-02-01

Similar Documents

Publication Publication Date Title
KR101600469B1 (ko) 스트리밍 서비스를 위한 클라이언트 및 서버의 동작 방법
JP6404505B2 (ja) メディアコンテンツをクライアントデバイスにストリーミングするための方法および装置
TWI643502B (zh) 內容重製系統、內容重製裝置、程式、內容重製方法、及提供內容伺服器
EP2499783B1 (en) Method and apparatus for providing trick play service
US20150256600A1 (en) Systems and methods for media format substitution
WO2013008867A1 (ja) 送信装置、送信装置の制御方法、制御プログラム、及び記録媒体
US20140086445A1 (en) Watermarking of digital video
CA2870059A1 (en) Methods and systems for real-time transmuxing of streaming media content
US9680901B2 (en) Method, apparatus and non-transitory computer medium for encoding data of a media file
CN109587514B (zh) 一种视频播放方法、介质和相关装置
US10003626B2 (en) Adaptive real-time transcoding method and streaming server therefor
KR20200109359A (ko) 비디오 스트리밍
US20160212054A1 (en) Multiple Protocol Media Streaming
US20220329641A1 (en) Segment Ladder Transitioning In Adaptive Streaming
KR101863598B1 (ko) 스트리밍 서비스를 위한 클라이언트의 동작 방법
US9294821B2 (en) Scrubbing noise remover and methods for use therewith
US11706275B2 (en) Media streaming
JP6294527B2 (ja) 送信装置、送信方法、再生装置、及び再生方法
US10547878B2 (en) Hybrid transmission protocol
KR20190048186A (ko) 적응적 스트리밍 서비스를 위한 다중 경로 기반 분할 전송 시스템 및 스트리밍 방법
KR102314373B1 (ko) Http 기반 라이브 스트리밍 방법 및 장치
CN113364728B (zh) 媒体内容接收方法、装置、存储介质和计算机设备
KR20160031467A (ko) 스트리밍 서비스를 위한 클라이언트 및 서버의 동작 방법
KR101933031B1 (ko) 콘텐츠 재생 제어 장치
Alnesjö Chunked DASH in JavaScript

Legal Events

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