KR20120010089A - Http 기반의 멀티미디어 스트리밍 서비스의 품질 향상을 위한 방법 및 장치 - Google Patents

Http 기반의 멀티미디어 스트리밍 서비스의 품질 향상을 위한 방법 및 장치 Download PDF

Info

Publication number
KR20120010089A
KR20120010089A KR1020110007075A KR20110007075A KR20120010089A KR 20120010089 A KR20120010089 A KR 20120010089A KR 1020110007075 A KR1020110007075 A KR 1020110007075A KR 20110007075 A KR20110007075 A KR 20110007075A KR 20120010089 A KR20120010089 A KR 20120010089A
Authority
KR
South Korea
Prior art keywords
media
client
level
http
sidx
Prior art date
Application number
KR1020110007075A
Other languages
English (en)
Inventor
박경모
서덕영
이용헌
송재연
Original Assignee
삼성전자주식회사
경희대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사, 경희대학교 산학협력단 filed Critical 삼성전자주식회사
Priority to KR1020110007236A priority Critical patent/KR101735435B1/ko
Priority to US13/187,113 priority patent/US8694669B2/en
Priority to EP11809873.0A priority patent/EP2596615A4/en
Priority to PCT/KR2011/005362 priority patent/WO2012011746A2/en
Publication of KR20120010089A publication Critical patent/KR20120010089A/ko
Priority to US14/219,672 priority patent/US9503492B2/en
Priority to US15/357,637 priority patent/US10084831B2/en
Priority to US16/137,090 priority patent/US10567452B2/en

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
    • 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
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2416Real-time traffic
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/30Flow control; Congestion control in combination with information about buffer occupancy at either end or at transit nodes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/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/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • H04N21/234327Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements by decomposing into layers, e.g. base layer and one or more enhancement layers
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/65Transmission of management data between client and server
    • H04N21/658Transmission by the client directed to the server
    • H04N21/6587Control parameters, e.g. trick play commands, viewpoint selection
    • 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/83Generation or processing of protective or descriptive data associated with content; Content structuring
    • H04N21/845Structuring of content, e.g. decomposing content into time segments
    • H04N21/8456Structuring of content, e.g. decomposing content into time segments by decomposing the content in the time domain, e.g. in time segments
    • 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]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]

Abstract

본 발명은 HTTP 기반 미디어 스트리밍 서비스의 품질 향상을 위한 방법 및 장치에 관한 것이다. 본 발명에 따르면 클라이언트 측 버퍼의 상황 및 네트워크의 상황을 고려하여 서버, 클라이언트, 또는 프록시에서 타임아웃을 설정하고, 기준 시간 이내에 전송되는 데이터만을 처리하도록 하여 네트워크 상황이 좋지 않은 사용자의 종단 간 전송 지연을 줄인다. 또한 거짓 ACK(ACK spoofing)을 이용하여 무선 채널에서 손실이 나더라도 저속시작(slow start)이 일어나지 않도록 하여 전송지연을 감소시키고 가용한 비트율을 효율적으로 이용할 수 있도록 한다. 또한 프리뷰 채널 또는 세그먼트를 이용하여 초기에 저속 시작시에는 품질이 낮은 것부터 시작하도록 하여 초기 버퍼링 지연 및 채널변경지연시간을 줄인다.

Description

