KR20200081162A - 컨텐츠 인코딩 장치 및 방법 - Google Patents

컨텐츠 인코딩 장치 및 방법 Download PDF

Info

Publication number
KR20200081162A
KR20200081162A KR1020180171355A KR20180171355A KR20200081162A KR 20200081162 A KR20200081162 A KR 20200081162A KR 1020180171355 A KR1020180171355 A KR 1020180171355A KR 20180171355 A KR20180171355 A KR 20180171355A KR 20200081162 A KR20200081162 A KR 20200081162A
Authority
KR
South Korea
Prior art keywords
stream
final
streams
segment
encoding
Prior art date
Application number
KR1020180171355A
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 KR1020180171355A priority Critical patent/KR20200081162A/ko
Priority to PCT/KR2018/016887 priority patent/WO2020138568A1/ko
Priority to US17/418,506 priority patent/US20220150585A1/en
Publication of KR20200081162A publication Critical patent/KR20200081162A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • H04N21/234381Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements by altering the temporal resolution, e.g. decreasing the frame rate by frame skipping
    • 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/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/4402Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display
    • H04N21/440245Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display the reformatting operation being performed only on part of the stream, e.g. a region of the image or a time segment
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/21Server components or server architectures
    • H04N21/218Source of audio or video content, e.g. local disk arrays
    • H04N21/2187Live feed
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/154Measured or subjectively estimated visual quality after decoding, e.g. measurement of distortion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/184Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being bits, e.g. of the compressed video stream
    • 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 or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • H04N21/234363Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements by altering the spatial resolution, e.g. for clients with a lower screen resolution
    • 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 or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • H04N21/23439Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements for generating different versions
    • 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/25Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
    • H04N21/262Content or additional data distribution scheduling, e.g. sending additional data at off-peak times, updating software modules, calculating the carousel transmission frequency, delaying a video stream transmission, generating play-lists
    • H04N21/26258Content or additional data distribution scheduling, e.g. sending additional data at off-peak times, updating software modules, calculating the carousel transmission frequency, delaying a video stream transmission, generating play-lists for generating a list of items to be played back in a given order, e.g. playlist, or scheduling item distribution according to such list
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Databases & Information Systems (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

본 명세서에 개시된 인코딩 장치의 인코딩 방법은 컴퓨팅 장치에 의해 수행되는 방법으로서, 비디오 컨텐츠를 서로 다른 해상도를 가지고 동일한 인코딩 품질 파라미터 값의 범위를 가지는 복수의 중간 스트림으로 인코딩하도록 인코더(encoder) 제어 신호를 생성하는 동작 및 각 중간 스트림의 동일한 비트레이트(bitrate) 값의 범위를 가지는 세그먼트(segment)들에 기반하여 복수의 최종 스트림을 구성하도록 제어 신호를 생성하는 동작을 포함하고, 중간 스트림 및 최종 스트림은 적어도 하나의 세그먼트를 포함한다.

Description

컨텐츠 인코딩 장치 및 방법{CONTENT ENCODING APPARATUS AND METHODS}
본 명세서는 컨텐츠 데이터를 인코딩하는 장치, 시스템 및 그 방법에 관한 것으로서, 더욱 자세하게는 ABR(Adaptive Bitrate) 방식의 스트림을 인코딩하는 기술에 관한 것이다.
많은 사용자들이 모바일 단말기, 컴퓨터 등의 사용자 단말에서 유/무선 네트워크를 통해 동영상 등의 대용량 미디어 컨텐츠를 다운로드 및 재생하는 서비스를 이용하고 있고, 컨텐츠 제공자는 사용자의 만족도를 위해서 컨텐츠 데이터 전송의 끊김 없이 서비스를 제공하려는 노력을 하고 있다.
컨텐츠 제공자는 CDN(Content Delivery Network) 서비스의 복제 서버(캐시 서버, 고스트 서버, 에지 서버 또는 미러 서버로 불릴 수 있다.)를 통해 사용자 단말로 컨텐츠 데이터를 전송할 수 있다. 즉, 컨텐츠 데이터를 전송하는 방법의 하나로서, 컨텐츠 제공자는 적어도 일부 컨텐츠를 복제 서버에 미리 저장하고, 사용자 단말은 복제 서버로부터 미리 저장된 컨텐츠 데이터를 수신하는 방법이 있다. 이 경우, 사용자 단말은 해당 CDN 복제 서버로부터 스트리밍(Streaming) 방식 또는 다운로드 방식으로 컨텐츠 데이터를 수신할 수 있다.
컨텐츠 데이터 전송의 끊김 없는 서비스를 제공하기 위해, 컨텐츠를 서로 다른 비트레이트(Bitrate)를 가진 복수의 스트림(stream, rendition으로 불릴 수 있다.)으로 인코딩하여 복제 서버에 저장하고, 사용자 단말은 자신의 네트워크 환경을 고려한 스트림을 전송 요청할 수 있으며, 이를 ABR(Adaptive Bitrate) 스트림 전송이라 한다.
ABR(Adaptive Bitrate) 방식의 스트림(stream) 전송을 위하여 컨텐츠를 인코딩(encoding)하는 종래 기술은, 컨텐츠 데이터를 비트레이트(bitrate)가 서로 다른 복수의 스트림으로 인코딩할 때 네트워크 상황만을 고려하여 비트레이트에만 중점을 두어 사용자가 체감하는 컨텐츠의 화질이 열화되는 문제점이 존재한다.
따라서, 사용자가 체감하는 화질의 열화 없이 네트워크 상황에 적합한 ABR 스트림으로 컨텐츠를 인코딩하는 인코딩 장치 및 방법이 필요하게 되었다.
본 명세서는 인코딩 장치의 인코딩 방법을 제시한다. 상기 인코딩 장치의 인코딩 방법은, 컴퓨팅 장치에 의해 수행되는 방법으로서 비디오 컨텐츠를 서로 다른 해상도를 가지고 동일한 인코딩 품질 파라미터 값의 범위를 가지는 복수의 중간 스트림으로 인코딩하도록 인코더(encoder) 제어 신호를 생성하는 동작 및 각 중간 스트림의 동일한 비트레이트(bitrate) 값의 범위를 가지는 세그먼트(segment)들에 기반하여 복수의 최종 스트림을 구성하도록 제어 신호를 생성하는 동작을 포함하고, 상기 중간 스트림 및 상기 최종 스트림은 적어도 하나의 세그먼트를 포함할 수 있다.
상기 인코딩 장치의 인코딩 방법 및 그 밖의 실시 예는 다음과 같은 특징을 포함할 수 있다.
상기 복수의 최종 스트림을 생성하는 동작은, 각 중간 스트림의 동일한 비트레이트 값의 범위를 가지는 세그먼트들을 재생 순서가 겹치지 않으면서 동일한 최종 스트림으로 구성하는 동작을 포함하고, 상기 복수의 최종 스트림 중 어느 한 최종 스트림의 복수의 세그먼트들은 대응되는 상기 비디오 컨텐츠의 부분이 서로 다를 수 있다.
상기 복수의 중간 스트림으로 인코딩하도록 인코더 제어 신호를 생성하는 동작은 생성될 상기 복수의 중간 스트림의 개수가 상기 복수의 최종 스트림 개수 이상이 되도록 지시하는 동작을 포함할 수 있고, 상기 복수의 최종 스트림을 구성하도록 제어 신호를 생성하는 동작은, 상기 복수 중간 스트림의 세그먼트 품질 측정을 수행하는 동작 및 상기 세그먼트 품질 측정의 결과에 기반하여 상기 복수의 최종 스트림을 구성하도록 제어 신호를 생성하는 동작을 포함할 수 있다.
상기 복수의 중간 스트림에서 서로 다른 중간 스트림의 세그먼트들은 서로 해상도가 다르고, 동일한 중간 스트림의 세그먼트들은 서로 해상도가 동일하고, 상기 복수의 최종 스트림의 어느 한 최종 스트림은 서로 다른 해상도를 가지는 세그먼트들을 포함할 수 있다.
상기 복수의 최종 스트림 중 적어도 어느 한 최종 스트림의 서로 다른 세그먼트에 기반하여 각각 제1 매니페스트(manifest) 파일 및 제2 매니페스트 파일을 생성하는 동작을 포함하고, 상기 제1 매니페스트 파일에 포함된 세그먼트 해상도 정보는 상기 제2 매니페스트 파일에 포함된 세그먼트 해상도 정보와 서로 다를 수 있다.
상기 복수의 중간 스트림의 각 중간 스트림에 포함된 세그먼트들의 비트레이트 변화 양상은 서로 동일하거나, 또는, 상기 복수의 최종 스트림의 각 최종 스트림에 포함된 세그먼트들의 해상도 변화 양상은 서로 동일할 수 있다.
상기 세그먼트 품질 측정의 결과에 기반하여 상기 복수의 최종 스트림을 구성하도록 제어 신호를 생성하는 동작은, 각 최종 스트림의 비트레이트 기준 및 미리 설정된 품질 측정 기준에 적합한 중간 스트림의 세그먼트에 기반하여 상기 복수의 최종 스트림을 구성하도록 제어 신호를 생성하는 동작일 수 있다.
본 명세서는 인코딩 장치를 제시한다. 상기 인코딩 장치는 비디오 컨텐츠, 인코더(encoder) 제어 신호 생성을 위한 제어 변수 및 인코딩 과정에서 생성되는 중간 데이터 중 적어도 어느 하나를 저장하는 저장부, 상기 비디오 컨텐츠를 서로 다른 해상도를 가지고 동일한 인코딩 품질 파라미터 값의 범위를 가지는 복수의 중간 스트림으로 인코딩하도록 인코더(encoder) 제어 신호를 생성하고, 각 중간 스트림의 동일한 비트레이트(bitrate) 값의 범위를 가지는 세그먼트(segment)들에 기반하여 복수의 최종 스트림을 구성하도록 제어 신호를 생성하는 제어부 및 상기 비디오 컨텐츠를 전송 받거나 상기 최종 스트림 중 적어도 어느 한 최종 스트림을 전송하는 통신부를 포함하고, 상기 중간 스트림 및 상기 최종 스트림은 적어도 하나의 세그먼트를 포함할 수 있다.
상기 인코딩 장치는 상기 복수의 최종 스트림 중 어느 한 최종 스트림의 복수의 세그먼트들은 대응되는 상기 비디오 컨텐츠의 부분이 서로 다르고, 상기 복수의 최종 스트림의 어느 한 최종 스트림은 서로 다른 해상도를 가지는 세그먼트들을 포함할 수 있다.
본 명세서에 개시된 실시 예들에 의하면, 사용자 단말의 네트워크 상황에 적합한 스트림을 생성하는 적응적 비트레이트(ABR) 인코딩 기술을 제공할 수 있다.
본 명세서에 개시된 실시 예들에 의하면, 사용자가 체감하는 영상 화질의 열화가 없는 적응적 비트레이트 인코딩 기술을 제공할 수 있다.
도 1은 컨텐츠 인코딩 장치를 포함한 실시예를 개략적으로 도시한다.
도 2는 컨텐츠 인코딩 장치를 포함한 실시예를 개략적으로 도시한다.
도 3 및 도 4는 컨텐츠 인코딩 장치의 구성을 개략적으로 도시한다.
도 5는 컨텐츠 인코딩 장치의 인코딩 동작 방법을 개략적으로 도시한다.
도 6은 인코딩된 중간 스트림들의 실시예를 도시한다.
도 7은 최종 스트림들의 실시예를 도시한다.
도 8은 컨텐츠 인코딩 장치의 다른 인코딩 동작 방법을 개략적으로 도시한다.
도 9 내지 도 15는 인코딩 동작 방법의 구체적인 실시예를 도시한다.
본 명세서에 개시된 기술은 컨텐츠 인코딩 장치에 적용될 수 있다. 그러나 본 명세서에 개시된 기술은 이에 한정되지 않고, 상기 기술의 기술적 사상이 적용될 수 있는 모든 전자 장치 및 방법에도 적용될 수 있다.
본 명세서에서 사용되는 기술적 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 명세서에 개시된 기술의 사상을 한정하려는 의도가 아님을 유의해야 한다. 또한, 본 명세서에서 사용되는 기술적 용어는 본 명세서에서 특별히 다른 의미로 정의되지 않는 한, 본 명세서에 개시된 기술이 속하는 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 의미로 해석되어야 하며, 과도하게 포괄적인 의미로 해석되거나, 과도하게 축소된 의미로 해석되지 않아야 한다. 또한, 본 명세서에서 사용되는 기술적인 용어가 본 명세서에 개시된 기술의 사상을 정확하게 표현하지 못하는 잘못된 기술적 용어일 때에는, 본 명세서에 개시된 기술이 속하는 분야에서 통상의 지식을 가진 자가 올바르게 이해할 수 있는 기술적 용어로 대체되어 이해되어야 할 것이다. 또한, 본 명세서에서 사용되는 일반적인 용어는 사전에 정의되어 있는 바에 따라, 또는 전후 문맥 상에 따라 해석되어야 하며, 과도하게 축소된 의미로 해석되지 않아야 한다.
본 명세서에서 사용되는 제1, 제2 등과 같이 서수를 포함하는 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성 요소는 제2 구성 요소로 명명될 수 있고, 유사하게 제2 구성 요소도 제1 구성 요소로 명명될 수 있다.
이하, 첨부된 도면을 참조하여 본 명세서에 개시된 실시 예들을 상세히 설명하되, 도면 부호에 관계없이 동일하거나 유사한 구성 요소는 동일한 참조 번호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다.
또한, 본 명세서에 개시된 기술을 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 본 명세서에 개시된 기술의 요지를 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다. 또한, 첨부된 도면은 본 명세서에 개시된 기술의 사상을 쉽게 이해할 수 있도록 하기 위한 것일 뿐, 첨부된 도면에 의해 그 기술의 사상이 제한되는 것으로 해석되어서는 아니 됨을 유의해야 한다.
도 1은 컨텐츠 인코딩 장치(112)를 포함한 실시예를 개략적으로 도시한다. 컨텐츠 인코딩 장치(112)는 CDN(Content Delivery Network)(120) 및 사용자 단말(130)과 유선 또는 무선 네트워크를 통하여 연결될 수 있다.
컨텐츠 인코딩 장치(112)는 일 실시예에서 컨텐츠 원본(메자니 파일, mezzanine file)을 제공받아 스트림(stream, bitstream)으로 인코딩(encoding)하거나 인코딩된 스트림을 패키징(packaging)할 수 있다. 컨텐츠 인코딩 장치(112)는 일 실시예에서, 사용자 단말(130)로부터 컨텐츠 전송 요청을 받고 해당 컨텐츠 전송을 위한 매니페스트(manifest) 파일을 사용자 단말(130)로 전송할 수 있다. 이러한 실시예들에서 컨텐츠 인코딩 장치는 오리진 서버 또는 패키징 장치로 불릴 수 있다.
다른 실시예에서, 컨텐츠 인코딩 장치(112) 외 인코딩된 스트림을 전송 프로토콜에 맞게 패키징하는 장치(미도시) 또는 사용자 단말(130)로부터 컨텐츠 전송 요청을 받고 매니페스트 파일을 전송하는 오리진 서버(미도시)가 별도로 존재할 수 있다.
CDN(120)은 컨텐츠의 복사본들을 저장 및 전송하기 위한 캐싱(caching) 노드들로 구성된 계층적 구조를 가질 수 있고, 계층적 구조에서 상위 구조(high tier)의 캐싱 노드들과 사용자 단말로 컨텐츠를 전송하는 에지 서버(캐시 서버, 고스트 서버, 에지 서버 또는 미러 서버로 불릴 수 있다.)를 포함할 수 있다.
도 1은 컨텐츠 인코딩 장치(112)를 CDN(120) 밖에 존재하는 것으로 도시했지만, 컨텐츠 인코딩 장치(112)는 CDN(120)의 한 장치로서 동작하는 것을 배제하지 않는다.
컨텐츠 인코딩 장치(112)에서 인코딩된 스트림은 CDN 에지 서버로 전송 되어, RTP/RTSP(Real Time Transport Protocol /Real Time Streaming Protocol), RTMP(Real Time Message Protocol) 또는 HTTP(hypertext transfer protocol) 방식으로 사용자 단말(130)에 배포될 수 있고, 사용자 단말은 컨텐츠 인코딩 장치, 오리진 서버 또는 별도의 CDN 장치로 요청 가능한 컨텐트 리스트를 확보하기 위해 주기적으로 매니페스트 파일을 요청할 수 있다.
컨텐츠 인코딩 장치(112)는 다른 실시예에서 스포츠 중계 방송, 콘서트 실황 중계 등의 라이브 스트림(live stream), TV 프로그램, 영화 등의 미리 기록된 컨텐츠 또는 광고 컨텐츠를 제공 받아 이를 인코딩 또는 패키징 할 수 있다.
일 실시예에서, 컨텐츠 인코딩 장치(112)는 컨텐츠 데이터 파일을 별도의 컨텐츠 데이터 제공 장치(111)로부터 전송 받아 이를 인코딩할 수 있으며, 컨텐츠 데이터 제공 장치(111)는 컨텐츠 데이터 저장 서버(111a), 방송 장비(111b) 또는 컨텐츠 데이터 생산 컴퓨팅 장치(111c)일 수 있고 컨텐츠 데이터를 전송 또는 제공할 수 있는 것이라면 특별히 그 종류를 한정하지 않는다.
컨텐츠 인코딩 장치(112)는 컨텐츠를 서로 비트레이트(bitrate)가 다른 복수의 스트림(stream, bitstream, rendition)으로 인코딩 또는 인코딩 및 패키징하고 이를 CDN(120)으로 전송할 수 있다.
컨텐츠를 다양한 설정 또는 환경에 기반하여 인코딩 또는 패키징한 스트림집합(set) 또는 어느 한 스트림을 렌디션(rendition)이라고 부를 수 있다.
서로 비트레이트가 다른 복수의 스트림은 상위 비트레이트로 인코딩된 스트림 및 하위 비트레이트로 인코딩 된 스트림을 포함할 수 있고, 렌디션에 포함되는 최종 스트림의 개수는 특별히 한정하지 않는다.
컨텐츠 인코딩 장치(112)는 컨텐츠에 대한 복수의 스트림을 동시에 인코딩 또는 패키징하여 CDN 장치로 전송하거나, CDN 장치의 요청에 따라 복수의 스트림 중 어느 한 스트림을 인코딩 또는 패키징하여 전송할 수 있다.
컨텐츠 데이터가 인코딩된 각 스트림은 적어도 하나의 세그먼트(segment, 청크(chunk)라 불릴 수 있다.)를 포함하고, 각 세그먼트는 적어도 하나의 화상 그룹(GOP, Group of Pictures)을 포함할 수 있다.
세그먼트는 컨텐츠 데이터가 인코딩 된 스트림의 일 부분을 나타내며, 각 세그먼트들은 사용자 단말(130)에서 디코딩되어 재생되거나 사용자 단말에 (임시적 또는 일정 기간 동안)저장될 수 있다.
컨텐츠 인코딩 장치(112) 또는 별도의 오리진 서버(미도시)는 복수의 렌디션에 대한 매니페스트(manifest) 파일을 생성하거나 이를 제공 받아 CDN 장치로 전송할 수 있다.
다른 실시예에서, 해당 매니페스트 파일은 CDN(120) 내의 상위 계층 캐싱 노드가 생성하거나 제공할 수 있다.
상기 매니페스트 파일은 사용자 단말(130)이 요청 가능한 컨텐츠 스트림의 세그먼트 또는 다른 관련 데이터들의 접속(요청) 경로 또는 관련 메타데이터(metadata)를 포함할 수 있다.
일 실시예로서, 동일한 컨텐츠에 대해 비트레이트가 서로 다른 복수의 스트림이 존재하고 사용자 단말(130)이 이를 모두 이용 가능한 경우, 컨텐츠 인코딩 장치, 오리진 서버 또는 상위 계층의 캐싱 노드는 상기 복수의 스트림을 요청 가능한 접속 경로를 포함하여 매니페스트 파일을 생성할 수 있다. 일 실시예에서, 컨텐츠 인코딩 장치가 매니페스트 파일을 생성하는 경우, 오리진 서버 또는 CDN의 상위 계층 캐싱 노드가 이를 제공 받을 수 있다.
일 실시예에서, 컨텐츠 인코딩 장치(112)가 생성 또는 제공하는 매니페스트 파일은 비트레이트가 서로 다른 복수의 스트림에 기반한 것일 수 있고, 각 스트림은 복수의 세그먼트들로 구성되고, 어느 한 스트림의 세그먼트들 중 일부의 세그먼트들은 서로 다른 해상도를 가지나 동일한 인코딩 품질 파라미터(encoding quality parameter) 값(또는 인코딩 품질 파라미터 값의 범위)를 가질 수 있다. 이에 대해서는 아래에서 자세히 설명한다.
CDN(120)은 컴퓨팅 장치(예를 들면, 서버들)들의 네트워크로 구성된 시스템을 의미하며, CDN(120)의 각 컴퓨팅 장치는 노드(node)로 불릴 수 있고, CDN(120)은 컨텐츠의 비트스트림화된 스트림을 저장 또는 (각 노드간에 또는 사용자 단말로) 전송할 수 있다.
컨텐츠 인코딩 장치(112)는 오리진 서버 또는 CDN(120)으로, CDN(120)은 각 노드간에 또는 사용자 단말(130)로 광대역 네트워크를 통해 컨텐츠의 비트스트림화된 스트림을 전송할 수 있으며, 네트워크는 예를 들어, 무선 네트워크, 유선 네트워크, 인터넷과 같은 공용 네트워크, 사설 네트워크, 모바일 통신 네트워크용 광역 시스템(global system for mobile communication network; GSM) 네트워크, 범용 패킷 무선 네트워크(general packet radio network; GPRS), 근거리 네트워크(local area network; LAN), 광역 네트워크(wide area network; WAN), 거대도시 네트워크(metropolitan area network; MAN), 셀룰러 네트워크, 공중 전화 교환 네트워크(public switched telephone network; PSTN), 개인 네트워크(personal area network), 블루투스, Wi-Fi 다이렉트(Wi-Fi Direct), 근거리장 통신(Near Field communication), 초 광 대역(UltraWide band), 이들의 조합, 또는 임의의 다른 네트워크일 수 있지만 이들로 한정되는 것은 아니다.
사용자 단말(130)은 네트워크를 통해 컨텐츠 인코딩 장치(112), 오리진 서버 또는 별도의 장치(CDN의 DNS 서버, 컨텐츠 서버, 매니페스트 서버)등으로부터 사용자 단말(130)의 컨텐츠 제공 요청에 대한 컨텐츠 접속 정보를 수신하여, 해당 접속 정보에 따른 에지 서버로 컨텐츠 전송 요청을 할 수 있다.
본 명세서에 개시된 실시예의 사용자 단말(130)은 퍼스널 컴퓨터(PC, Personal Computer) 뿐만 아니라 태블릿 컴퓨터, 스마트폰 등을 포함한다.
도 2는 컨텐츠 인코딩 장치(212)를 포함한 실시예를 개략적으로 도시한다. 도 2는 컨텐츠 인코딩 장치(212)를 CDN 외부에 존재하는 것으로 도시했지만, 컨텐츠 인코딩 장치(212)는 CDN(220)의 한 장치로서 동작하는 것을 배제하지 않는다.
일 실시예로서, 컨텐츠 인코딩 장치(212)는 능동적인 스트림 서버로 동작할 수 있으며, 사용자 단말(230)로부터의 컨텐츠 데이터에 대한 요청이 CDN(220)을 통해서 또는 직접적으로 컨텐츠 인코딩 장치(212)로 전송될 수 있고, 상기 요청은 RTP/RTSP, RTMP 또는 HTTP에 기반한 프로토콜에 의할 수 있다.
일 실시예로서, 컨텐츠 인코딩 장치(212)는 컨텐츠의 비트스트림화된 스트림 및 매니페스트 파일을 오리진 서버(미도시), CDN(220)의 중간 계층(mid-tier) 캐싱 노드(221, 222) 또는 에지 서버(223, 224)의 요청에 따라, 혹은 최초 컨텐츠 배포 시에 미리 중간 계층 캐싱 노드(221, 222) 또는 에지 서버(223, 224)에 전송할 수 있으며, 이는 CDN 서비스의 정책에 따라 다를 수 있다.
중간 계층 캐싱 노드(221, 222) 또는 에지 서버(223, 224)는 사용자 단말(230)의 컨텐츠 요청 또는 컨텐츠의 어느 한 스트림 요청시 상위 계층 캐싱 노드, 오리진 서버 또는 컨텐츠 인코딩 장치(212)로 컨텐츠에 대한 복수의 스트림 전체 또는 어느 한 스트림을 요청하고 이를 전송 받은 후, 로컬 저장부에 저장할 수 있다.
이 경우, 복수의 스트림은 동일한 인코딩 품질 파라미터 값(또는 인코딩 품질 파라미터 값의 범위)을 가질 수 있다. 또한, 복수의 스트림의 각 스트림은 각각 복수의 세그먼트들을 포함하고, 각 스트림은 서로 다른 해상도를 가지는 복수의 세그먼트들을 포함할 수 있다.
따라서, 사용자 단말이 동일한 비트레이트(bitrate)를 가진 스트림의 복수의 세그먼트들을 전송 받는 경우에도, 해상도는 다르나 동일한 인코딩 품질 파라미터 값(또는 그 범위)을 가진 세그먼트를 전송 받으므로 영상의 특성이 변화하는 경우에도 사용자의 체감상 화질의 열화가 적은 컨텐츠를 전송 받을 수 있다. 사용자의 컨텐츠에 대한 체감은 해상도 보다는 인코딩 품질 파라미터 값으로 대변되는 화질에 더 민감하기 때문이다.
인코딩 품질 파라미터는 인코딩 시 영상의 화질 자체에 영향을 미치는 파라미터로서, QP(Quantization Parameter), RF(Rate Factor)일 수 있다.
일 실시예에서, 컨텐츠 제공자는 컨텐츠 인코딩 장치(212), 오리진 서버(미도시) 또는 네임 서버(미도시)를 통해 컨텐츠 제공을 위한 IP 어드레스를 질의 받으면 CDN 관리 서버(미도시)로 리 디렉션(Re-direction) 하거나 컨텐츠 인코딩 장치(212), 오리진 서버(미도시) 자체적 또는 리 디렉션된 CDN 관리 서버가 요청한 사용자 단말(230)의 상황을 고려하여 해당 컨텐츠를 보유하고 있는 에지 서버(223, 224)를 판단하여 해당 접속 경로를 사용자 단말(230)로 제공할 수 있다. 또는, 사용자 단말(230)은 미리 저장된 CDN 관리 서버의 IP 어드레스로 접속해 컨텐츠 제공 요청을 할 수 있고, CDN 관리 서버는 요청한 사용자 단말의 상황을 고려하여 적절한 에지 서버를 판단하여 해당 접속 경로를 사용자 단말로 알려줄 수 있다.
다른 실시예에서, 컨텐츠 제공자는 컨텐츠 인코딩 장치(212), 오리진 서버(미도시) 또는 네임 서버를 통해 컨텐츠 제공을 요청 받으면 응답으로서 매니페스트 파일을 전송하고, 사용자 단말(230)은 동일한 컨텐츠의 서로 다른 비트레이트를 가지는 복수의 스트림에 대한 접속 정보를 포함한 매니페스트 파일에 기반하고 사용자 단말(230)의 네트워크 상황을 고려하여 적합한 비트레이트를 가진 스트림에 대해 매니페스트 파일의 접속 정보에 따라 에지 서버(223, 224)로 컨텐츠 제공 요청(스트림 제공 요청)을 할 수 있다.
본 명세서에서 개시되는 컨텐츠 데이터의 스트림 전송 방식은, 예를 들어, RTP/RTSP, RTMP 기반 프로토콜 또는 HTTP 기반 프로토콜(예를 들어, HLS(HTTP Live Streaming)/HDS, Smooth Streaming, Dynamic Streaming, MPEG DASH(Dynamic Adaptive Streaming over HTTP) 등) 등일 수 있으나, 특별히 그 방법으로 한정되지 않는다.
일 실시예에서, 에지 서버(223, 224) 또는 중간 계층의 캐싱 노드(221, 222)가 사용자 단말(230)로부터 요청 받은 컨텐츠의 렌디션을 저장하고 있지 않은 경우, 컨텐츠 인코딩 장치(212), 오리진 서버(미도시) 또는 CDN의 상위 계층 캐싱 노드에 컨텐츠의 어느 한 스트림에 대한 전송 요청을 전송할 수 있고, 컨텐츠 인코딩 장치(212), 오리진 서버(미도시) 또는 CDN의 상위 계층 캐싱 노드는 요청 받은 스트림을 요청한 CDN 장치(221~224)로 전송할 수 있다.
컨텐츠 인코딩 장치(212), 오리진 서버(미도시)는 CDN 중간 계층 캐싱 노드(221, 222) 또는 에지 서버(223,224)로부터 특정 컨텐츠에 대한 복수의 스트림 모두 또는 적어도 어느 한 스트림에 대하여 전송 요청을 수신할 수 있고, 컨텐츠 인코딩 장치(212), 오리진 서버(미도시)는 요청한 CDN 장치(221~224)로 복수의 스트림 모두 또는 적어도 어느 한 스트림을 전송할 수 있다.
또 다른 실시예에서, 동일한 컨텐츠의 서로 다른 비트레이트를 가지는 복수의 스트림이 각 스트림별로 서로 다른 에지 서버(223, 224)에 저장될 수 있다.
예를 들어, 도 2를 참조하면, 특정 컨텐츠의 상위 비트레이트 스트림은 제1 에지서버(223)에 저장되고, 하위 비트레이트 스트림은 제2 에지 서버(224)에 저장될 수 있다.
일 실시예로서, 사용자 단말(230)은 컨텐츠 요청에 따른 응답으로 서로 다른 비트레이트를 가지는 복수의 스트림에 대한 정보가 포함된 매니페스트 파일을 전송 받고, 최초 세그먼트를 전송 받을 때는 네트워크 상황에 따라 제1 에지서버(223)로부터 상위 비트레이트 스트림을 전송 받다가, 이 후 네트워크 상황이 나빠지면 매니페스트 파일을 참고하여 제2 에지서버(224)로부터 하위 비트레이트 스트림을 이어서 전송 받을 수 있다.
이 경우, 제1 에지서버(223)가 보유한 상위 비트레이트 스트림과 제2 에지서버가 보유한 하위 비트레이트 스트림은 아래에서 설명될 도 7의 최종 스트림들(710, 720, 730)처럼 동일한 인코딩 품질 파라미터 값(예를 들면 QP 값 또는 RF 값)(또는 인코딩 품질 파라미터 값의 범위)을 가질 수 있다.
또한, 제1 에지서버(223)가 보유한 상위 비트레이트 스트림과 제2 에지서버가 보유한 하위 비트레이트 스트림은 아래에서 설명될 도 7의 최종 스트림들(710, 720, 730)처럼 각각 해상도가 서로 다른 복수의 세그먼트들로 구성될 수 있다.
컨텐츠 인코딩 장치(212), 오리진 서버(미도시) 또는 상위 계층의 CDN 캐싱 노드는 패키징 장치(packager)로 인코딩된 비트스트림을 패키징(packaging)할 수 있고, 패키징 시 비트스트림화된 스트림들에 기반하여 전송 프로토콜에 적합한 매니페스트 파일을 포함시킬 수 있다.
이 경우, 컨텐츠 인코딩 장치(212), 오리진 서버(미도시) 또는 상위 계층의 CDN 캐싱 노드는 컨텐츠 원본을 서로 다른 비트레이트를 가지는 복수의 스트림으로 인코딩하거나 복수의 인코딩된 스트림을 패키징할 수 있다.
일 실시예에서, 복수의 스트림은 ABR 방식을 지원하기 위해서 서로 다른 비트레이트를 가지는 스트림들일 수 있다.
또한, 각 스트림은 서로 다른 해상도를 가진 복수의 세그먼트들로 구성되고, 각 스트림의 인코딩 품질 파라미터 값(예를 들면 QP 값 또는 RF 값)(또는 인코딩 품질 파라미터 값의 범위)은 스트림이 다르더라도 서로 동일할 수 있다.
도 3 및 도 4는 컨텐츠 인코딩 장치(112, 212)의 구성을 개략적으로 도시한다.
컨텐츠 인코딩 장치(112, 212)는 인코딩에 사용되는 원본 데이터, 인코딩 중에 발생되는 중간 데이터 또는 인코딩의 최종 결과 데이터 중 적어도 어느 하나를 저장하는 저장부(310, 410)를 포함할 수 있다.
저장부(310, 410)는 자기 저장 매체(magnetic storage media), 플래시 저장 매체(flash storage media), RAM(random access memory) 등의 휘발성 메모리를 포함할 수 있고 일시적 저장 매체 또는 반 영구적 저장 매체일 수 있으나, 본 발명의 범위가 이에 한정되는 것은 아니다.
컨텐츠 인코딩 장치(112, 212)는 컨텐츠 데이터 제공 장치로부터 컨텐츠 데이터를 전송 받거나 인코딩된 결과물을 오리진 서버 또는 CDN 장치로 전송하는 통신부(320, 420)를 포함할 수 있다.
컨텐츠 인코딩 장치(112, 212)가 사용자 단말의 컨텐츠 데이터 전송 요청에 응답하는 역할을 수행하는 경우, 통신부(320, 420)는 사용자 단말로부터 컨텐츠 전송 요청 또는 스트림 전송 요청을 전송 받고 이에 대한 응답을 전송할 수 있다.
제어부(330, 430)는 인코더(340, 440)를 제어하여 컨텐츠 데이터를 스트리밍에 적합한 스트림으로 인코딩하도록 제어 신호를 생성할 수 있다.
일 실시예에서, 제어부는 컨텐츠 데이터로부터 바로 서로 다른 비트레이트를 가지는 복수의 스트림으로 인코딩하도록 제어 신호를 생성하거나, 복수의 중간 스트림으로 인코딩한 후 복수의 중간 스트림으로부터 서로 다른 비트레이트를 가지는 복수의 최종 스트림으로 인코딩하도록 제어 신호를 생성할 수 있다.
상기 제어 신호는 전기적 신호(signal) 뿐만 아니라, 메시지(message) 형태의 신호를 포함한다.
제어부가(330, 430) 제어 신호를 생성하여 인코딩을 수행하도록 제어하는 인코더(340, 440)는 컨텐츠 인코딩 장치(112, 212) 내부에 포함된 칩 형태의 인코더(340) 또는 모듈 형태의 인코더(340)일 수 있으며, 다른 실시예로서 컨텐츠 인코딩 장치(112, 212) 외부에 별도의 인코딩 장치(440)로 존재할 수 있다.
인코더가 컨텐츠 인코딩 장치(112, 212) 내부에 포함된 칩 형태의 인코더(340) 또는 모듈 형태의 인코더(340)인 경우, ASIC(application-specific integrated circuit) 칩, FPGAs(field-programmable gate arrays) 또는 프로그램 가능 논리 장치(programmable-logic device) 자체 또는 그 일부가 될 수 있고, 다른 일부에 제어부(330)가 구현될 수 있다.
다른 실시예에서, 인코더는 범용적인 프로세서의 일부일 수 있고 제어부 또한 해당 프로세서의 다른 일부일 수 있다.
제어부(330, 430) 또는 인코더(340, 440)는 종래의 범용적 프로세서들일 수 있다. 상기 제어부(330, 430) 또는 인코더(340, 440)는 마이크로 프로세서, 마이크로 컨트롤러, RISC(reduced instruction set computer) 프로세서, CISC(complex instruction set computer) 프로세서, SIMD (single instruction multiple data) 프로세서, 시그널 프로세서(signal processor), 중앙 처리 장치(central processing unit: CPU), 산술 논리 유닛(arithmetic logic unit: ALU), 비디오 디지털 시그널 프로세서(video digital signal processor: VDSP) 등일 수 있다.
또한 상기 제어부(330, 430) 또는 인코더(340, 440)는 ASICs(application specific integrated circuits), FPGAs(field programmable gate arrays), PLDs(programmable logic devices), CPLDs(complex programmable logic devices), RFICs(radio frquency integrated circuits), ASSPs(application specific standard products)로 구현될 수 있다.
제어부(330, 430)가 인코더로 하여금 컨텐츠 데이터를 복수의 중간 스트림으로 인코딩한 후 복수의 중간 스트림으로부터 서로 다른 비트레이트를 가지는 복수의 최종 스트림으로 인코딩하도록 제어 신호를 생성하는 경우, 상기 복수의 중간 스트림 및 상기 복수의 최종 스트림은 모두 적어도 하나의 세그먼트를 포함할 수 있다.
일 실시예에서, 제어부(330, 430)는 인코더로 하여금 상기 복수의 중간 스트림 및 상기 복수의 최종 스트림에 포함된 세그먼트들은 모두 동일한 인코딩 품질 파라미터 값을 가지도록 제어 신호를 생성할 수 있다.
일 실시예에서, 제어부(330, 430)는 인코더로 하여금 상기 복수의 최종 스트림 중 각 최종 스트림은 서로 다른 해상도를 갖는 복수의 세그먼트들을 포함하도록 제어 신호를 생성할 수 있다.
일 실시예에서, 제어부(330, 430)는 인코더로 하여금 상기 복수의 중간 스트림에서 서로 다른 중간 스트림의 세그먼트들은 서로 해상도가 다르고, 동일한 중간 스트림의 세그먼트들은 서로 해상도가 동일하도록 제어 신호를 생성할 수 있다.
일 실시예에서, 제어부(330, 430)는 인코더로 하여금 상기 복수의 최종 스트림의 어느 한 최종 스트림은 서로 다른 해상도를 가지는 세그먼트들을 포함하도록 제어 신호를 생성할 수 있다.
일 실시예에서, 제어부(330, 430)는 중간 스트림들의 세그먼트에 대해서 품질 측정을 수행하고, 상기 품질 측정의 결과에 기반하여 복수의 최종 스트림을 구성하도록 제어 신호를 생성할 수 있다.
품질 측정은 PSNR(Peak Signal-to-noise ratio), SSIM(Structural Similarity Index), MS-SSIM(Multi-scale Structural Similarity) 또는 VMAF(Video Multimethod Assessment Fusion) 등의 영상 품질 평가 방법을 사용할 수 있으며, 영상의 품질을 측정하는 방법으로서 결과를 비교 가능한 것이라면 특별히 그 종류를 한정하지 않고, 품질 측정 결과에 기반하여 최종 스트림을 구성하는 동작은 아래에서 자세히 설명한다.
도 5는 컨텐츠 인코딩 장치(112, 212)의 인코딩 동작 방법을 개략적으로 도시한다.
컨텐츠 인코딩 장치(112, 212)는 컨텐츠 원본(메자니 파일, mezzanine file)을 제공 또는 전송 받거나, 스포츠 중계 방송, 콘서트 실황 중계 등의 라이브 스트림(live stream), TV 프로그램, 영화 등의 미리 기록된 컨텐츠 또는 광고 컨텐츠를 전송 또는 제공 받아 인코딩하기 위하여 이를 로딩(loading)(S510)할 수 있다.
컨텐츠 인코딩 장치(112, 212)는 컨텐츠 데이터를 도 6과 같은 복수의 중간 스트림으로 인코딩 하도록 인코더 제어 신호를 생성(S520)할 수 있다.
일 실시예에서, 컨텐츠 인코딩 장치(112, 212)는 인코딩의 최종 결과물로서 생성될 최종 스트림의 개수 이상으로 중간 스트림을 인코딩하도록 인코더 제어 신호를 생성할 수 있고, 컨텐츠 인코딩 장치(112, 212)는 컨텐츠 데이터를 중간 스트림으로 인코딩할 때, 서로 다른 중간 스트림의 세그먼트들은 서로 다른 해상도를 갖는 중간 스트림으로 인코딩되도록 인코더 제어 신호를 생성할 수 있다.
예를 들어, 최종 스트림을 3개의 서로 다른 비트레이트를 가지는 최종 스트림으로 생성할 경우, 컨텐츠 인코딩 장치(112, 212)는 컨텐츠 데이터를 3개, 4개 또는 5개 이상의 중간 스트림으로 인코딩하도록 인코더 제어 신호를 생성할 수 있고, 도 6은 3개의 최종 스트림을 생성하기 위해 4개의 중간 스트림을 생성한 실시예를 도시한다.
다른 예로서, 3개의 최종 스트림을 생성할 때 5개 또는 6개의 중간 스트림을 생성할 수도 있으며, 이는 중간 스트림의 해상도 및 인코딩 품질 파라미터의 개수의 조합에 따라 달라질 수 있다.
예를 들어, 컨텐츠 데이터를 3Mbps의 비트레이트를 갖는 상위 스트림, 1Mbps의 비트레이트를 갖는 중위 스트림, 0.5Mbps의 비트레이트를 갖는 하위 스트림의 최종 스트림을 생성하고자 할 때, 컨텐츠 인코딩 장치는 4가지 해상도를 가지고 인코딩 품질 파라미터로서 QP, RF를 모두 사용하고자 하면 첫 번째 해상도를 가지고 동일한 QP 값을 갖는 스트림, 첫 번째 해상도를 가지고 동일한 RF 값을 갖는 스트림, 두 번째 해상도를 가지고 동일한 상기 QP 값을 갖는 스트림, 두 번째 해상도를 가지고 동일한 상기 RF 값을 갖는 스트림, 세 번째 해상도를 가지고 동일한 상기 QP 값을 갖는 스트림, 세 번째 해상도를 가지고 동일한 상기 RF 값을 갖는 스트림, 네 번째 해상도를 가지고 동일한 상기 QP 값을 갖는 스트림, 네 번째 해상도를 가지고 동일한 상기 RF 값을 갖는 스트림의 총 8개 중간 스트림으로 인코딩 하도록 제어 신호를 생성할 수 있다. 이 경우, 컨텐츠 인코딩 장치는 상기 총 8개 중간 스트림들의 세그먼트들로부터 3Mbps의 비트레이트를 갖는 상위 스트림, 1Mbps의 비트레이트를 갖는 중위 스트림, 0.5Mbps의 비트레이트를 갖는 하위 스트림의 최종 스트림을 구성하도록 제어 신호를 생성할 수 있다.
도 6을 참조하면, 4개의 중간 스트림을 생성한 실시예로서, 컨텐츠 인코딩 장치(112, 212)는 QP 값 또는 RF 값의 인코딩 품질 파라미터가 서로 동일한 4개의 중간 스트림으로서 1080p(편의상 세그먼트에 포함된 프레임의 가로 해상도만 표시한다.) 해상도를 갖는 첫 번째 중간 스트림(610), 720p 해상도를 갖는 두 번째 중간 스트림(620), 480p 해상도를 갖는 세 번째 중간 스트림(630) 및 320p 해상도를 갖는 네 번째 중간 스트림(640)을 도시한다.
각 중간 스트림(610, 620, 630, 640)은 QP 값 또는 RF 값의 인코딩 품질 파라미터 값이 동일하고, 동일한 중간 스트림의 세그먼트들은 서로 해상도가 동일할 수 있다.
컨텐츠 인코딩 장치(112, 212)는 QP 값 또는 RF 값의 인코딩 품질 파라미터 값(또는 그 범위)이 동일한 복수의 중간 스트림을 각 중간 스트림별로 동일한 해상도를 갖도록 인코더 제어 신호를 생성함으로써, 각 중간 스트림의 세그먼트는 데이터 크기(비트레이트)가 동일한 중간 스트림의 세그먼트들이라고 하여도 서로 다를 수 있다.
즉, 각 중간 렌디션은 해상도 및 QP 값(또는 QP 값의 범위)이 고정되어 인코딩되므로 컨텐츠 원본의 내용의 영상 특성에 따라 각기 다른 데이터 크기(비트레이트)로 인코딩될 수 있다. 예를 들어, 움직임이 많은 장면 또는 복잡한 장면 등은 세그먼트 파일 크기가 증가하고, 그 반대의 경우는 세그먼트 파일 크기가 작아지게 된다.
예를 들어, 도 6를 참조하면, 첫 번째 중간 스트림(610)의 각 세그먼트들은 1080p의 동일한 해상도와 동일한 QP 값 또는 RF 값의 인코딩 품질 파라미터 값(또는 그 값의 범위)을 가지나 컨텐츠 원본의 내용의 영상 특성에 따라 첫 번째 세그먼트(611)는 파일 크기가 5Mbps이나 두 번째 세그먼트(612)는 파일 크기가 3Mbps이고 세 번째 세그먼트(613)는 파일 크기가 다시 5Mbps를 갖는 중간 스트림의 세그먼트로 인코딩 될 수 있다.
동일한 컨텐츠 데이터를 해상도만 다르게 인코딩한 것이므로, 중간 스트림의 세그먼트 파일 크기 변화의 양상은 두 번째 중간 스트림(620), 세 번째 중간 스트림(630) 및 네 번째 중간 스트림(640)에도 같게 나타나는 등 동일한 양상을 보일 수 있다.
컨텐츠 인코딩 장치(112, 212)는 복수의 중간 스트림을 도 7과 같은 복수의 최종 스트림으로 구성하도록 제어 신호를 생성(S530)할 수 있다.
복수의 중간 스트림으로부터 최종 스트림을 구성하는 것은 인코더 또는 제어부 자체에 의해서 수행되거나 다른 최종 스트림 구성부(미도시) 또는 별도의 최종 스트림 구성 장치(미도시)에 의해서 수행될 수도 있다.
컨텐츠 인코딩 장치(112, 212)는 최종 스트림을 구성할 때, 각 중간 스트림의 세그먼트들 중에서 동일한 비트레이트 값의 범위를 가지는 세그먼트들은 동일한 최종 스트림으로 구성되도록 제어 신호를 생성할 수 있다.
예를 들어, 도 6 및 도 7을 참조하면, 도 6의 4개의 중간 스트림들(610, 620, 630, 640)로부터 각각 3Mbps, 1Mbps, 0.5Mbps의 비트레이트를 가지는 상위 스트림(710), 중위 스트림(720), 하위 스트림(730)의 복수의 최종 스트림을 구성한다면, 두 번째 중간 스트림(620)의 첫 번째 세그먼트(621)로 최종 상위 스트림(710)의 첫 번째 세그먼트(711)를 구성하고, 세 번째 중간 스트림(630)의 첫 번째 세그먼트(631)로 최종 중위 스트림(720)의 첫 번째 세그먼트(721)를 구성하고, 네 번째 중간 스트림(640)의 첫 번째 세그먼트(641)로 최종 하위 스트림(730)의 첫 번째 세그먼트(731)를 구성할 수 있다.
이 후 중간 스트림들(610, 620, 630, 640)의 두 번째 세그먼트들(612, 622, 632, 642)이 생성된 후 첫 번째 중간 스트림(610)의 두 번째 세그먼트(612)로 최종 상위 스트림(710)의 두 번째 세그먼트(712)를 구성하고, 두 번째 중간 스트림(620)의 두 번째 세그먼트(622)로 최종 중위 스트림(720)의 두 번째 세그먼트(722)를 구성하고, 세 번째 중간 스트림(630)의 두 번째 세그먼트(632)로 최종 하위 스트림(730)의 두 번째 세그먼트(732)를 구성할 수 있다.
마찬가지 방법으로, 중간 스트림들(610, 620, 630, 640)의 세 번째 세그먼트들(613, 623, 633, 643)에 기반하여 최종 스트림들(710, 720, 730)의 세 번째 세그먼트들(713, 723, 733)을 구성할 수 있다.
일 실시예에서, 컨텐츠 인코딩 장치(112, 212)는 복수의 중간 스트림들에 포함된 세그먼트들에 기반하여 복수의 최종 스트림을 구성할 때, 중간 스트림의 각 세그먼트에 대해 PSNR, SSIM, MS-SSIM 또는 VMAF 측정 방법을 이용해 품질 측정을 수행하고, 측정된 중간 스트림 세그먼트의 품질에 기반하여 최종 스트림을 구성하도록 제어 신호를 생성할 수 있고, 아래에서 자세히 설명한다.
컨텐츠 인코딩 장치(112, 212)는 최종 스트림을 구성하도록 제어 신호를 생성할 때, 각 중간 스트림의 동일한 비트레이트 값의 범위를 가지는 세그먼트들을 재생 순서가 겹치지 않도록 제어 신호를 생성할 수 있다.
예를 들어, 컨텐츠 데이터를 인코딩한 것이므로 각 중간 스트림에서 동일한 중간 스트림의 세그먼트들은 컨텐츠 데이터의 서로 다른 재생 부분에 대응된다. 즉, 도 6의 첫 번째 중간 스트림(610)의 각 세그먼트들(611, 612, 613)은 컨텐츠 데이터의 서로 다른 재생 부분에 관련되고, 이는 두 번째 중간 스트림(620), 세 번째 중간 스트림(630), 네 번째 중간 스트림(640)도 마찬가지이다.
도 6과 같은 중간 스트림으로부터 최종 스트림을 구성하는 경우, 중간 스트림의 첫 번째 세그먼트들(611, 621, 631, 641)에 기반해서 최종 스트림의 첫 번째 세그먼트들(701)을 구성하고, 중간 스트림의 두 번째 세그먼트들(612, 622, 632, 642)에 기반해서 최종 스트림의 두 번째 세그먼트들(702)을 구성하고, 중간 스트림의 세 번째 세그먼트들(613, 623, 633, 643)에 기반해서 최종 스트림의 세 번째 세그먼트들(703)을 구성하므로, 역시 각 최종 스트림들에서 동일한 스트림의 각 세그먼트들은 컨텐츠 데이터의 서로 다른 재생 부분에 대응되고, 재생 순서가 겹치지 않게 된다.
즉, 최종 스트림을 구성할 때 컨텐츠 데이터의 제1 부분에 대응되는 어느 한 중간 스트림의 세그먼트를 어느 한 최종 스트림에 포함시켰다면, 컨텐츠 데이터의 동일한 제1 부분에 대응되는 중간 스트림의 다른 세그먼트는 상기 동일한 최종 스트림에 포함될 수 없다.
컨텐츠 인코딩 장치(112, 212)는 복수의 최종 스트림에 대해서 각 최종 스트림에 포함된 세그먼트들의 해상도 변화 양상이 서로 동일하게 구성되도록 제어할 수 있다.
예를 들어 도 7을 참조하면, 첫 번째 최종 스트림(710)의 각 세그먼트들은 첫 번째 세그먼트(711)는 해상도가 720p이나 두 번째 세그먼트(712)는 해상도가 1080p이고 세 번째 세그먼트(713)는 해상도가 다시 720p일 수 있다.
이러한 세그먼트의 해상도 변화의 양상은 두 번째 최종 스트림(720) 및 세 번째 최종 스트림(730) 에도 같게 나타남을 알 수 있다.
컨텐츠 인코딩 장치(112, 212)는 컨텐츠 데이터의 재생 시간 전부에 해당하는 컨텐츠 데이터를 복수의 중간 스트림으로 모두 인코딩한 후에 최종 스트림을 구성하도록 제어 신호를 생성할 수 있고, 다른 실시예에서는 컨텐츠 데이터의 재생 시간 일부에 해당하는 컨텐츠 데이터를 복수의 중간 스트림 일부로 인코딩한 후에 최종 스트림의 일부를 구성하도록 제어 신호를 생성할 수도 있다.
예를 들어, 컨텐츠 데이터의 일정 재생 시간에 해당하는 부분을 인코딩하여 각 중간 스트림의 첫 번째 세그먼트들이 인코딩된 후, 각 최종 스트림의 첫 번째 세그먼트를 구성하고, 다시 컨텐츠 데이터의 다른 일정 재생 시간에 해당하는 부분을 인코딩하여 각 중간 스트림의 두 번째 세그먼트들이 인코딩된 후, 각 최종 스트림의 두 번째 세그먼트를 구성하도록 제어 신호를 생성할 수 있다. 이하에서 도 9 내지 도 15를 참조하여 자세히 설명한다.
이후, 컨텐츠 인코딩 장치(112, 212)는 생성된 복수의 최종 스트림 중 적어도 어느 하나 또는 전체 최종 스트림을 오리진 서버(미도시), CDN 장치 또는 사용자 단말로 전송(S540)할 수 있다.
도 9 내지 도 15는 라이브 스트림 또는 메자니 파일의 컨텐츠 데이터로부터 짧은 시간 간격(예를 들면, 한 세그먼트의 재생 시간)을 두고 거의 리얼 타임으로 중간 스트림을 인코딩하고 이에 기반하여 최종 스트림을 구성하는 실시예를 도시한다.
컨텐츠 인코딩 장치(920)는 원본 데이터의 재생시간의 첫 번째 부분에 해당하는 부분(911)을 입력 받은 후, 서로 다른 해상도를 가지고 인코딩 품질 파라미터는 동일한 4개의 중간 스트림(930, 940, 950, 960)의 첫 번째 세그먼트들(931, 941, 951, 961)로 인코딩하도록 제어할 수 있다.
도 9 내지 도 15는 서로 다른 해상도를 가지고 인코딩 품질 파라미터 1개가 동일한 조합으로 4개의 중간 스트림을 생성하는 것을 예시하지만, 해상도와 인코딩 품질 파라미터 개수의 조합으로 더 많은 중간 스트림들을 생성할 수 있음은 앞서 설명한 것과 마찬가지이다.
컨텐츠 인코딩 장치(920)는 중간 스트림(930, 940, 950, 960)의 첫 번째 세그먼트들(931, 941, 951, 961)이 생성된 후 최종 스트림의 각 비트레이트 기준에 적합한 세그먼트들이 각 최종 스트림에 포함되도록 중간 스트림(930, 940, 950, 960)의 첫 번째 세그먼트들(931, 941, 951, 961)에 기반하여 각 최종 스트림의 첫 번째 세그먼트들을 구성하도록 제어할 수 있다.
예를 들어, 매니페스트에 3 가지의 서로 다른 비트레이트를 가지는 최종 스트림들의 비트레이트 기준이 각각 3Mbps, 1Mbps, 0.5Mbps라면, 두 번째 중간 스트림(940)의 3Mbps의 비트레이트를 가지는 첫 번째 세그먼트(941)로 최종 상위 스트림(1010)의 첫 번째 세그먼트(1011)를 구성하고, 세 번째 중간 스트림(950)의 1Mbps의 비트레이트를 가지는 첫 번째 세그먼트(951)로 최종 중위 스트림(1020)의 첫 번째 세그먼트(1021)를 구성하고, 네 번째 중간 스트림(960)의 0.5Mbps의 비트레이트를 가지는 첫 번째 세그먼트(961)로 최종 하위 스트림(1030)의 첫 번째 세그먼트(1031)를 구성할 수 있다.
도 9에서 중간 스트림들의 각 첫 번째 세그먼트들의 비트레이트가 5Mbps, 3Mbps, 1Mbps, 0.5Mbps로 인코딩되는 것을 예시하였지만, 컨텐츠 데이터의 영상 특성과 인코딩 파라미터의 설정에 따라 중간 스트림들의 각 세그먼트는 최종 스트림들의 비트레이트 기준에 정확하게 일치하지 않고 중간 스트림들의 각 첫 번째 세그먼트들의 비트레이트가 5.1Mbps, 2.5Mbps, 0.8Mbps, 0.3Mbps로 인코딩될 수 있으며, 이 경우 매니페스트에 3 가지의 서로 다른 비트레이트를 가지는 최종 스트림들의 비트레이트 기준 3Mbps, 1Mbps, 0.5Mbps은 각각 각각 1Mbps 초과 3Mbps 이하, 0.5Mbps 초과 1Mbps 이하, 0.5Mbps 이하의 범위 기준으로 구성되도록 제어될 수 있다.
일 실시예에서, 도 8을 참조하면, 컨텐츠 인코딩 장치(920)는 복수의 중간 스트림들에 포함된 세그먼트들에 기반하여 복수의 최종 스트림을 구성할 때, 중간 스트림의 각 세그먼트에 대해 PSNR, SSIM, MS-SSIM 또는 VMAF 측정 방법을 이용해 품질 측정을 수행(S830)하고, 측정된 중간 스트림 세그먼트의 품질에 기반하여 최종 스트림을 구성하도록 제어 신호를 생성(S840)할 수 있다. 이 경우 컨텐츠 데이터를 로딩하는 동작(S810), 중간 스트림으로 컨텐츠 데이터를 인코딩하도록 제어하는 신호를 생성하는 동작(S820)은 앞서 설명한 동작들과 동일할 수 있다.
예를 들어, 컨텐츠 인코딩 장치(920)는 원본 데이터의 재생시간의 첫 번째 부분에 해당하는 부분을 입력 받은 후, 서로 다른 해상도를 가지고 인코딩 품질 파라미터는 동일한 4개의 중간 스트림(930, 940, 950, 960)의 첫 번째 세그먼트들(931, 941, 951, 961)로 인코딩하도록 제어하고, 중간 스트림(930, 940, 950, 960)의 첫 번째 세그먼트들(931, 941, 951, 961)이 생성된 후 각 중간 스트림(930, 940, 950, 960)의 첫 번째 세그먼트들(931, 941, 951, 961)에 대해서 PSNR, SSIM, MS-SSIM 또는 VMAF 측정 방법을 이용해 품질을 측정할 수 있다.
매니페스트에 도 11과 같이 2 가지의 서로 다른 비트레이트를 가지는 최종 스트림들(1010a, 1020a)의 비트레이트 기준이 각각 5Mbps, 1Mbps 인 경우, 첫 번째 중간 스트림(930)의 5Mbps의 비트레이트를 가지는 첫 번째 세그먼트(931)가 미리 설정된 품질기준에 적합하다면 최종 상위 스트림(1010)의 첫 번째 세그먼트(1011a)를 구성할 수 있다.
이 후, 1Mbps의 비트레이트 기준을 가지는 최종 스트림(1020a)의 첫 번째 세그먼트를 구성하기 위해, 해당 비트레이트 기준을 만족하는 세 번째 중간 스트림(950)의 첫 번째 세그먼트(951)의 품질을 측정하였으나 이를 만족하지 못하는 경우, 네 번째 중간 스트림(960)의 첫 번째 세그먼트(961)의 품질을 측정하여 만족하는 경우 이를 최종 스트림(1020a)의 첫 번째 세그먼트(1021a)로 구성할 수 있다.
다른 실시예에서, 중간 스트림을 2 가지의 인코딩 품질 파라미터 별로 인코딩하도록 제어하는 경우, 어느 한 인코딩 품질 파라미터(예를 들어 QP)를 동일하게 설정한 중간 스트림의 세그먼트가 품질 기준에 부적합하고, 다른 인코딩 품질 파라미터(예를 들어 RF)를 동일하게 설정한 중간 스트림의 세그먼트가 품질 기준에 적합하다면 이를 최종 스트림의 세그먼트로 구성하도록 제어할 수 있다.
도 12를 참조하면, 이후, 컨텐츠 인코딩 장치(920)는 원본 데이터의 재생시간의 두 번째 부분에 해당하는 부분(912)을 입력 받은 후, 서로 다른 해상도를 가지고 인코딩 품질 파라미터는 동일한 4개의 중간 스트림(930, 940, 950, 960)의 두 번째 세그먼트들(932, 942, 952, 962)로 인코딩하도록 제어할 수 있고, 생성된 중간 스트림(930, 940, 950, 960)의 두 번째 세그먼트들(932, 942, 952, 962)에 기반하여 도 13과 같이 비트레이트 기준이 각각 3Mbps, 1Mbps, 0.5Mbps인 최종 스트림들(1010, 1020, 1030)의 두 번째 세그먼트들(1012, 1022, 1032)로 구성하도록 제어할 수 있다.
이 경우에도 앞서 설명한 것처럼 중간 스트림들의 두 번째 세그먼트들의 품질 측정에 기반하여 최종 스트림들의 두 번째 세그먼트들을 구성하도록 제어할 수 있는 것은 당연하다.
도 14를 참조하면, 이후, 컨텐츠 인코딩 장치(920)는 원본 데이터의 재생시간의 세 번째 부분에 해당하는 부분(913)을 입력 받은 후, 서로 다른 해상도를 가지고 인코딩 품질 파라미터는 동일한 4개의 중간 스트림(930, 940, 950, 960)의 세 번째 세그먼트들(933, 943, 953, 963)로 인코딩하도록 제어할 수 있고, 생성된 중간 스트림(930, 940, 950, 960)의 두 번째 세그먼트들(933, 943, 953, 963)에 기반하여 도 15와 같이 비트레이트 기준이 각각 3Mbps, 1Mbps, 0.5Mbps인 최종 스트림들(1010, 1020, 1030)의 세 번째 세그먼트들(1013, 1023, 1033)로 구성하도록 제어할 수 있다.
따라서, 라이브 스트림과 같이 거의 실시간으로 사용자 단말로 컨텐츠 스트리밍이 필요한 경우에도, 원본 라이브 스트림의 재생과 거의 동일하게 중간 스트림을 인코딩하고 이에 기반하여 최종 스트림을 구성할 수 있다.
일 실시예에서, 컨텐츠 인코딩 장치는 컨텐츠 데이터로부터 최종 생성된 복수의 최종 스트림에 기반하여 상기 복수의 최종 스트림을 요청 가능한 접속 경로를 포함하여 매니페스트 파일을 생성할 수 있다.
상기 복수의 최종 스트림의 각 스트림은 도 7과 같은 서로 다른 해상도를 가진 복수의 세그먼트들을 포함할 수 있다.
이 경우, 매니페스트 파일에는 복수의 최종 스트림들에 대한 비트레이트 정보, 컨텐츠의 재생시간, 접속 경로(URL 등), 인코딩 타입, 세그먼트의 해상도 등에 대한 정보를 포함할 수 있다.
일 실시예에서 컨텐츠 인코딩 장치는 주기적으로 매니페스트 파일을 생성할 수 있고, 이 경우 매니페스트 파일은 생성된 최종 스트림의 각 세그먼트와 관련될 수 있다.
예를 들어, 최종 상위 스트림(710)의 첫 번째 세그먼트(711)의 비트레이트 정보, 컨텐츠의 재생시간, 접속 경로(URL 등), 인코딩 타입, 세그먼트의 해상도 등에 대한 정보를 포함한 제1 매니페스트 파일을 생성 후, 최종 상위 스트림(710)의 두 번째 세그먼트(712)의 비트레이트 정보, 컨텐츠의 재생시간, 접속 경로(URL 등), 인코딩 타입, 세그먼트의 해상도 등에 대한 정보를 포함한 제2 매니페스트 파일을 생성할 수 있다.
매니페스트 파일은 각 최종 스트림의 매니페스트 파일을 지시하는 방식일 수 있고, 각 최종 스트림의 매니페스트 파일은 각 렌디션의 세그먼트 접속 경로, 세그먼트의 재생 시간, 인코딩 타입, 세그먼트의 해상도 등에 대한 정보를 포함할 수 있다.
일 실시예에서, 컨텐츠 인코딩 장치는 각 최종 스트림을 HLS(HTTP Live Streaming), DASH(Dynamic Adaptive Streaming over HTTP) 및 MSS(Microsoft Smooth Streaming) 형식으로 패키징할 수 있다.
일 실시예에서, 컨텐츠 인코딩 장치는 최종 스트림의 매니페스트 파일 또는 세그먼트에 세그먼트의 인코딩 파라미터를 포함시킬 수 있다. 세그먼트에 포함하는 경우 컨텐츠 데이터를 인코딩한 데이터와 구분되도록 각 세그먼트 별로 별도의 세그먼트 헤더(Header)를 생성하여 이를 포함하여 최종 스트림을 생성하도록 제어할 수 있다.
도 6과 같이 동일한 중간 스트림에서는 세그먼트 별로 해상도 등의 인코딩 파라미터가 동일하지만, 도 7과 같이 동일한 최종 스트림이라 하더라도 세그먼트 별로 해상도 등의 인코딩 파라미터가 서로 다를 수 있으므로, 매니페스트 파일 또는 세그먼트 헤더에 이를 포함시키고, 사용자 단말기가 이를 수신하여 재생할 때 직전에 사용한 세그먼트의 인코딩 파라미터와 다른 경우 사용자 단말기의 코덱(codec) 초기화 수행을 한 후 전송 받은 세그먼트를 디코딩하여 재생하도록 할 수 있다. 따라서, 사용자 단말로 전송되는 최종 스트림의 세그먼트 별로 해상도 등의 인코딩 파라미터가 서로 다른 경우에도 사용자 단말기는 이를 이어서 재생할 수 있다.
즉, 본 실시예에 의하면 동일한 최종 스트림(동일한 렌디션)을 계속 전송 받는 경우에도, 종래 기술의 최종 스트림을 변경(다른 렌디션을 수신)하는 경우와 유사하게 인코딩 파라미터가 변경되는 효과가 존재한다.
본 문서에서 사용된 용어 "부", "모듈"은, 예를 들어, 하드웨어, 소프트웨어 또는 펌웨어(firmware) 중 하나 또는 둘 이상의 조합을 포함하는 단위(unit)를 의미할 수 있다. "부", "모듈"은, 예를 들어, 유닛(unit), 로직(logic), 논리블록 (logical block), 부품(component), 또는 회로(circuit) 등의 용어와 바꾸어 사용(interchangeably use)될 수 있다. "부", "모듈"은, 일체로 구성된 부품의 최소 단위 또는 그 일부가 될 수 있다. "부", "모듈"은 하나 또는 그 이상의 기능을 수행하는 최소 단위 또는 그 일부가 될 수도 있다. "부", "모듈"은 기계적으로 또는 전자적으로 구현될 수 있다. 예를 들어, "부", "모듈"은, 알려졌거나 앞으로 개발될, 어떤 동작들을 수행하는 ASIC(application-specific integrated circuit) 칩, FPGAs(field-programmable gate arrays) 또는 프로그램 가능 논리 장치(programmable-logic device) 중 적어도 하나를 포함할 수 있다.
다양한 실시예에 따른 장치(예: 모듈들 또는 그 기능들) 또는 방법(예: 동작들)의 적어도 일부는, 예컨대, 프로그램 모듈의 형태로 컴퓨터로 읽을 수 있는 저장매체(computer-readable storage media)에 저장된 명령어로 구현될 수 있다. 상기 명령어가 프로세서(예: 상기 프로세서)에 의해 실행될 경우, 상기 하나 이상의 프로세서가 상기 명령어에 해당하는 기능을 수행할 수 있다. 컴퓨터로 읽을 수 있는 저장매체는, 예를 들어, 상기 메모리가 될 수 있다.
컴퓨터로 판독 가능한 기록 매체는, 하드디스크, 플로피디스크, 마그네틱 매체(magnetic media)(예: 자기테이프), 광기록 매체(optical media)(예: CD-ROM(compact disc read only memory), DVD(digital versatile disc), 자기-광 매체(magneto-optical media)(예: 플롭티컬 디스크(floptical disk)), 하드웨어 장치(예: ROM(read only memory), RAM(random access memory), 또는 플래시 메모리 등) 등을 포함할 수 있다. 또한, 프로그램 명령에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함할 수 있다. 상술한 하드웨어 장치는 다양한 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지다.
다양한 실시예에 따른 모듈 또는 프로그램 모듈은 전술된 구성요소들 중 적어도 하나 이상을 포함하거나, 일부가 생략되거나, 또는 추가적인 다른 구성요소를 더 포함할 수 있다. 다양한 실시예에 따른 모듈, 프로그램 모듈 또는 다른 구성요소에 의해 수행되는 동작들은 순차적, 병렬적, 반복적 또는 휴리스틱(heuristic)한 방법으로 실행될 수 있다. 또한, 일부 동작은 다른 순서로 실행되거나, 생략되거나, 또는 다른 동작이 추가될 수 있다.
이상에서 본 명세서의 기술에 대한 바람직한 실시 예가 첨부된 도면들을 참조하여 설명되었다. 여기서, 본 명세서 및 청구 범위에 사용된 용어나 단어는 통상적이거나 사전적인 의미로 한정해서 해석되어서는 아니되며, 본 발명의 기술적 사상에 부합하는 의미와 개념으로 해석되어야 한다.
본 발명의 범위는 본 명세서에 개시된 실시 예들로 한정되지 아니하고, 본 발명은 본 발명의 사상 및 특허청구범위에 기재된 범주 내에서 다양한 형태로 수정, 변경, 또는 개선될 수 있다.

Claims (10)

  1. 컴퓨팅 장치에 의해 수행되는 방법으로서,
    비디오 컨텐츠를 서로 다른 해상도를 가지고 동일한 인코딩 품질 파라미터 값의 범위를 가지는 복수의 중간 스트림으로 인코딩하도록 인코더(encoder) 제어 신호를 생성하는 동작; 및
    각 중간 스트림의 동일한 비트레이트(bitrate) 값의 범위를 가지는 세그먼트(segment)들에 기반하여 복수의 최종 스트림을 구성하도록 제어 신호를 생성하는 동작을 포함하고,
    상기 중간 스트림 및 상기 최종 스트림은 적어도 하나의 세그먼트를 포함하는 인코딩 장치의 인코딩 방법.
  2. 제1 항에 있어서,
    상기 복수의 최종 스트림을 생성하는 동작은,
    각 중간 스트림의 동일한 비트레이트 값의 범위를 가지는 세그먼트들을 재생 순서가 겹치지 않으면서 동일한 최종 스트림으로 구성하는 동작을 포함하고,
    상기 복수의 최종 스트림 중 어느 한 최종 스트림의 복수의 세그먼트들은 대응되는 상기 비디오 컨텐츠의 부분이 서로 다른 인코딩 장치의 인코딩 방법.
  3. 제1 항에 있어서,
    상기 복수의 중간 스트림으로 인코딩하도록 인코더 제어 신호를 생성하는 동작은, 생성될 상기 복수의 중간 스트림의 개수가 상기 복수의 최종 스트림 개수 이상이 되도록 지시하는 동작을 포함하고,
    상기 복수의 최종 스트림을 구성하도록 제어 신호를 생성하는 동작은,
    상기 복수 중간 스트림의 세그먼트 품질 측정을 수행하는 동작; 및
    상기 세그먼트 품질 측정의 결과에 기반하여 상기 복수의 최종 스트림을 구성하도록 제어 신호를 생성하는 동작을 포함하는 인코딩 장치의 인코딩 방법.
  4. 제1 항에 있어서,
    상기 복수의 중간 스트림에서 서로 다른 중간 스트림의 세그먼트들은 서로 해상도가 다르고, 동일한 중간 스트림의 세그먼트들은 서로 해상도가 동일하고,
    상기 복수의 최종 스트림의 어느 한 최종 스트림은 서로 다른 해상도를 가지는 세그먼트들을 포함하는 인코딩 장치의 인코딩 방법.
  5. 제1 항에 있어서,
    상기 복수의 최종 스트림 중 적어도 어느 한 최종 스트림의 서로 다른 세그먼트에 기반하여 각각 제1 매니페스트(manifest) 파일 및 제2 매니페스트 파일을 생성하는 동작을 포함하고,
    상기 제1 매니페스트 파일에 포함된 세그먼트 해상도 정보는 상기 제2 매니페스트 파일에 포함된 세그먼트 해상도 정보와 서로 다른 인코딩 장치의 인코딩 방법.
  6. 제1 항에 있어서,
    상기 복수의 중간 스트림의 각 중간 스트림에 포함된 세그먼트들의 비트레이트 변화 양상은 서로 동일하거나,
    또는, 상기 복수의 최종 스트림의 각 최종 스트림에 포함된 세그먼트들의 해상도 변화 양상은 서로 동일한 인코딩 장치의 인코딩 방법.
  7. 제3 항에 있어서,
    상기 세그먼트 품질 측정의 결과에 기반하여 상기 복수의 최종 스트림을 구성하도록 제어 신호를 생성하는 동작은,
    각 최종 스트림의 비트레이트 기준 및 미리 설정된 품질 측정 기준에 적합한 중간 스트림의 세그먼트에 기반하여 상기 복수의 최종 스트림을 구성하도록 제어 신호를 생성하는 동작인 인코딩 장치의 인코딩 방법.
  8. 비디오 컨텐츠, 인코더(encoder) 제어 신호 생성을 위한 제어 변수 및 인코딩 과정에서 생성되는 중간 데이터 중 적어도 어느 하나를 저장하는 저장부;
    상기 비디오 컨텐츠를 서로 다른 해상도를 가지고 동일한 인코딩 품질 파라미터 값의 범위를 가지는 복수의 중간 스트림으로 인코딩하도록 인코더(encoder) 제어 신호를 생성하고, 각 중간 스트림의 동일한 비트레이트(bitrate) 값의 범위를 가지는 세그먼트(segment)들에 기반하여 복수의 최종 스트림을 구성하도록 제어 신호를 생성하는 제어부; 및
    상기 비디오 컨텐츠를 전송 받거나 상기 최종 스트림 중 적어도 어느 한 최종 스트림을 전송하는 통신부를 포함하고,
    상기 중간 스트림 및 상기 최종 스트림은 적어도 하나의 세그먼트를 포함하는 인코딩 장치.
  9. 제8 항에 있어서,
    상기 복수의 최종 스트림 중 어느 한 최종 스트림의 복수의 세그먼트들은 대응되는 상기 비디오 컨텐츠의 부분이 서로 다르고,
    상기 복수의 최종 스트림의 어느 한 최종 스트림은 서로 다른 해상도를 가지는 세그먼트들을 포함하는 인코딩 장치.
  10. 컴퓨팅 장치에,
    비디오 컨텐츠를 서로 다른 해상도를 가지고 동일한 인코딩 품질 파라미터 값의 범위를 가지는 복수의 중간 스트림으로서 적어도 하나의 세그먼트를 포함하는 상기 복수의 중간 스트림으로 인코딩하도록 인코더(encoder) 제어 신호를 생성하는 동작; 및
    적어도 하나의 세그먼트를 포함하는 복수의 최종 스트림으로서, 각 중간 스트림의 동일한 비트레이트(bitrate) 값의 범위를 가지는 적어도 하나 이상의 세그먼트(segment)들에 기반하여 복수의 최종 스트림을 구성하는 제어 신호를 생성하는 동작을 실행시키기 위한 프로그램을 기록한 컴퓨팅 장치로 읽을 수 있는 매체.
KR1020180171355A 2018-12-27 2018-12-27 컨텐츠 인코딩 장치 및 방법 KR20200081162A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020180171355A KR20200081162A (ko) 2018-12-27 2018-12-27 컨텐츠 인코딩 장치 및 방법
PCT/KR2018/016887 WO2020138568A1 (ko) 2018-12-27 2018-12-28 컨텐츠 인코딩 장치 및 방법
US17/418,506 US20220150585A1 (en) 2018-12-27 2018-12-28 Device and method for encoding content

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180171355A KR20200081162A (ko) 2018-12-27 2018-12-27 컨텐츠 인코딩 장치 및 방법

Publications (1)

Publication Number Publication Date
KR20200081162A true KR20200081162A (ko) 2020-07-07

Family

ID=71128276

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180171355A KR20200081162A (ko) 2018-12-27 2018-12-27 컨텐츠 인코딩 장치 및 방법

Country Status (3)

Country Link
US (1) US20220150585A1 (ko)
KR (1) KR20200081162A (ko)
WO (1) WO2020138568A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220408127A1 (en) * 2021-06-16 2022-12-22 Meta Platforms, Inc. Systems and methods for selecting efficient encoders for streaming media

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7773672B2 (en) * 2006-05-30 2010-08-10 Freescale Semiconductor, Inc. Scalable rate control system for a video encoder
KR101928910B1 (ko) * 2011-08-30 2018-12-14 쏘닉 아이피, 아이엔씨. 복수의 최대 비트레이트 레벨들을 사용하여 인코딩된 비디오를 인코딩하고 스트리밍하기 위한 시스템들 및 방법들
KR102085270B1 (ko) * 2013-08-12 2020-03-05 삼성전자 주식회사 가장 작은 왜곡 값을 갖는 해상도를 선택하는 이미지 처리 방법과 상기 방법을 수행하는 장치들
US9807391B2 (en) * 2014-12-22 2017-10-31 Arris Enterprises Llc Multiple stream video compression in multiple bitrate video encoding
US10298985B2 (en) * 2015-05-11 2019-05-21 Mediamelon, Inc. Systems and methods for performing quality based streaming
US10009659B2 (en) * 2016-03-31 2018-06-26 Disney Enterprises, Inc. System and method for hybrid push-based streaming
WO2018140158A1 (en) * 2017-01-30 2018-08-02 Euclid Discoveries, Llc Video characterization for smart enconding based on perceptual quality optimization
US10778354B1 (en) * 2017-03-27 2020-09-15 Amazon Technologies, Inc. Asynchronous enhancement of multimedia segments using input quality metrics

Also Published As

Publication number Publication date
US20220150585A1 (en) 2022-05-12
WO2020138568A1 (ko) 2020-07-02

Similar Documents

Publication Publication Date Title
JP6337350B2 (ja) ビデオ品質向上
US9351020B2 (en) On the fly transcoding of video on demand content for adaptive streaming
US9866608B2 (en) Processing continuous multi-period content
US20120284371A1 (en) Reducing Fetching Load on Cache Servers in Adaptive Streaming
US20140297804A1 (en) Control of multimedia content streaming through client-server interactions
US9113182B2 (en) Selecting a media content source based on monetary cost
US10298965B2 (en) Selection of a content source based on performance data
US20150095450A1 (en) Utilizing multiple switchable adaptation sets for streaming media data
US9253545B2 (en) Routing media content based on monetary cost
CN112868229A (zh) 用于流传输数据的方法和设备
KR20120035881A (ko) Http 스트리밍의 표현 스위칭시 자연스런 재생을 위한 스케일러블한 http 스트리밍 전송 방법
US11743535B2 (en) Video fragment file processing
US20190069036A1 (en) System and method for distributed control of segmented media
KR20200081161A (ko) 컨텐츠 스트리밍 장치, 시스템 및 방법
Abdullah et al. Survey of transportation of adaptive multimedia streaming service in internet
KR20200081162A (ko) 컨텐츠 인코딩 장치 및 방법
KR20150083407A (ko) 미디어 데이터를 전송하기 위한 가변 크기 데이터 패킷을 송수신하는 방법 및 장치
US11805290B2 (en) Method for managing zapping of digital multimedia contents obtained by HTTP adaptive streaming (HAS), and corresponding management device, multimedia stream reader and computer program
KR102349451B1 (ko) 멀티미디어의 전송 또는 수신 방법 및 그 장치
JP6400163B2 (ja) 受信装置、受信方法、送信装置、送信方法、及びプログラム
Zorrilla et al. End to end solution for interactive on demand 3D media on home network devices
Bresnahan A Live Broadcast 4K Television System Utilizing the MPEG-DASH Adaptive Bit Rate Protocol and Internet Technologies
dos Santos Nunes CASHED: Cloud-Assisted Adaptive and Scalable Video Streaming for Heterogeneous End-User Devices

Legal Events

Date Code Title Description
E601 Decision to refuse application