HTTP 기반의 멀티미디어 스트리밍 서비스의 품질 향상을 위한 방법 및 장치{METHOD AND APPARATUS FOR IMPROVING QUALITY OF MULTIMEDIA STREAMING SERVICE BASED ON HYPERTEXT TRANSFER PROTOCOL}
본 발명은 HTTP(Hypertext Transfer Protocol)와 TCP(Transmission Control Protocol) 기반의 멀티미디어 서비스에 관한 것으로, 특히 HTTP와 TCP 기반의 멀티미디어 서비스에서 서비스 품질을 보장하는 장치 및 방법에 관한 것이다.
HTTP 기반 멀티미디어 서비스는 클라이언트의 콘텐츠 요청(GET)과 그에 대한 서버의 응답(Response)을 통해 데이터 송수신이 이루어진다. 최초 클라이언트의 접속 시 서버에서는 서비스 제공 가능한 콘텐츠 목록 및 각 콘텐츠에 대한 미디어 기술자 파일(Manifest file)을 전송한다. 미디어 기술자 파일에는 미디어의 종류, 평균 비트율, 일정 시간 단위로 분할된 콘텐츠 조각의 URI (Uniform Resource Identifier) 또는 URL (Uniform Resource Locator) 등과 같이 해당 콘텐츠를 서비스받기 위해 필요한 정보들이 기술되어 있다. 미디어 기술자 파일을 토대로 클라이언트는 자신에게 필요한 콘텐츠를 반복적으로 요청한다.
클라이언트의 단말 및 네트워크 상황은 모두 다르기 때문에 서버에서는 다양한 단말, 다양한 네트워크에 속한 클라이언트의 서비스 요구를 만족시키기 위해 동일한 콘텐츠에 대해 각기 다른 품질을 갖도록 부호화된 스트림을 가질 수 있다. 그러므로 클라이언트는 자신의 단말 상황 또는 네트워크 상황에 적합한 품질의 스트림을 서버에 요청함으로써 끊김 없는 서비스를 제공받을 수 있다.
미디어 기술자 파일은 일정한 시간 단위로 미디어 스트림을 구분한다. 그러므로 클라이언트에서는 매 요청시간마다 동 시각 범위의 스트림 조각 중 자신의 상황에 가장 적합한 하나를 선택하여 서버로 요청 메시지(HTTP GET)를 전송한다. 클라이언트의 요청에 대하여 서버에서는 해당 스트림 조각을 응답 메시지 헤더(상태 코드 200 OK)와 함께 전송한다.
서버에서 전송하는 응답 메시지의 크기가 클 경우, 하나 이상의 TCP 패킷으로 구분되어 전송된다. 모든 구분된 TCP 패킷이 정상적으로 클라이언트에 수신되면 원래의 HTTP 응답 메시지 형태로 재구성하여 HTTP 미디어 스트리밍 클라이언트에 전달된다.
TCP에서는 데이터 송신 및 수신 과정의 신뢰성 보장을 위해 ARQ (Automatic Repeat Request) 방법을 사용한다. ARQ는 수신자로부터 수신된 데이터에 오류가 발견됨을 알리는 응답 메시지(NACK)를 수신하거나 또는 정해진 시간 안에 수신자로부터 어떠한 응답 메시지도 수신하지 못한 경우 해당 데이터를 자동 재전송하는 방법이다. 그러므로 HTTP나 FTP (File Transfer Protocol)와 같이 TCP를 이용하는 모든 서비스는 전송 신뢰성을 보장할 수 있다.
만일 구분된 TCP 패킷의 일부가 전송도중 손실되거나 에러가 발생하는 경우, 해당 TCP 패킷은 정상 수신될 때까지 재전송 과정을 거치게 된다. 그러므로 HTTP나 FTP와 같이 TCP를 이용하는 모든 서비스는 전송 신뢰성을 보장할 수 있다.
그러나 데이터를 전송하는 과정에서 혼잡이나 간섭으로 인해 TCP 패킷이 손실되거나 에러가 발견되거나 전송 채널 상황이 좋지 않아 TCP 계층에서 잦은 재전송이 일어나는 경우에 종단 대 종단 간의 전송 지연이 크다.
또한 네트워크의 상황이 좋지 않고 HTTP 계층에서 전송하고자 하는 데이터의 크기가 클 경우, 종단 대 종단간 전송 지연은 더욱더 커진다. 따라서 멀티미디어와 같이 전송 지연에 민감한 서비스에서는 종단 대 종단 지연이 커질 경우 서비스 품질을 보장할 수 없다.
도 1은 이러한 HTTP 계층의 데이터 송수신 과정(상단)과 TCP 계층의 전송 과정(하단)을 도시한 것이다.
도 1의 상단은 HTTP 계층에서 클라이언트의 요청에 대한 서버의 응답 과정을 나타낸 것이다. 클라이언트에서는 서버로부터 전송된 응답 메시지(상태 코드 200 OK)를 완전히 수신한 뒤, 사용 가능하다.
도 1의 하단은 서버로부터 전송된 응답 메시지가 TCP 계층에서 서버로부터 클라이언트로 분할 전송되는 과정을 나타낸 것이다. 전송 과정에서 에러 및 손실이 발생되는 경우 재전송을 수행하며, 분할된 모든 TCP 패킷이 전송될 때까지 반복하므로 전송 지연이 발생한다. 또한 손실이 발생하면 전송률이 크게 떨어지므로 전송이 지연된다.
또한 기존의 HTTP 기반의 미디어 스트리밍 서비스는 일정한 시간 단위로 스트림을 구분하고, 클라이언트의 요청에 따라 해당 스트림을 전달하므로 초기 버퍼링에 의한 지연을 감소시키는 데 한계가 있다.
또한 TCP에서는 흐름 제어(flow control)를 위해 저속 시작(slow start) 방법을 사용한다. 이 방법은 조금씩 비트 율을 늘려가는 방식으로 전송하다가 손실이 생기면 다시 비트 율을 크게 떨어뜨리고 다시 저속시작을 하는 것이다. 그러나 이 방식 또한 손실이 많은 무선통신에서는 가용한 비트 율을 충분히 사용할 수 없게 하여 시스템의 효율을 크게 떨어뜨린다.
본 발명은 HTTP 기반 멀티미디어 서비스에서 종단 대 종단 간 전송 지연 문제로 인해 서비스 품질이 떨어지는 문제를 해결하고자 한다.
또한 본 발명은 HTTP와 TCP를 이용하는 멀티미디어 스트리밍 서비스에서 발생할 수 있는 전송 지연 및 비효율적인 자원 활용 상황을 해결하고자 한다.
또한 본 발명은 HTTP기반 멀티미디어 서비스에서 발생할 수 있는 전송지연을 감소시키고 가용한 비트 율을 충분히 활용하게 하기 위한 방법을 제안함으로써 서비스 품질을 보장하고자 한다.
본 발명의 실시 예에 따르면, HTTP 기반의 멀티미디어 스트리밍 서비스의 품질을 향상시키는 방법에 있어서, 미디어 기술자 파일에 미디어의 우선 순위 정보와 범위 정보를 기록하고, NAL 유닛 헤더의 우선 순위 정보를 상기 미디어 기술자 파일에 기록하고, 상기 미디어의 우선순위에 따라 데이터를 재구성하고, 상기 재구성된 스트림의 범위 정보를 상기 미디어 기술자 파일에 기록한다. 상기 미디어 기술자 파일을 부분 전송이 가능하도록 작성하여 사용자에게 프리뷰 화면을 보여주며, 상기 부분 전송이 가능하도록 작성된 미디어 기술자 파일을 이용하여 단일 미디어 스트림 조각에 대해 분할된 송수신을 수행한다.
또한 본 발명의 실시 예에 따르면, HTTP 기반의 멀티미디어 스트리밍 서비스의 품질 향상을 위한 방법에 있어서, 클라이언트에서 서버로 데이터를 요청하고 타임아웃을 위한 타이머를 동작시키는 과정과, 상기 요청에 대한 응답 메시지가 도착하기 이전에 상기 타이머가 만료되면, 이후의 동작을 수행하는 과정을 포함한다. 상기 타임아웃을 위한 타이머는 상기 클라이언트의 버퍼 상태를 기준으로 설정되고, 상기 클라이언트의 버퍼 생성 재전송으로 인한 지연에 따라 상기 클라이언트 버퍼 크기를 결정한다.
이하에서 개시되는 발명 중 대표적인 것에 의해 얻어지는 효과를 간단히 설명하면 다음과 같다.
본 발명은, 타임 아웃(timeout) 방식을 이용하여 전송을 중단함으로써 전송지연을 크게 줄일 수 있다. 또한 무선채널에서 페이딩에 의한 패킷 손실 시에는 거짓 ACK를 전송하여 비트 율을 충분하게 활용할 수 있다. 또한 프리뷰 방식을 이용하여 저속시작 환경에서 첫 화면이 빨리 뜨게 함으로써 초기 버퍼링 지연과 채널 변경 지연 시간을 크게 줄일 수 있다. 이로써 사용자는 가용한 무선자원을 충분히 활용하면서 좀더 쾌적하게 HTTP 스트리밍 서비스를 즐길 수 있다.
도 1은 HTTP 계층의 데이터 송수신 과정(상단)과 TCP 계층의 전송 과정(하단)을 도시한 도면;
도 2는 MPEG-4/AVC NAL 헤더 구조를 도시한 도면;
도 3은 클라이언트 Timeout 기반의 송신 및 수신 과정의 예를 도시한 도면;
도 4는 클라이언트 Timeout 과 HTTP 부분 전송을 이용하는 송신 및 수신 과정의 예를 도시한 도면;
도 5는 클라이언트 버퍼 모델의 예를 도시한 도면;
도 6은 전송지연이 발생하는 예를 도시한 도면;
도 7은 응용 계층 버퍼와 초기 지연을 도시한 도면;
도 8은 정상 버퍼 상태 도달 목표치 수정을 통한 버퍼링 지연 감소 방법을 도시한 도면;
도 9는 인트라 프레임 기반 버퍼링 지연 감소 방법의 예를 도시한 도면;
도 10은 본 발명의 실시 예에 따른 MPEG 및 3GPP HTTP 스트리밍의 미디어 인덱스 구조의 일 예를 보이고 있는 도면;
도 11은 본 발명의 실시 예에 따른 segment 구조의 일 예를 보이고 있는 도면;
도 12는 본 발명의 실시 예에 따른 sample들의 배치에 의한 스트림 구조를 보이고 있는 도면.
이하 첨부된 도면을 참조하여 본 발명의 실시 예에 대한 동작 원리를 상세히 설명한다. 하기에서 본 발명을 설명함에 있어 관련된 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다. 그리고 후술 되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
본 발명에서는 HTTP 기반 멀티미디어 스트리밍 서비스에서 서비스 품질을 보장하기 위해 전송 지연을 줄이는 방법으로 다음 세 가지 방식을 제안한다.
첫째, 타임아웃 (Timeout) 기반의 데이터 송신 및 수신 기술을 제안한다. 멀티미디어 서비스는 지연에 민감하므로 신뢰성 보장을 위해 반복된 재전송을 수행하는 방법이 오히려 서비스 품질을 떨어뜨리게 된다. 따라서 본 발명에서는 클라이언트 측 버퍼의 상황 및 네트워크의 상황을 고려하여 서버, 클라이언트, 또는 프록시에서 Timeout을 설정하고, 기준 시간 이내에 전송되는 데이터만을 처리하도록 하여 네트워크 상황이 좋지 않은 사용자의 종단 간 전송 지연을 줄인다. 그러므로 부분 전송과 Timeout을 활용하는 경우, 전송 지연 감소, 채널 전환 및 랜덤 액세스에 따른 최초 화면 표시 지연 (Initial Presentation delay, Zapping delay) 감소 및 세분화된 서비스 품질 제공 등이 가능하다.
둘째, 거짓 ACK(ACK spoofing)을 이용하여 무선 채널에서 손실이 나더라도 저속시작(slow start)이 일어나지 않도록 하여 전송지연을 감소시키고 가용한 비트 율을 효율적으로 이용할 수 있도록 한다.
셋째, 프리뷰 채널 또는 세그먼트를 이용하여 초기에 저속 시작(slow start) 시에는 품질이 낮은 것부터 시작하도록 하여 초기 버퍼링 지연 및 채널변경 지연시간을 줄인다.
이하에서는 본 발명의 실시 예에 따라 지연시간을 줄이는 방법을 상세하게 설명한다.
HTTP 부분 전송을 위한 미디어 기술자에는 각 미디어 콘텐츠의 우선순위와 각 우선순위별 범위 정보를 담는다. 예를 들어 현재 MPEG (Moving Picture Experts Group)-4/AVC (Advanced Video Coding)로 부호화된 비디오를 서비스한다면, 미디어 기술자에 기록할 때에는 기존의 HTTP 기반 미디어 스트리밍과 같이 주기적인 시간 단위 (예를 들어, 2초)마다 스트림을 구분하고, 구분된 스트림의 주소 정보 등을 미디어 기술자에 기록한다. 그러므로 기존의 기술에서 클라이언트는 오직 미디어 기술자에서 정해진 스트림 시간 간격으로만 서비스를 요청하고 수신받을 수 있다.
본 발명에서는 미디어 기술자 파일에 미디어 우선순위 정보 및 우선 순위 정보를 이용하여 재구성된 스트림의 범위 정보 (스트림 파일 내 오프셋 또는 위치)를 기록하여 다양한 클라이언트의 요구를 만족시키고자 한다.
도 2는 MPEG-4/AVC NAL 헤더 구조를 도시한 것이다.
예를 들어, MPEG-4/AVC의 NAL (Network Abstraction Layer) 패킷 헤더 중 NRI(NAL Reference Index) 필드를 이용하여 같은 NRI 값을 갖도록 스트림을 재구성하고 NRI와 그 범위 정보를 미디어 기술자에 기록한다. 클라이언트에서는 NRI 필드를 이용하여 인트라 프레임으로만 구성된 데이터를 부분 전송 요청 (HTTP Partial GET)함으로써 콘텐츠의 일부 (예를 들어, 프리뷰)를 사용자에게 보여 주는 응용으로 활용할 수 있다.
종래에는 전송 지연 문제를 해결하기 위해 TCP 계층에서의 ACK Spoofing 방식을 사용하였다. 그러나 이는 TCP 프로토콜 수정이 필요하다. 따라서 본 발명에서는 응용 계층에서의 Timeout을 제안한다. 응용 계층의 Timeout은 TCP 계층의 ARQ로 인해 발생할 수 있는 전송 지연을 해결하기 위해 서버, 클라이언트 또는 네트워크상의 프록시에서 활용할 수 있다.
도 3은 클라이언트 Timeout 기반의 송신 및 수신 과정의 예를 도시한 것이다.
도 3에 도시한 바와 같이, HTTP 스트리밍 클라이언트에서는 자신에게 필요한 데이터를 요청(HTTP GET)한 뒤 Timeout 이벤트를 위한 타이머 (또는 카운터)를 동작시킨다. 클라이언트의 요청에 대한 서버의 응답 메시지가 정의된 Timeout 이벤트가 발생하기 전에 도착한다면, 정상 수신된 것으로 처리한다. 그러나 응답 메시지가 도착하기 전에 Timeout 이벤트가 발생 되는 경우, 응답 메시지의 도착 여부와 관계없이 다음 행동을 수행한다.
도 4는 클라이언트 Timeout 과 HTTP 부분 전송을 이용하는 송신 및 수신 과정의 예를 도시한 것이다.
서버 및 프록시 기반의 Timeout 방법은 Timeout여부를 측정을 담당하는 주체가 달라지며, 그 동작 과정은 동일하다. Timeout을 이용하는 방법에서 가장 중요한 것은 Timeout 값을 결정하는 과정이다. 본 발명에서는 클라이언트의 버퍼상태를 기준으로 Timeout을 결정하며 부가적으로 버퍼 상태에 기반하여 클라이언트에서의 콘텐츠 품질 적응을 수행한다. 다음은 클라이언트 버퍼 모델의 예시이다.
또한 상기에서 기술한 바와 같이, 위의 방식을 활용하기 위한 파일 구조로 전송 가능한 미디어 데이터 파일의 일정 주기 혹은 범위를 파일 서술자에 명시하도록 하고, 이를 서버 또는 클라이언트가 정보를 수신받아 이를 바탕으로 서버 혹은 클라이언트가 명시된 주기 및 범위를 참고하여 부분적인 전송 및 단위 구조 전송 방식을 활용하여 콘텐츠 품질 적응을 수행할 수 있도록 한다.
도 5는 클라이언트 버퍼 모델의 예를 도시한 것이다.
클라이언트의 버퍼는 크게 세 부분으로 나눌 수 있다. 먼저 정상적으로(Timeout 시간 내에) 도착한 데이터를 입력받는 부분, 버퍼에 저장된 데이터를 복호하기 위해 데이터를 출력하는 부분, 마지막으로 현재 버퍼 레벨에 따라 서비스 품질 적응을 수행하며, Timeout을 결정하는 버퍼 제어 부분이 존재한다.
입력부는 클라이언트의 서비스 요청 및 네트워크 상황에 따라 데이터의 입력률이 결정된다. 출력부는 현재 출력되는 콘텐츠의 품질에 따라 결정된다. 버퍼 제어부는 먼저 버퍼의 크기를 결정한다. 버퍼의 크기는 서비스 콘텐츠에서 요구되는 버퍼, 네트워크 지연으로 인해 필요한 버퍼 그리고 유/무선 구간에서의 재전송으로 발생되는 지연에 대처하기 위한 재전송 버퍼의 세 가지 버퍼 요구량을 합쳐서 전체 클라이언트 버퍼의 크기를 결정한다.
다음은 버퍼의 레벨을 이용한 서비스 품질 결정 방법에 대해 설명한다. 도 5에서 버퍼의 내부에 존재하는 두 개의 결정 포인트(Decision point) 또는 레벨과 현재의 버퍼 길이를 비교하여 다음 서비스의 품질 레벨 및 Timeout 시간을 조정한다. 예를 들어 버퍼 제어부는 다음과 같이 동작할 수 있다.
버퍼에 쌓인 데이터의 크기(Buffer length)가 상단의 Decision point 보다 큰 경우, 버퍼 오버 플로우 발생이 예상되므로, Timeout을 크게 하여 전송 신뢰성을 높이며, 다음 세그먼트에 대한 요청 전에 시간 간격을 둔다. 또한 버퍼에 쌓인 데이터의 크기(Buffer length)가 하단의 Decision point 보다 작은 경우, 버퍼 언더 플로우 발생이 예상되므로, 서비스 레벨을 낮추고, Timeout을 작게 한다.
Decision point와 현재 버퍼의 길이만을 이용하여 서비스 레벨 및 Timeout 값을 결정하는 경우, 잦은 변화로 인해 사용자가 느끼는 품질은 더 낮아질 수 있으므로 카운터 등을 도입하여 빈번한 서비스 레벨의 변화 및 Timeout 변화를 줄일 수 있다. 그리고 Timeout으로 인해 일부의 데이터가 손실될 수 있으므로, 채널 코딩 방법을 통해 손실된 데이터를 복원할 수 있다.
1) 일부 수신 허용 방식에 의한 성능 향상 방식
원래 k개의 심볼로 이루어진 세그먼트를 전송함에 있어서 k-n개의 패리티 심볼을 추가하여 n개 심볼의 전송을 시도한다. n개의 심볼 중에 어느 것이나 k개만 수신하면 위의 timeout 방식을 이용하여 전송을 중단한다. 이로써 전송에 걸리는 시간을 줄일 수 있다. 즉, k개를 전송하여 k개 모두를 수신하는 것보다, k보다 큰 n개를 전송하여 k개만 수신한 후 전송을 중단함으로써 전송에 걸리는 시간을 줄인다. 이때 n-k개의 패리티 심볼의 생성을 위해 RS부호(Reed Solomon code)를 이용하였으면 k개의 수신으로 복원이 보장되지만, Raptor code를 이용하면 k보다 몇 개 더 수신하여야 완전 복원의 확률이 높아진다. RS 부호를 이용할 때에는 수신되는 심볼 수를 수시로 확인하여 k개가 수신되면 timeout을 한다. Raptor code를 이용하는 경우에는 Raptor decoding을 동시에 수행하여 디코딩이 완료되면 timeout을 하는 방식을 이용하면 더욱 효율적이다.
2) 거짓 ACK (ACK spoofing)에 의한 성능 향상 방식
기존의 TCP에서는 흐름 제어(flow control)를 위해 도 6의 (b)와 같이 저속시작(slow start) 방식을 이용한다. 즉, 조금씩 비트율을 늘려가는 것이다. 또한 흐름 제어와 혼잡 제어(congestion)를 위해 손실이 발생하면 바로 비트율을 크게 떨어뜨리고 다시 저속시작을 한다. 이 같은 것이 반복되면 (b)와 같은 형태의 비트율이 되어 가용한 비트율을 충분히 사용할 수 없게 되어 전송 지연이 발생한다. 특히, 무선통신에서는 채널에서 페이딩에 의한 비트에러 또는 충돌(collision)에 의해 패킷이 손실되므로 이로 인하여 충분하게 비트율이 올라가지 않은 상태에서 저속 시작을 하게 되어 더욱 전송 지연이 심하게 발생한다. 따라서, 본 발명에서는 채널에서 페이딩이나 충돌에 의해 패킷이 손실된 경우에는 제대로 받았다고 거짓 ACK를 전송함으로써 저속시작의 회수를 줄인다. 위에서 설명한 '일부 수신 방식'을 이용하면 일부만 수신하여도 되므로 거짓 ACK을 이용하여 비트 율을 충분히 활용하면서도 원하는 세그먼트를 완전하게 받을 수 있다.
3) 프리뷰 방식을 활용한 성능 향상 방식
본 발명에 따르면 HTTP 기반 멀티미디어 스트리밍에서 초기 지연(Initial delay) 및 채널 변경 지연 (Zapping delay)과 같이 버퍼에 의해 발생하는 지연을 감소시킬 수 있다.
버퍼에 의한 초기 지연은 디지터링 (de-jittering)과 디인터리빙 (de-interleaving) 등을 고려하여 결정된다. VOD (Video-On-Demand)의 경우 통상적으로 5~10초 걸린다. 버퍼링 지연 이후에는 정상 버퍼 상태 (steady buffer state)가 유지되어, 더 이상 인터럽트 없이 재생된다 (interrupt-free playback). 디지터링 지연은 단 대 단 경로의 전송률의 변화와 콘텐츠가 요구하는 비트율의 가변성에 의해서 결정된다.
만일 디지터링과 디인터리빙에 의한 지연을 TD라고 하고, 미디어 스트림의 최고 전송률을 Rmax라고 할 때, 초기 버퍼링 양은 Bmax = Rmax*TD라고 할 수 있다. 즉, 수신자 버퍼에 Bmax = Rmax*TD만큼 데이터가 저장되면, 클라이언트에서 플레이가 시작될 수 있다. 시그널링 지연은 줄일 수 없지만 버퍼링 지연은 다음 방법으로 줄일 수 있다.
첫째, Rmax를 줄여서 버퍼링 지연을 줄일 수 있다. 다시 말해 버퍼의 정상 버퍼 상태 목표치를 내리는 것을 의미한다. 도 8은 정상 버퍼 상태 도달 목표치 수정을 통한 버퍼링 지연 감소 방법을 도시한 것이다.
예를 들어, 계층부호화 인코딩하여, 비디오 스트림을 최대 비트율 rmax(<Rmax)인 기본계층 스트림과 고급계층 스트림으로 나누어 저장하고, 초기에는 bmax = rmax*TD에 도달할 때까지는 기본계층만 전송한다면 버퍼링 지연을 줄일 수 있다. 보통 10rmax=Rmax이므로 이 방법으로 버퍼링 지연이 대략 1/10로 감소한다. Bmax까지 버퍼링이 이루어지면 정상적인 품질로 비디오를 재생한다. 이러한 방법은 계층 부호화 및 일반적인 부호화 방법에서도 적용 가능하다. 그러나 네트워크 상황이 좋지 않을 경우, 비효율적이다.
둘째, 정상 버퍼 상태 (steady buffer state)에 도달하지 않았더라도, 플레이 할 수 있는 정보만 도착하면 바로 플레이를 시작한다면 초기 화면이 뜨는 데까지 시간을 줄일 수 있다.
도 9는 인트라 프레임 기반 버퍼링 지연 감소 방법의 예를 도시한 것이다.
도 9와 같이, 인트라 (Intra) 프레임이 하나라도 도착하면 바로 플레이를 시작하여 초기화면이 뜰 때까지의 시간을 줄일 수 있다. 그러므로 본 발명에서 제안하는 우선순위 정보가 기록된 미디어 기술자 파일과 HTTP 부분 전송을 이용할 경우, 초기 버퍼링 지연을 감소시킬 수 있다.
만일 기본계층의 GOP 주기가 TD의 1/10이라면 이 방법으로 버퍼링 지연을 1/10 줄일 수 있다. 기본계층은 인트라 주기를 고급계층의 인트라 주기보다 작도록 인코딩한다면 도움이 될 것이다. 기본계층의 첫 화면은 사용자에게 이 채널에서 무엇이 방송되고 있는지 충분히 알려줄 수 있다. 이때 기본계층의 인트라 프레임이 도착했음을 시스템에 알려줄 수 있는 마커가 필요하다.
본 발명에서 제안하는 두 가지 방법은 처음 콘텐츠를 시작하는 경우와 채널을 변경하였을 때, 모두 적용할 수 있다. 이 방법을 사용하면 현재 5~10초 정도인 초기 지연 (initial delay) 및 채널 변경 지연 (zapping delay)를 약 200ms 이내로 줄일 수 있다.
이하 본 발명의 실시 예의 활용 예에 대해 설명한다.
본 발명의 실시 예는 현재 MPEG-DASH 및 3GPP에서 표준화 중인 HTTP 스트리밍에 활용될 수 있다. MPEG-DASH 및 3GPP에서는 HTTP 스트리밍을 위해 Media Presentation Description (MPD) 미디어 기술자를 정의하고 있다. HTTP 스트리밍 클라이언트 (Streaming client)는 미디어 콘텐츠에 대한 MPD를 통해 하나 이상의 Period, Representation 그리고 Segment의 관계를 도 10에서 보이고 있는 바와 같이 인덱스 (index) 할 수 있다.
본 발명의 실시 예에서 제안하는 추가적인 미디어 기술자는 MPD의 SegmentInfo에 하기 <표 1>과 같은 확장이 가능하다.
Figure pat00001
이를 통해 본 발명의 실시 예에 의하면, 아래에서 제안하는 각 user-case에 대해 효과적인 동작이 가능하다.
(Case 1) "Peter watched a football game of his favorite team. The goal in the 64 th minute made him so excited that he wants to watch it over and over again. He finds a recording of the game on the homepage of his local TV station and requests the segment containing the goal"
일반적으로 미디어 표현 서술 (Media Presentation Description)과 세그먼트 색인 상자에 있는 색인 정보는 피터의 DASH 클라이언트를 64 분에 일치하는 세그먼트 내의 세그먼트와 무비 Fragment(s)를 확인하는 것이 가능하게 한다. 상기 Fragment(s)는 호쾌한 골의 재연을 제공하는 HTTP 부분 요구를 사용하여 직접 요구될 수 있었다.
하지만 본 발명의 실시 예에 의하면, 하기의 두 가지 방안에 의한 동작이 가능하다.
먼저 현재 WD에서 Peter가 시청을 원하는 64th minute의 Movie Fragment(s)에 접근하기 위해서는 아래와 같은 과정이 필요하다.
MPD의 SegmentInfo를 통해 원하는 Movie Fragment(s)에 가장 근접한 세그먼트를 인덱스하고, 이때 세그먼트 내에서 원하는 시간의 Movie Fragment(s)를 인덱스하기 위해 sidx(s)의 전송을 요청한다.
상기 sidx(s)의 전송을 요청할 시에 Single sidx로 구성된 세그먼트인 경우, sidx 크기 정보 (size information) 없이 1회의 HTTP Partial request를 수행한다. 그렇지 않고 Multiple sidxs로 구성된 세그먼트인 경우에는 sidx 크기 정보 (size information) 없이 2회 이상의 HTTP Partial request를 수행한다.
그 후 다운-로드된 sidx(s)를 통해 원하는 Movie Fragment(s)를 요청하게 된다.
다음으로 본 발명에서 제안하는 MPD extension(range with type="sidx(s)")을 이용하는 경우에는 아래와 같은 과정이 필요하다.
MPD의 SegmentInfo를 통해 원하는 Movie Fragment(s)에 가장 근접한 segment를 인덱스하고, 이때 세그먼트 내에서 원하는 시간의 Movie Fragment(s)를 인덱스하기 위해 sidx(s)의 전송을 요청한다.
상기 sidx(s)의 전송을 요청할 시에 Single sidx로 구성된 세그먼트인 경우, sidx 크기 정보 (size information)와 함께 1회의 HTTP Partial request를 수행한다. 그렇지 않고 Multiple sidxs로 구성된 세그먼트인 경우에는 sidx 크기 정보 (size information)와 함께 1회의 HTTP Partial request를 수행한다.
그 후 다운-로드된 sidx(s)를 통해 원하는 Movie Fragment(s)를 요청하게 된다.
상술한 바와 같이 본 발명의 실시 예서 제안하는 MPD extension을 이용하는 경우, 사용자가 원하는 Movie Fragment(s)를 요청하기 위해 필요한 server-client 간의 interaction을 감소시킬 수 있으며, sidx(s)의 크기 정보 (size information)가 존재하므로 정확한 크기의 HTTP Partial request가 가능하다.
(Case 2) "Paul can't go to a concert of his favorite band, but finds out, that there will be a live stream of it on the bands homepage. He starts watching, but later on a friend of him comes by and wants to see it too. Paul stops the stream and they watch it from beginning to end."
일반적으로 라이브 스트림을 위한 미디어 표현 서술 (Media Presentation Description)는 미디어를 포함하는 세그먼트의 순서를 기술한다. 상기 세그먼트는 동일한 URL에 유효하게 남아 있다. 미디어 표현 서술 (Media Presentation Description)의 timeShiftBufferDepth 분야는 해당 세그먼트가 유효 (이 경우에는 불명확하게)하게 남아 있는 타임 윈도우를 나타낸다. 폴의 DASH 클라이언트는 Presentation의 시작에 상응하는 세그먼트를 언제나 쉽게 요구할 수 있고, 그로 인하여 Presentation 을 처음부터 재생할 수 있다.
하지만 본 발명의 실시 예에 의하면, MPD의 SegmentInfo를 통해 원하는 Movie Fragment(s)에 가장 근접한 segment를 인덱스하고, 이때 세그먼트 내에서 원하는 시간의 Movie Fragment(s)를 인덱스하기 위해 sidx(s)의 전송을 요청한다.
상기 sidx(s)의 전송을 요청할 시에 Single sidx로 구성된 세그먼트인 경우, sidx 크기 정보 (size information) 없이 1회의 HTTP Partial request를 수행한다. 그렇지 않고 Multiple sidxs로 구성된 세그먼트인 경우에는 sidx 크기 정보 (size information) 없이 2회 이상의 HTTP Partial request를 수행한다.
그 후 다운-로드된 sidx(s)를 통해 원하는 Movie Fragment(s)를 요청하게 된다.
(Case 3) "M ary wants to watch a stream of a TV series, but wants to skip the opening credits. She requests the stream starting from minute 3."
일반적으로 미디어 표현 서술 (Media Presentation Description)과 세그먼트 색인 상자에 있는 색인 정보는 메리의 DASH 클라이언트를 3 분에 상응하는 세그먼트 내에서 세그먼트와 Movie Fragment(s)를 확인할 수 있도록 한다. 이때 상기 Fragment(s)는 3 분에 시작되는 재연을 제공하는 HTTP 부분 요구를 사용하여 직접 요구될 수 있다.
하지만 본 발명의 실시 예에 의하면, 하기의 두 가지 방안에 의한 동작이 가능하다.
먼저 현재 WD에서 Peter가 시청을 원하는 64th minute의 Movie Fragment(s)에 접근하기 위해서는 아래와 같은 과정이 필요하다.
MPD의 SegmentInfo를 통해 원하는 Movie Fragment(s)에 가장 근접한 segment를 인덱스하고, 이때 세그먼트 내에서 원하는 시간의 Movie Fragment(s)를 인덱스하기 위해 sidx(s)의 전송을 요청한다.
상기 sidx(s)의 전송을 요청할 시에 Single sidx로 구성된 세그먼트인 경우, sidx 크기 정보 (size information) 없이 1회의 HTTP Partial request를 수행한다. 그렇지 않고 Multiple sidxs로 구성된 세그먼트인 경우에는 sidx 크기 정보 (size information) 없이 2회 이상의 HTTP Partial request를 수행한다.
그 후 다운-로드된 sidx(s)를 통해 원하는 Movie Fragment(s)를 요청하게 된다.
다음으로 본 발명에서 제안하는 MPD extension(range with type="sidx(s)"을 이용하는 경우에는 아래와 같은 과정이 필요하다.
MPD의 SegmentInfo를 통해 원하는 Movie Fragment(s)에 가장 근접한 segment를 인덱스하고, 이때 세그먼트 내에서 원하는 시간의 Movie Fragment(s)를 인덱스하기 위해 sidx(s)의 전송을 요청한다.
상기 sidx(s)의 전송을 요청할 시에 Single sidx로 구성된 세그먼트인 경우, sidx 크기 정보 (size information)와 함께 1회의 HTTP Partial request를 수행한다. 그렇지 않고 Multiple sidxs로 구성된 세그먼트인 경우에는 sidx 크기 정보 (size information)와 함께 1회의 HTTP Partial request를 수행한다.
그 후 다운-로드된 sidx(s)를 통해 원하는 Movie Fragment(s)를 요청하게 된다.
상술한 바와 같이 본 발명의 실시 예서 제안하는 MPD extension을 이용하는 경우, 사용자가 원하는 Movie Fragment(s)를 요청하기 위해 필요한 server-client 간의 interaction을 감소시킬 수 있으며, sidx(s)의 크기 정보 (size information)가 존재하므로 정확한 크기의 HTTP Partial request가 가능하다.
(Case 4) "Peter requests a new movie that was published recently and is not stored in the selected server, the movie file is distributed to the server efficiently to serve for the request."
일반적으로 이것은 서버 또는 CDNs를 캐싱 (caching)하는 HTTP의 동작에 대한 표준 모드에 대응한다. 초기에 선택된 서버는 피터의 네트워크와 잠재적 CDN 로드 밴런싱 알고리즘에 부착 포인트에 의해 결정된다. 피터의 DASH 클라이언트는 무비의 세그먼트를 위한 HTTP 요청을 전송한다. 이들은 그 후에 표준 HTTP cache 절차를 밟고 업-스트림 서버에서 세그먼트를 요구하는 HTTP cache에서 존재하지 않는다. 결국 요구는 세그먼트가 유효하기 위하여 보장되는 오리지널 서버로 도달한다.
이에 반하여 본 발명에서는 오리지널 서버 (Origin server)에서는 사용자의 요청에 대한 빠른 응답을 제공하기 위하여, 사용자의 다운로드 요청 중 중요도가 높거나(e.g. type="0", 사용자로부터의 요청 빈도가 높은 데이터(e.g. type="sidx(s)에 대하여 HTTP 캐싱 서버 (caching server) 또는 CDNs을 선택적으로 활용하도록 함으로써 네트워크 대역폭 (bandwidth) 또는 저장 공간 측면에서 효율성을 높일 수 있다.
(Case 5) "Frank is watching a stream with a mobile device. In the beginning, he is moving a lot causing high network throughput fluctuations. As he finds a cafe, he sits down, enjoys some coffee and watches the rest of the stream in relatively stable network conditions using the cafe,s WLAN ."
일반적으로 전송률은 현재 representation (비트율)에서 계속적인 스트리밍이 부족하거나 고품질 representation에서의 스트리밍이 충분할 때, Frank의 DASH 클라이언트에 의하여 입력 데이터 레이트와 끊임없는 감시를 결심하도록 한다. 이 시점에서는 미디어 표현 서술 (Media Presentation Description)에 있는 색인 정보는 스위칭을 위한 alternative representation의 적당한 세그먼트를 확인하기 위하여 이용된다. 상기 세그먼트의 세그먼트 색인 박스는 현재 representation의 가장 최근에 요구된 데이터의 종료 묘사 시간 (end presentation time) 보다 늦지 않은 랜덤 액세스 포인트의 형식 내에서 스위치 포인트를 확인하기 위해 사용된다. DASH 클라이언트는 새로운 representation에서 데이터를 요구하는 것을 시작하고, 오래된 representation의 미디어를 따르는 끊임없는 playout을 위한 미디어 플레이어에게 제공한다.
Frank가 WLAN 영역에 들어갈 때, DASH 클라이언트는 고품질 representation의 스트리밍을 지원하기 위하여 자료가 충분히 빨리 도착하고 있다는 것을 검출한다. 이때 상기 스위칭 절차는 반복되고, 고품질 representation과 함께 계속하여 presentation한다.
네트워크 throughput fluctuation이 심한 모바일 환경에서 seamless한 서비스를 제공하기 위해서는 throughput 변화에 따른 representation switching이 빠르게 이루어져야 한다. 클라이언트는 MPD를 통해 현재의 throughput 에 적합한 representation와 switching-time에 적합한 segment를 결정할 수 있다. 그러나 해당 segment내에 존재하는 적합한 Random Access Point를 알기 위해서는 sidx(s)를 다운로드 받아야 한다.
따라서 본 발명의 실시 예에서는 segment 내 sidx(s)의 배치에 따라 1회 이상의 HTTP 부분적 요구 (Partial request)가 필요하다.
한편 MPD extension을 활용하는 경우에 있어서, MPD SegmentInfo에 "sidx(s)" type의 레인지를 활용할 경우, 1회의 HTTP 부분적 요구를 통해 세그먼트의 모든 sidx(s)를 다운받을 수 있다.
임시 레벨 (Temporal level) 또는 프레임 타입 (Frame type)에 따라 range(s), type 그리고 duration(s)을 정의한 경우, 가장 높은 우선순위(e.g. type="0" ; I frame)를 갖는 range(s)와 그 구간 (duration(s))을 통해 sidx(s) 없이 스위칭이 가능하다.
Throughput fluctuation이 심한 모바일 네트워크 환경에서 throughput 변화에 빠르게 representation switching을 하기 위해서는 server-client 간의 인터렉션을 줄이는 것과 bandwidth 효율적인 sidx(s) request가 필요하다. 이러한 측면에서 MPD extension을 이용할 경우, sidx(s) 다운로드를 위한 interaction을 줄이거나 우선순위 타입 및 구간 (duration)을 통해 추가적인 인터렉션 (interaction) 없이 MPD만을 통한 representation switching이 가능해 진다.
(Case 6) "Tom has a DASH-ready mobile phone and wants to watch movie content that is available at 3 bit rates. While watching, Tom boards a crowded tram and available bandwidth of the tram goes below those bit rates. Tom can continue to watch the movie."
일반적으로 이번 user-case 내에서 예정된 사용자 경험은 명확하지가 않다. 유효한 대역 폭이 가장 낮은 유효한 비트 레이트의 아래에 남아 있다면, 톰은 다양한 방법으로 playout에서 쉼없이 정상적인 프레임 레이트로 3개의 비트 레이트의 가장 낮은 비트 레이트에 의해 movie를 보는 것을 계속할 수 있다.
이에 반하여 본 발명의 실시 예에 따르면, 가장 작은 대역 폭의 representation보다 클라이언트의 throughput이 작은 네트워크 환경에서, 세스먼트 단위의 HTTP 요구를 하는 경우, 클라이언트는 Buffer-underflow로 인해 재생을 일시 중지하고 버퍼링을 수행한다. 그리고 sidx(s) 정보를 다운로드 받은 경우에는 세그먼트 내에서 독립적인 디코딩이 가능한 movie fragment(s)만을 HTTP 부분적 요청 (Partial request)함으로써 Buffer-underflow로 인한 pause 대신 low frame rate로 재생한다.
한편 본 발명의 다른 실시 예에 따라 MPD extension을 이용하는 경우, 앞에서 살펴본 실시 예와 동일하게 sidx(s) 정보를 이용하여 세그먼트 내에서 독립적인 디코딩이 가능한 movie fragment(s)만을 HTTP 부분적 요청 (Partial request)하고, 이를 재생한다.
MPD SegmentInfo에 hierarchical prediction structure의 임시 레벨 (temporal level)에 따른 우선순위(e.g. type="0,1,...,N"와 레인지 (range)가 존재하는 경우, 우선 순위가 높은 레인지 (range)만을 HTTP 부분적 요청 (Partial request)하고, 이를 재생한다.
그리고 MPD extension에서 레인지 (range)와 "sidx(s)" type을 사용하면, sidx(s)를 모두 수신하는데 필요한 server-client 간의 interaction을 줄일 수 있다.
본 발명에서 제안하는 미디어 우선 순위 정보 및 스트림의 범위 정보는 미디어 파일 포맷에 기술됨으로써 다음과 같이 활용될 수 있다. 일례로 현재 표준화 중인 MPEG-Dynamic Adaptive Streaming over HTTP (DASH) 및 3GPP Adaptive HTTP Streaming (AHS)에서는 각 미디어 스트림을 일정한 단위로 구분 (movie fragment; moof)하고, 하나 이상의 moof를 시간적인 순서에 따라 그룹화 (segment)하여 활용한다. 단일 moof는 다수의 미디어 sample (e.g. 비디오 프레임 또는 MPEG/AVC NAL unit)의 그룹 (e.g. Group of Picture; GOP)으로 구성될 수 있다. 그러므로 단일 segment 내에 존재하는 moof에 대한 인덱스 정보를 제공하기 위하여, DASH에서는 segment index box(sidx)를 활용하고 있다. 도 11에서는 이러한 구조를 도식화하여 나타낸다.
S와 f1,f2,...,f6는 각각 sidx와 moof를 의미한다. 상기 sidx에서는 각 moof box의 파일 내 위치 정보를 나타냄으로써 필요에 따라 특정 moof 단위의 접근이 가능하도록 한다. 하기 <표 2>에서는 sidx box의 syntax의 일 예로써 MPEG-DASH 및 3GPP AHS의 sidx syntax를 나타낸다.
aligned(8) class SegmentIndexBox extends FullBox('sidx', version, 0) {
unsigned int(32) reference_track_ID;
unsigned int(16) track_count;
unsigned int(16) reference_count;
for (i=1; i<= track_count; i++)
{
unsigned int(32) track_ID;
if (version==0)
{
unsigned int(32) decoding_time;
} else
{
unsigned int(64) decoding_time;
}
}
for(i=1; i <= reference_count; i++)
{
bit (1) reference_type;
unsigned int(32) reference_offset;
bit(1) contains_RAP;
unsigned int(31) RAP_delta_time;
}
}
도 11과 같은 segment 구조를 갖는 경우, 각 단일 fragment는 temporal level이 서로 다른 프레임(e.g. I, P, B 프레임)들을 포함한다. 이때 사용자의 요청에 의해 트릭 모드 및 랜덤 액세스 상황이 발생하게 되면, 각 moof 내에서 일부의 sample 그룹만(e.g sub-fragment)을(e.g. I 프레임 그룹) 재생한다. 이를 지원하기 위하여 moof에 속한 sample들 중 일부 그룹에 접근 가능하도록 지원하는 인덱스 정보의 추가가 필요하다.
다음의 두 가지 활용 예는 이를 지원하기 위한 방법을 제시한다.
1. 제1활용 예 ( sidx _extension)
하기 <표 3>은 sidx extension을 통한 방법을 살펴보기 위해 제안될 수 있는
syntax의 일 예를 보이고 있다.
aligned(8) class SegmentIndexBox extends FullBox('sidx', version, 0) {
unsigned int(32) reference_track_ID;
unsigned int(16) track_count;
unsigned int(16) reference_count;
for (i=1; i<= track_count; i++)
{
unsigned int(32) track_ID;
if (version==0)
{
unsigned int(32) decoding_time;
} else
{
unsigned int(64) decoding_time;
}
}
for(i=1; i <= reference_count; i++)
{
bit (1) reference_type;
unsigned int(31) reference_offset;
bit(1) contains_level; //indication flag for level, added
unsigned int(31) subsegment_duration; //reduce one bit for contains_level, modified
bit(1) contains_RAP;
unsigned int(31) RAP_delta_time;

if (contains_level) //added
{
unsigend int(8) assemble_type; //define assemble type, add
unsigned int(16) level_count; //number of level(e.g. temporal id), added
for(i=1; i <= level_count; i++) //added
{
unsigned int(8) level; //level(e.g. temporal id level) define, added
bit(1) reserved_bit; //reserved
unsigned int(31) level_offset; //offest, added
if(assemble_type == 0x01 || assemble_type == 0x03)
{
unsigned int(16) offset_count //define number of samples in level, added
for(j=1; j <= offset_count; j++) //added
{
unsigned int(32) offset; //offset from level_offset, added
unsigend int(32) size; //size of each sample in level, added
}
)
}
}
}
}
상기 <표 3>에서의 변수와 그 의미는 다음과 같이 정리될 수 있다.
contains_level : sub-fragment 단위의 인덱스 정보를 포함하는지 여부를 나타내는 플래그 비트
assemble_type : 각 moof의 미디어 샘플의 배치방법에 대한 구별자
하기의 <표 4>는 assemble_type의 사용 예를 보이고 있다.
assemble_type Definition
0x00 Sample group box(e.g. tele box)
0x01 Assembled by equal temporal_level(e.g. IIPPBB…)
0x02 Stereoscopic plain(e.g. LRLRLR…)
0x03 Assembled by view(e.g. LLLRRR…)
0x04 SVC plain(e.g. BEBEBE…)
0x05 Assembled by equal scalability type(e.g. BBBEEE…)
0x06 ~ Reserved
level_count : moof 내 레벨의 총 수
level : 각 레벨의 정의함. 낮은 숫자일수록 높은 우선순위를 의미함.
level_offset : 각각의 레벨에 대한 위치 정보
offset_count : 각 sample 단위 액세스가 필요한 경우, 이를 지원하기 위한 offset_count
offset : 각 샘플의 위치 정보
size : 샘플별 크기
reserved_bit : 확장을 위한 reserved_bit
바람직한 실시 예로 제안하는 sidx_extension을 통해 사용자는 특정 레벨의 sample 그룹에 직접 접근이 가능해지며 이를 통해 트릭 모드, Picture in Picture (PIP), 네트워크 환경에 따른 rate-adaptation을 보다 효과적으로 지원할 수 있다.
다음의 예제에서는 하나 이상의 우선순위를 포함하는 moof에서(e.g. SVC, Stereoscopic, MVC, etc) 우선순위에 따른 sub-fragment의 인덱스 정보를 제공하기 위한 방법을 보인다.
도 12의 상단에서는 Stereoscopic 영상의 좌, 우 영상에 대한 sample들이 교차 배치된 스트림을 나타낸다. 하단에서는 보다 효과적인 인덱스 및 접근을 위해 시점에 따라 재정렬하고, 이를 다시 Temporal level에 따라 재정렬한 결과를 나타내고 있다.
이와 같이 하나 이상의 레벨을 기술하기 위해서는 상기 <표 3>에서 제안하는 sidx_extension을 통해 시점에 따른 sub-fragment를 인덱싱한 뒤, 추가 확장을 위한 비트(reserved_bit)를 통해 temporal level에 따른 sub-fragment의 인덱스 정보를 제공한다.
1. Sample group index box extension
sample group index box(sgix)는 각 moof 내에서 sample group(sub-fragment)에 대한 인덱스를 제공하기 위해 존재하는 box를 의미한다. 앞선 sidx_extension 방법과 동일하게 각 sample group(sub-fragment)에 대하여 샘플이 구성된 type과 각 그룹에 대한 level 정보를 추가한다.
하기 <표 5>는 Sample group index box에 우선 순위 정보를 추가한 syntax의 일 예를 보이고 있다.
aligned(8) class SampleGroupIndexBox
extends FullBox('sgix', 0, 0) {
unsigned int(32) fragment_count;
unsinged int(16) level_count;
unsigned int(8) fragment_type;
for( i=0; i < fragment_count; i++) {
for ( j=1; j < level_count; j++) {
unsigned int(8) level;
unsigned int(32) offset;
unsigned int(32) size;
}
}
}
fragement _type : 각 sample group(sub-fragment)의 구성 방법을 나타내며, 앞선 sidx_extension에 사용된 assemble_type과 동일하다.
level : 각 sample group(sub-fragment)에 대한 level을 정의한다. 낮은 숫자일수록 높은 우선순위를 의미한다.
2. sidx _extension
하기 <표 6>은 sidx 확장을 통한 방법에 따른 syntax의 일 예를 보이고 있다.

aligned(8) class SegmentIndexBox extends FullBox('sidx', version, 0) {
unsigned int(32) reference_track_ID;
unsigned int(16) track_count;
unsigned int(16) reference_count;
for (i=1; i<= track_count; i++)
{
unsigned int(32) track_ID;
if (version==0)
{
unsigned int(32) decoding_time;
} else
{
unsigned int(64) decoding_time;
}
}
for(i=1; i <= reference_count; i++)
{
bit (1) reference_type;
unsigned int(31) reference_offset;
bit(1) contains_level; //indication flag for level, added
unsigned int(31) subsegment_duration; //reduce one bit for contains_level, modified
bit(1) contains_RAP;
unsigned int(31) RAP_delta_time;

if (contains_level) //added
{
unsigend int(8) assemble_type; //define assemble type, add
unsigned int(16) level_count; //number of level(e.g. temporal id), added
for(i=1; i <= level_count; i++) //added
{
unsigned int(8) level; //level(e.g. temporal id level) define, added
bit(1) reserved_bit; //reserved
unsigned int(31) level_offset; //offest, added
if(assemble_type == 0x01 || assemble_type == 0x03)
{
unsigned int(16) offset_count //define number of samples in level, added
for(j=1; j <= offset_count; j++) //added
{
unsigned int(32) offset; //offset from level_offset, added
unsigend int(32) size; //size of each sample in level, added
}
)
}
}
}
}
상기 <표 6>에서 사용되는 변수와 그 의미는 다음과 같다.
contains_level : sub-fragment 단위의 인덱스 정보를 포함하는지 여부를 나타내는 플래그 비트
assemble_type : 정수형 값을 갖는 변수. 샘플 그룹의 타입을 구분하는 구분자로 활용된다. 여기서 샘플 그룹은 그 특성에 따라 구성될 수 있다. 예를 들어, 크게 비디오와 오디오로 구분 가능하다.
이때 비디오는 목적에 따라 더 세분화된 샘플 그룹의 구성이 가능하다. 예를 들어, 랜덤 엑세스 및 트릭 모드를 지원하기 위해 독립적인 디코딩이 가능한 샘플만으로 샘플 그룹으로 구성할 수 있다. 시간의 확장성 (Temporal scalability)을 지원하는 비디오의 경우, 같은 temporal 레벨의 샘플만으로 샘플 그룹 구성이 가능하다. 스테레오스코픽 (Stereoscopic) 비디오는 시점에 따른 구성이 가능하며, MVC 역시 View id를 통한 구성이 가능하다.
level_count : moof 내 레벨의 총 수
level : 각 레벨의 정의함. 낮은 숫자일수록 높은 우선순위를 의미함. level은 level_count의 의미에 따라 다르게 활용할 수 있다. 만약 level_count의 값이 높거나 낮음에 따라 우선순위를 부여한다면, level은 활용되지 않는다. 그러나 level_count의 순서와 관계없이 level을 부여하고자 하는 경우, level 필드는 의미를 갖는다.
level_offset : 각각의 레벨에 대한 위치 정보
offset_count : 각 sample 단위 액세스가 필요한 경우, 이를 지원하기 위한 offset_count
offset : 각 샘플의 위치 정보
size : 샘플별 크기
reserved_bit : 확장을 위한 reserved_bit
3. Sample group index box extension
sample group index box(sgix)는 각 moof 내에서 sample group(sub-fragment)에 대한 인덱스를 제공하기 위해 존재하는 박스 (box)를 의미한다. 앞선 sidx_extension 방법과 동일하게 각 sample group(sub-fragment)에 대하여 샘플 그룹의 타입과 각 그룹에 대한 레벨 정보, 그리고 크기 (size) 정보를 추가한다.
하기 <표 7>은 샘플 그룹 인덱스 박스 (Sample Group Index Box)에 우선 순위 정보를 추가한 syntax의 일 예를 보이고 있다.

aligned(8) class SampleGroupIndexBox
extends FullBox('sgix', 0, 0) {
unsigned int(32) fragment_count;
unsinged int(16) level_count;
unsigned int(8) fragment_type;
for( i=0; i < fragment_count; i++) {
for ( j=1; j < level_count; j++) {
unsigned int(8) level;
unsigned int(32) SamepleGroupSize;
}
}
}
상기 <표 7>에서 사용되는 변수와 그 의미는 다음과 같다.
fragement _type: 정수형 값을 갖는 변수. 샘플 그룹의 타입을 구분하거나 혹은 샘플 그룹의 진입점을 지칭하는 구분자 등으로 활용된다. 이때 상기 샘플 그룹은 그 목적에 따라 다양하게 구성될 수 있다. 예를 들어 비디오와 오디오와 같이 미디어의 타입으로 구분 가능하다. 보다 세분화하는 경우, 비디오는 목적에 따라 더 작은 단위의 샘플 그룹의 구성이 가능하다. 예를 들어, 랜덤 액세스 및 트릭 모드를 지원하기 위해 독립적인 디코딩이 가능한 샘플들로 샘플 그룹을 구성할 수 있다. 시간의 확장성 (Temporal scalability)을 지원하는 비디오의 경우, 같은 temporal 레벨의 샘플만으로 샘플 그룹 구성이 가능하다. 스테레오스코픽 (Stereoscopic) 비디오는 시점에 따른 구성이 가능하며, MVC 역시 동 시점의 샘플들로 구성이 가능하다. Scalable Video에서 하나 이상의 scalability를 동시에 지원하는 경우, 이를 위한 하나 이상의 샘플 그룹이 동시에 존재할 수 있다. 상기에서 fragment_type을 통해 지칭하는 샘플 그룹은 샘플 그룹의 타입 혹은 샘플 그룹의 진입점으로 서술될 수 있다.
level: 각 레벨의 정의함. 낮은 숫자일수록 높은 우선순위를 의미함. level은 level_count의 의미에 따라 다르게 활용할 수 있다. 만약 level_count 값의 높거나 낮음에 따라 우선순위를 부여한다면, level은 활용되지 않는다. 그러나 level_count의 순서와 관계없이 level을 부여하고자 하는 경우, level 값은 의미를 갖는다. 하기의 <표 8>에서는 level을 활용하지 않는 경우의 syntax를 나타낸다.
SampleGroupSize : 각 샘플 그룹의 크기를 나타낸다. 각 샘플에 대한 크기와 오프셋 정보는 각 샘플 그룹에서 획득할 수 있으므로, 여기에서는 샘플 그룹 단위의 크기만을 제공한다.
하기의 <표 8>은 샘플 그룹 인덱스 박스 (Sample Group Index Box)에 fragment_type만으로 샘플 그룹을 나타내는 경우의 syntax의 일 예를 보이고 있다.

aligned(8) class SampleGroupIndexBox
extends FullBox('sgix', 0, 0) {
unsigned int(32) fragment_count;
unsinged int(16) level_count;
unsigned int(8) fragment_type;
for( i=0; i < fragment_count; i++) {
for ( j=1; j < level_count; j++) {
unsigned int(32) SamepleGroupSize;
}
}
}
본 발명에서 제안하는 기술을 이용하여 Trick and Random Access(TRA)를 지원하는 과정은 아래와 같다.
사용자로부터 요청받은 특정 시점으로 이동, 혹은 배속 재생과정에서, Media Presentation Description(MPD)를 이용하여 해당 시점에 대한 세그먼트 정보를 확인한다. 그리고 해당 세그먼트의 sidx(segment index box)를 이용하여 요청받은 시점에 해당하는 movie fragment정보를 확인하고, 제안하는 SampleGroupIndex box를 이용하여, 해당 movie fragment에서 독립적인 복호가 가능한 샘플에 접근한다.
level의 또 다른 활용 예로는 샘플 그룹 식별자로의 활용이다. 만일 하나 이상의 샘플 그룹을 식별자를 이용하여 관계 지어야 한다면, level을 통해 동일한 값을 부여함으로써 가능하다. 예를 들어 스테레오스코픽 (Stereoscopic) 영상의 좌, 우 시점의 샘플 그룹이 각각 존재하는 경우, 이를 관계짓기 위하여 같은 값을 부여한다. 이와 같은 방법으로 SVC, MVC와 같은 응용에서도 level을 이용하여 샘플 그룹간의 관계를 정의할 수 있다.
level이 활용되지 않는 상황에서 스테레오스코픽 (Stereoscopic) 서비스의 샘플 그룹간 관계를 기술하기 위해 본 발명에서는 추가적인 새로운 box를 도입한다. 예를 들어 스테레오스코픽 (Stereoscopic) 서비스의 TRA를 지원하기 위해 본 발명에서 제안하는 box를 활용하는 경우, 상기 fragment_type과 SampleGroupSize를 통해 해당 box에 접근할 수 있다. 새롭게 정의된 샘플 그룹 box에서는 각 샘플에 접근할 수 있도록 하는 정보를 제공한다. 이를 지원하기 위해서는 각 샘플 그룹들 간의 시간적, 공간적 관계를 dependency_ID와 샘플 그룹 ID를 이용하여 명시할 수 있어야 한다.
이상에서 본 발명의 실시 예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속하는 것이다.

Claims (8)

  1. HTTP 기반의 멀티미디어 스트리밍 서비스의 품질을 향상시키는 방법에 있어서,
    미디어 기술자 파일에 미디어의 우선 순위 정보와 범위 정보를 기록하는 서비스 품질 향상 방법.
  2. 제1항에 있어서,
    NAL 유닛 헤더의 우선 순위 정보를 상기 미디어 기술자 파일에 기록하는 서비스 품질 향상 방법.
  3. 제1항에 있어서,
    상기 미디어의 우선순위에 따라 데이터를 재구성하고, 상기 재구성된 스트림의 범위 정보를 상기 미디어 기술자 파일에 기록하는 서비스 품질 향상 방법.
  4. 제1항에 있어서,
    상기 미디어 기술자 파일을 부분 전송이 가능하도록 작성하여 사용자에게 프리뷰 화면을 보여주는 서비스 품질 향상 방법.
  5. 제4항에 있어서,
    상기 부분 전송이 가능하도록 작성된 미디어 기술자 파일을 이용하여 단일 미디어 스트림 조각에 대해 분할된 송수신을 수행하는 서비스 품질 향상 방법.
  6. HTTP 기반의 멀티미디어 스트리밍 서비스의 품질 향상을 위한 방법에 있어서,
    클라이언트에서 서버로 데이터를 요청하고 타임아웃을 위한 타이머를 동작시키는 과정과,
    상기 요청에 대한 응답 메시지가 도착하기 이전에 상기 타이머가 만료되면, 이후의 동작을 수행하는 과정을 포함하는 서비스 품질 향상 방법.
  7. 제6항에 있어서,
    상기 타임아웃을 위한 타이머는 상기 클라이언트의 버퍼 상태를 기준으로 설정되는 서비스 품질 향상 방법.
  8. 제7항에 있어서,
    상기 클라이언트의 버퍼 생성 재전송으로 인한 지연에 따라 상기 클라이언트 버퍼 크기를 결정하는 서비스 품질 향상 방법.
KR1020110007075A 2010-07-20 2011-01-24 Http 기반의 멀티미디어 스트리밍 서비스의 품질 향상을 위한 방법 및 장치 KR20120010089A (ko)

Priority Applications (7)

Application Number Priority Date Filing Date Title
KR1020110007236A KR101735435B1 (ko) 2010-07-20 2011-01-25 멀티미디어 스트리밍 서비스 제공 방법 및 장치
US13/187,113 US8694669B2 (en) 2010-07-20 2011-07-20 Method and apparatus for improving the quality of multimedia streaming service
EP11809873.0A EP2596615A4 (en) 2010-07-20 2011-07-20 METHOD AND APPARATUS FOR PROVIDING CONTINUOUS MULTIMEDIA BROADCAST SERVICE
PCT/KR2011/005362 WO2012011746A2 (en) 2010-07-20 2011-07-20 Method and apparatus for providing multimedia streaming service
US14/219,672 US9503492B2 (en) 2010-07-20 2014-03-19 Method and apparatus for improving quality of multimedia streaming service
US15/357,637 US10084831B2 (en) 2010-07-20 2016-11-21 Method and apparatus for improving quality of multimedia streaming service
US16/137,090 US10567452B2 (en) 2010-07-20 2018-09-20 Method and apparatus for improving quality of multimedia streaming service

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
KR1020100070194 2010-07-20
KR20100070194 2010-07-20
KR20100080553 2010-08-19
KR1020100080553 2010-08-19
KR20100101121 2010-10-15
KR1020100101121 2010-10-15

Publications (1)

Publication Number Publication Date
KR20120010089A true KR20120010089A (ko) 2012-02-02

Family

ID=45834758

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020110007075A KR20120010089A (ko) 2010-07-20 2011-01-24 Http 기반의 멀티미디어 스트리밍 서비스의 품질 향상을 위한 방법 및 장치
KR1020110007236A KR101735435B1 (ko) 2010-07-20 2011-01-25 멀티미디어 스트리밍 서비스 제공 방법 및 장치

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020110007236A KR101735435B1 (ko) 2010-07-20 2011-01-25 멀티미디어 스트리밍 서비스 제공 방법 및 장치

Country Status (4)

Country Link
US (4) US8694669B2 (ko)
EP (1) EP2596615A4 (ko)
KR (2) KR20120010089A (ko)
WO (1) WO2012011746A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140134676A (ko) * 2012-03-16 2014-11-24 인텔 코포레이션 멀티캐스트 방송 멀티미디어 서비스-어시스티드 콘텐츠 분배

Families Citing this family (89)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7068729B2 (en) 2001-12-21 2006-06-27 Digital Fountain, Inc. Multi-stage code generator and decoder for communication systems
US6307487B1 (en) 1998-09-23 2001-10-23 Digital Fountain, Inc. Information additive code generator and decoder for communication systems
US9240810B2 (en) 2002-06-11 2016-01-19 Digital Fountain, Inc. Systems and processes for decoding chain reaction codes through inactivation
EP2348640B1 (en) 2002-10-05 2020-07-15 QUALCOMM Incorporated Systematic encoding of chain reaction codes
KR101170629B1 (ko) 2003-10-06 2012-08-02 디지털 파운튼, 인크. 단일 송신기 또는 다중 송신기를 갖는 통신 시스템의 에러 정정 다중-스테이지 코드 생성기 및 디코더
EP1743431A4 (en) 2004-05-07 2007-05-02 Digital Fountain Inc SYSTEM FOR DOWNLOADING AND RECORDING AND CONTINUOUS READING OF FILES
CN101686107B (zh) 2006-02-13 2014-08-13 数字方敦股份有限公司 使用可变fec开销和保护周期的流送和缓冲
US9270414B2 (en) 2006-02-21 2016-02-23 Digital Fountain, Inc. Multiple-field based code generator and decoder for communications systems
WO2007134196A2 (en) 2006-05-10 2007-11-22 Digital Fountain, Inc. Code generator and decoder using hybrid codes
US9386064B2 (en) * 2006-06-09 2016-07-05 Qualcomm Incorporated Enhanced block-request streaming using URL templates and construction rules
US20100211690A1 (en) * 2009-02-13 2010-08-19 Digital Fountain, Inc. Block partitioning for a data stream
US9380096B2 (en) 2006-06-09 2016-06-28 Qualcomm Incorporated Enhanced block-request streaming system for handling low-latency streaming
US9419749B2 (en) 2009-08-19 2016-08-16 Qualcomm Incorporated Methods and apparatus employing FEC codes with permanent inactivation of symbols for encoding and decoding processes
US9209934B2 (en) 2006-06-09 2015-12-08 Qualcomm Incorporated Enhanced block-request streaming using cooperative parallel HTTP and forward error correction
US9432433B2 (en) 2006-06-09 2016-08-30 Qualcomm Incorporated Enhanced block-request streaming system using signaling or block creation
US9178535B2 (en) 2006-06-09 2015-11-03 Digital Fountain, Inc. Dynamic stream interleaving and sub-stream based delivery
US9237101B2 (en) 2007-09-12 2016-01-12 Digital Fountain, Inc. Generating and communicating source identification information to enable reliable communications
US9281847B2 (en) 2009-02-27 2016-03-08 Qualcomm Incorporated Mobile reception of digital video broadcasting—terrestrial services
US9288010B2 (en) 2009-08-19 2016-03-15 Qualcomm Incorporated Universal file delivery methods for providing unequal error protection and bundled file delivery services
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
BR112012001150B1 (pt) * 2009-11-09 2021-06-29 Snaptrack, Inc Método para implementar serviço de transmissão baseado em http
US9485546B2 (en) 2010-06-29 2016-11-01 Qualcomm Incorporated Signaling video samples for trick mode video representations
US8918533B2 (en) 2010-07-13 2014-12-23 Qualcomm Incorporated Video switching for streaming video data
US9185439B2 (en) 2010-07-15 2015-11-10 Qualcomm Incorporated Signaling data for multiplexing video components
US9596447B2 (en) 2010-07-21 2017-03-14 Qualcomm Incorporated Providing frame packing type information for video coding
US8806050B2 (en) 2010-08-10 2014-08-12 Qualcomm Incorporated Manifest file updates for network streaming of coded multimedia data
US9270299B2 (en) 2011-02-11 2016-02-23 Qualcomm Incorporated Encoding and decoding using elastic codes with flexible source block mapping
TWI575948B (zh) * 2011-02-11 2017-03-21 內數位專利控股公司 內容分配及接收方法及裝置
US8958375B2 (en) 2011-02-11 2015-02-17 Qualcomm Incorporated Framing for an improved radio link protocol including FEC
US9258344B2 (en) * 2011-08-01 2016-02-09 Intel Corporation Multi-hop single sign-on (SSO) for identity provider (IdP) roaming/proxy
US9253233B2 (en) 2011-08-31 2016-02-02 Qualcomm Incorporated Switch signaling methods providing improved switching between representations for adaptive HTTP streaming
US9843844B2 (en) * 2011-10-05 2017-12-12 Qualcomm Incorporated Network streaming of media data
US8977704B2 (en) 2011-12-29 2015-03-10 Nokia Corporation Method and apparatus for flexible caching of delivered media
US9401968B2 (en) * 2012-01-20 2016-07-26 Nokia Techologies Oy Method and apparatus for enabling pre-fetching of media
US9374406B2 (en) 2012-02-27 2016-06-21 Qualcomm Incorporated Dash client and receiver with a download rate estimator
US9450997B2 (en) 2012-02-27 2016-09-20 Qualcomm Incorporated Dash client and receiver with request cancellation capabilities
US9294226B2 (en) 2012-03-26 2016-03-22 Qualcomm Incorporated Universal object delivery and template-based file delivery
US9106474B2 (en) * 2012-03-28 2015-08-11 National Instruments Corporation Lossless data streaming to multiple clients
US8838826B2 (en) * 2012-04-04 2014-09-16 Google Inc. Scalable robust live streaming system
JP5974392B2 (ja) 2012-04-05 2016-08-23 ホアウェイ・テクノロジーズ・カンパニー・リミテッド Isoベースメディアファイルフォーマットに基づく適応ストリーミングについてのセキュアな非同期イベント通知のためのシステム及び方法
US9438883B2 (en) 2012-04-09 2016-09-06 Intel Corporation Quality of experience reporting for combined unicast-multicast/broadcast streaming of media content
CN109618185A (zh) 2012-07-10 2019-04-12 Vid拓展公司 由wtru执行的方法、wtru及编码设备
CN104145292A (zh) * 2012-07-13 2014-11-12 三星电子株式会社 用于基于内容名称提供内容和实时流传输内容的内容请求器和内容提供器的通信方法
US9125073B2 (en) * 2012-08-03 2015-09-01 Intel Corporation Quality-aware adaptive streaming over hypertext transfer protocol using quality attributes in manifest file
KR101952632B1 (ko) * 2012-08-22 2019-02-27 삼성전자주식회사 사용자 단말 장치 및 그를 이용한 컨텐츠 전송 방법
US9276978B2 (en) 2012-12-31 2016-03-01 Microsoft Technology Licensing, Llc Program based caching in live media distribution
HUE043713T2 (hu) * 2013-03-29 2019-09-30 Intel Ip Corp Minõségtudatos sebességillesztési technikák DASH streameléshez
GB2513140B (en) * 2013-04-16 2016-05-04 Canon Kk Methods, devices, and computer programs for streaming partitioned timed media data
CN104125516B (zh) * 2013-04-24 2018-09-28 华为技术有限公司 媒体文件接收、媒体文件发送方法和装置及系统
US10313478B2 (en) * 2013-05-16 2019-06-04 Telefonaktiebolaget Lm Ericsson (Publ) Redirection in a content delivery network
JP2014239291A (ja) * 2013-06-06 2014-12-18 ソニー株式会社 コンテンツ供給装置、コンテンツ供給方法、プログラム、端末装置、およびコンテンツ供給システム
JP6571314B2 (ja) * 2013-06-18 2019-09-04 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカPanasonic Intellectual Property Corporation of America 送信方法
JP6419173B2 (ja) 2013-07-12 2018-11-07 キヤノン株式会社 プッシュメッセージ制御による適応型データストリーミング方法
CN105409235B (zh) * 2013-07-19 2019-07-09 索尼公司 文件生成装置和方法以及内容重放装置和方法
US9628528B2 (en) 2013-07-19 2017-04-18 Electronics And Telecommunications Research Institute Apparatus and method for providing content
AU2014294215B2 (en) * 2013-07-22 2018-10-04 Sony Corporation Image processing device and method
US9432427B2 (en) * 2013-07-25 2016-08-30 Futurewei Technologies, Inc. System and method for effectively controlling client behavior in adaptive streaming
US9807452B2 (en) 2013-10-07 2017-10-31 Samsung Electronics Co., Ltd. Practical delivery of high quality video using dynamic adaptive hypertext transport protocol (HTTP) streaming (DASH) without using HTTP in a broadcast network
CN105659623B (zh) * 2013-10-30 2019-04-26 索尼公司 发送装置、发送方法、接收装置以及接收方法
US9253231B2 (en) * 2013-12-19 2016-02-02 Verizon Patent And Licensing Inc. Retrieving and caching adaptive bitrate stream segments based on network congestion
KR102154800B1 (ko) * 2014-01-10 2020-09-10 삼성전자주식회사 전자 장치의 데이터 스트리밍 방법 및 그 전자 장치
JP2015136060A (ja) * 2014-01-17 2015-07-27 ソニー株式会社 通信装置、通信データ生成方法、および通信データ処理方法
KR102315367B1 (ko) * 2014-06-20 2021-10-20 소니그룹주식회사 수신 장치, 수신 방법, 송신 장치, 및, 송신 방법
WO2016004039A1 (en) * 2014-07-01 2016-01-07 Huawei Technologies Co., Ltd. Client behavior control in adaptive streaming
US9787751B2 (en) 2014-08-06 2017-10-10 At&T Intellectual Property I, L.P. Method and apparatus for delivering media content utilizing segment and packaging information
WO2017063189A1 (en) * 2015-10-16 2017-04-20 Qualcomm Incorporated Deadline signaling for streaming of media data
US10433023B1 (en) * 2015-10-27 2019-10-01 Amazon Technologies, Inc. Heuristics for streaming live content
CN106686411A (zh) * 2015-11-10 2017-05-17 中兴通讯股份有限公司 流媒体频道录制方法、装置及回看方法、装置及服务器
CN105872721A (zh) * 2015-12-14 2016-08-17 乐视云计算有限公司 起播速度的处理方法及装置
US9426543B1 (en) * 2015-12-18 2016-08-23 Vuclip (Singapore) Pte. Ltd. Server-based video stitching
JP6981257B2 (ja) * 2016-02-12 2021-12-15 ソニーグループ株式会社 情報処理装置および情報処理方法
FI20165114A (fi) 2016-02-17 2017-08-18 Nokia Technologies Oy Laitteisto, menetelmä ja tietokoneohjelma videokoodausta ja videokoodauksen purkua varten
US10567461B2 (en) * 2016-08-04 2020-02-18 Twitter, Inc. Low-latency HTTP live streaming
CN106657143A (zh) * 2017-01-20 2017-05-10 中兴通讯股份有限公司 一种流媒体传输方法、装置、服务器及终端
CN108632644B (zh) * 2017-03-21 2020-09-11 华为技术有限公司 预览图的展示方法以及设备
CN107370726B (zh) * 2017-06-22 2021-05-04 上海网达软件股份有限公司 一种用于分布式媒体文件转码系统的虚拟切片方法及系统
CN109302621A (zh) * 2017-07-24 2019-02-01 中兴通讯股份有限公司 一种文件聚合方法及服务器
KR102339223B1 (ko) * 2017-08-22 2021-12-15 삼성전자주식회사 전자 장치 및 전자 장치에서 카메라 기능과 연관된 콘텐트 제공 방법
GB201721847D0 (en) * 2017-12-22 2018-02-07 Telecom Paris Tech Priority map for media files
JP7175658B2 (ja) * 2018-07-25 2022-11-21 キヤノン株式会社 映像配信装置、配信方法及びプログラム
KR102513433B1 (ko) 2018-09-13 2023-03-24 삼성전자주식회사 영상전송을 위한 다중 무선 네트워크 환경에서의 QoS 제어 장치 및 이의 제어방법
US11825160B2 (en) * 2018-12-31 2023-11-21 Dish Network L.L.C. Automated content identification for binge watching of digital media using auto-skip processing
GB2582014A (en) * 2019-03-08 2020-09-09 Canon Kk Method, device, and computer program for optimizing transmission of portions of encapsulated media content
KR20210022836A (ko) * 2019-08-21 2021-03-04 현대자동차주식회사 클라이언트 전자 장치, 차량 및 그 제어 방법
US11564018B2 (en) 2019-10-02 2023-01-24 Qualcomm Incorporated Random access at resync points of dash segments
CN110677737A (zh) * 2019-10-08 2020-01-10 烽火通信科技股份有限公司 一种hls直播快速起播方法及系统
CN110677736B (zh) * 2019-10-08 2022-11-11 烽火通信科技股份有限公司 一种hls点播快速起播方法及系统
GB2599170A (en) * 2020-09-29 2022-03-30 Canon Kk Method, device, and computer program for optimizing indexing of portions of encapsulated media content data
KR102324724B1 (ko) * 2020-11-09 2021-11-10 엘아이지넥스원 주식회사 모뎀 및 네트워크의 파라미터를 이용한 영상 압축 및 전송 장치 및 이의 동작 방법

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AUPQ867700A0 (en) 2000-07-10 2000-08-03 Canon Kabushiki Kaisha Delivering multimedia descriptions
US8214655B2 (en) * 2002-03-29 2012-07-03 Kabushiki Kaisha Toshiba Data structure of multimedia file format, encrypting method and device thereof, and decrypting method and device thereof
WO2003105004A1 (en) * 2002-06-06 2003-12-18 Crescendo Networks Ltd. System and method for connecting multiple slow connections to multiple fast connections
US7702673B2 (en) 2004-10-01 2010-04-20 Ricoh Co., Ltd. System and methods for creation and use of a mixed media environment
US8239558B2 (en) * 2005-06-27 2012-08-07 Core Wireless Licensing, S.a.r.l. Transport mechanisms for dynamic rich media scenes
US20090119594A1 (en) * 2007-10-29 2009-05-07 Nokia Corporation Fast and editing-friendly sample association method for multimedia file formats
WO2009099307A1 (en) * 2008-02-05 2009-08-13 Samsung Electronics Co., Ltd Apparatus and method for generating and displaying media files
US8335259B2 (en) * 2008-03-12 2012-12-18 Packetvideo Corp. System and method for reformatting digital broadcast multimedia for a mobile device
US20100153578A1 (en) 2008-07-16 2010-06-17 Nokia Corporation Method and Apparatus for Peer to Peer Streaming
US7844712B2 (en) 2008-10-15 2010-11-30 Patentvc Ltd. Hybrid open-loop and closed-loop erasure-coded fragment retrieval process
KR20110138276A (ko) * 2009-04-09 2011-12-26 노키아 코포레이션 미디어 파일 스트리밍을 위한 시스템, 방법 및 장치
BR112012011581A2 (pt) * 2009-11-04 2017-09-19 Huawei Tech Co Ltd sistema e método para streaming de conteúdo de mídia
EP2510669A4 (en) * 2009-12-11 2013-09-18 Nokia Corp DEVICE AND METHODS FOR DESCRIBING SYNCHRONIZATION REPRESENTATIONS IN CONTINUOUSLY TRANSMITTED MULTIMEDIA FILES
US9485546B2 (en) * 2010-06-29 2016-11-01 Qualcomm Incorporated Signaling video samples for trick mode video representations

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140134676A (ko) * 2012-03-16 2014-11-24 인텔 코포레이션 멀티캐스트 방송 멀티미디어 서비스-어시스티드 콘텐츠 분배

Also Published As

Publication number Publication date
EP2596615A4 (en) 2014-08-20
US20170126761A1 (en) 2017-05-04
EP2596615A2 (en) 2013-05-29
US9503492B2 (en) 2016-11-22
WO2012011746A3 (en) 2012-04-19
KR20120010090A (ko) 2012-02-02
US20190028523A1 (en) 2019-01-24
US10567452B2 (en) 2020-02-18
WO2012011746A2 (en) 2012-01-26
US8694669B2 (en) 2014-04-08
US20140207965A1 (en) 2014-07-24
KR101735435B1 (ko) 2017-05-30
US10084831B2 (en) 2018-09-25
US20120023254A1 (en) 2012-01-26

Similar Documents

Publication Publication Date Title
US10567452B2 (en) Method and apparatus for improving quality of multimedia streaming service
Apostolopoulos et al. Video streaming: Concepts, algorithms, and systems
JP5788101B2 (ja) メディアデータのネットワークストリーミング
KR100966447B1 (ko) 데이터 스트리밍 시스템 및 방법
US10263875B2 (en) Real-time processing capability based quality adaptation
JP6016778B2 (ja) チャンクの形態でストリーミングされたコンテンツを回復する方法
US9584596B2 (en) Device for obtaining content by choosing the transport protocol according to the available bandwidth
US20200112753A1 (en) Service description for streaming media data
US10298965B2 (en) Selection of a content source based on performance data
JP2004525556A (ja) ストリーミングされたメディアをバッファリングする方法及びシステム
US20050002337A1 (en) Reducing effects caused by transmission channel errors during a streaming session
US20200021867A1 (en) Broadcast signal transmitting and receiving method and device
US11765444B2 (en) Streaming media data including an addressable resource index track
US20160134672A1 (en) Delivering partially received segments of streamed media data
WO2008134897A1 (en) Method and system for quality service enhancement in networks for media streaming
Koo et al. Adaptive channel control scheme to reduce channel zapping time of mobile IPTV service
WO2009109232A1 (en) Method and apparatus for distributing media over a communications network
US11374998B1 (en) Adaptive bitrate streaming stall mitigation
Bouzakaria Advanced contributions in HTTP adaptive streaming
WO2023133365A1 (en) Dynamic resolution change hints for adaptive streaming
Prins Fast retransmission for multicast IPTV
Lee et al. Numeric analysis for relationship-aware scalable streaming scheme
Lee et al. Performance Optimization by Simplification of Relationship in Scalable Layer Stream