KR20190133745A - 복잡도 적응형 단일 패스 대 2-패스 트랜스코딩 - Google Patents

복잡도 적응형 단일 패스 대 2-패스 트랜스코딩 Download PDF

Info

Publication number
KR20190133745A
KR20190133745A KR1020197031997A KR20197031997A KR20190133745A KR 20190133745 A KR20190133745 A KR 20190133745A KR 1020197031997 A KR1020197031997 A KR 1020197031997A KR 20197031997 A KR20197031997 A KR 20197031997A KR 20190133745 A KR20190133745 A KR 20190133745A
Authority
KR
South Korea
Prior art keywords
chunk
media
encoder
media item
chunks
Prior art date
Application number
KR1020197031997A
Other languages
English (en)
Other versions
KR102316968B1 (ko
Inventor
샘 존
Original Assignee
구글 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 구글 엘엘씨 filed Critical 구글 엘엘씨
Publication of KR20190133745A publication Critical patent/KR20190133745A/ko
Application granted granted Critical
Publication of KR102316968B1 publication Critical patent/KR102316968B1/ko

Links

Images

Classifications

    • 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/136Incoming video signal characteristics or properties
    • H04N19/14Coding unit complexity, e.g. amount of activity or edge presence estimation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • H04L41/0813Configuration setting characterised by the conditions triggering a change of settings
    • H04L41/0816Configuration setting characterised by the conditions triggering a change of settings the condition being an adaptation, e.g. in response to network events
    • 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
    • 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/103Selection of coding mode or of prediction mode
    • H04N19/109Selection of coding mode or of prediction mode among a plurality of temporal predictive coding modes
    • 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/103Selection of coding mode or of prediction mode
    • H04N19/11Selection of coding mode or of prediction mode among a plurality of spatial predictive coding modes
    • 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/103Selection of coding mode or of prediction mode
    • H04N19/112Selection of coding mode or of prediction mode according to a given display mode, e.g. for interlaced or progressive display mode
    • 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/12Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
    • 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/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • 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/146Data rate or code amount at the encoder output
    • H04N19/152Data rate or code amount at the encoder output by measuring the fullness of the transmission buffer
    • 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
    • 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/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/192Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding the adaptation method, adaptation tool or adaptation type being iterative or recursive
    • H04N19/194Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding the adaptation method, adaptation tool or adaptation type being iterative or recursive involving only two passes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/40Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video transcoding, i.e. partial or full decoding of a coded input stream followed by re-encoding of the decoded output stream

Abstract

구현들은, 개별 청크들의 복잡도에 기반하여 미디어 아이템의 상이한 청크들에 대해 상이한 인코더들을 선택하는 적응적 속도 제어 기술을 개시한다. 방법은, 제1 청크 및 제2 청크를 포함하는 미디어 아이템에 액세스하는 단계; 처리 디바이스에 의해, 제1 청크에 대한 제1 미디어 복잡도 측정치 및 제2 청크에 대한 제2 미디어 복잡도 측정치를 결정하는 단계; 처리 디바이스에 의해, 복수의 인코더들로부터 제1 인코더 및 제2 인코더를 선택하는 단계 ― 제1 인코더는 제1 청크의 제1 미디어 복잡도 측정치에 기반하여 선택되고, 제2 인코더는 제2 청크의 제2 미디어 복잡도 측정치에 기반하여 선택됨 ―; 및 제1 인코더를 사용하여 제1 청크를 인코딩하고 제2 인코더를 사용하여 제2 청크를 인코딩하는 단계를 포함한다.

Description

복잡도 적응형 단일 패스 대 2-패스 트랜스코딩
본 개시내용은 미디어 트랜스코딩 분야에 관한 것으로, 특히, 미디어 아이템의 다수의 청크들의 복잡도를 결정하고, 다수의 상이한 트랜스코더들 사이에서 선택할 때 복잡도를 사용하는 것에 관한 것이다.
콘텐츠 공유 플랫폼들은 사용자들이 비디오, 오디오, 및 다른 사용자가 생성한 콘텐츠를 공유할 수 있게 한다. 콘텐츠 공유 플랫폼은 종종, 사용자가 생성한 콘텐츠(예컨대, 원래의 소스 비디오)를 사용자 디바이스에 고유한 인코딩된 포맷으로부터 콘텐츠 공유 플랫폼에 의해 사용되는 하나 이상의 포맷으로 트랜스코딩한다. 트랜스코딩은, 소스 비디오를 그의 원래의 포맷으로부터 인코딩되지 않은 표현으로 디코딩하고, 그런 다음, 인코딩되지 않은 표현을 새로운 포맷에 대한 인코더로 인코딩하는 것을 수반할 수 있다. 트랜스코딩은, 비디오를 클라이언트들에게 서빙하기 위한 저장 리소스들 및 대역폭 리소스들을 감소시킬 수 있다.
다음은 본 개시내용의 일부 양상들의 기본적인 이해를 제공하기 위한 본 개시내용의 간략화된 개요이다. 이러한 개요는 본 개시내용의 포괄적인 개관이 아니다. 이러한 개요는, 본 개시내용의 주요 또는 핵심 요소들을 식별하거나 본 개시내용의 특정 구현들의 임의의 범위 또는 청구항들의 임의의 범위를 기술하도록 의도되지 않는다. 그것의 유일한 목적은, 이후에 제시되는 더 상세한 설명에 대한 서론으로서 간략화된 형태로 본 개시내용의 일부 개념들을 제시하는 것이다.
본 개시내용의 양상에서, 방법은, 제1 청크 및 제2 청크를 포함하는 미디어 아이템에 액세스하는 단계; 처리 디바이스에 의해, 제1 청크에 대한 제1 미디어 복잡도 측정치 및 제2 청크에 대한 제2 미디어 복잡도 측정치를 결정하는 단계; 처리 디바이스에 의해, 복수의 인코더들로부터 제1 인코더 및 제2 인코더를 선택하는 단계 ― 제1 인코더는 제1 청크의 제1 미디어 복잡도 측정치에 기반하여 선택되고, 제2 인코더는 제2 청크의 제2 미디어 복잡도 측정치에 기반하여 선택됨 ―; 및 제1 인코더를 사용하여 제1 청크를 인코딩하고 제2 인코더를 사용하여 제2 청크를 인코딩하는 단계를 포함한다.
일 구현에서, 방법은 또한, 미디어 아이템을 포착 및 기록한 사용자 디바이스로부터 미디어 아이템을 수신하는 단계, 및 미디어 아이템을 제1 청크 및 제2 청크를 포함하는 복수의 청크들로 세그먼트화하는 단계를 포함할 수 있다. 방법은 또한, 인코딩된 미디어 아이템을 형성하기 위해, 단일 패스 인코더를 사용하여 인코딩된 미디어 아이템의 제1 청크와 2-패스 인코더를 사용하여 인코딩된 미디어 아이템의 제2 청크를 결합하는 것을 수반할 수 있다. 제1 인코더를 선택하는 것은, 제1 청크의 제1 미디어 복잡도 측정치를 미리 결정된 임계값과 비교하는 것, 및 제1 미디어 복잡도 측정치가 미리 결정된 임계치 미만인 것에 대한 응답으로 단일 패스 인코딩을 선택하는 것을 수반할 수 있다.
다른 구현에서, 제1 미디어 복잡도 측정치 및 제2 미디어 복잡도 측정치는 개개의 청크의 공간적 및 시간적 분포를 표시할 수 있다. 미디어 아이템이 비디오일 때, 방법은, 미디어 아이템의 제1 청크에 대한 비디오 코딩 복잡도 측정치 및 제2 청크에 대한 비디오 코딩 복잡도 측정치를 결정하는 것을 수반할 수 있다. 제1 청크의 비디오 코딩 복잡도(VCC) 측정치를 결정하는 것은, 제1 청크의 픽셀들에서의 비트율(R), 프레임률(Fps), 크로마 인자(CF; chroma factor), 프레임 폭(W), 및 프레임 높이(H)를 결정하는 것을 수반할 수 있고, 추가로, 다음의 수학 공식: VCC = R / (W * H * Fps * CF)에 기반하여 비디오 코딩 복잡도에 대한 값을 계산하는 것을 수반할 수 있다.
또 다른 구현에서, 복수의 인코더들은 가변 비트율 인코더들을 포함할 수 있으며, 제1 인코더는 단일 패스 인코더를 포함하고, 제2 인코더는 다중 패스 인코더를 포함한다. 미디어 아이템의 제1 청크는 단일 패스 인코더를 사용하여 인코딩될 수 있고, 미디어 아이템의 제2 청크는 다중 패스 인코더를 사용하여 인코딩될 수 있다. 단일 패스 인코더는 리키 버킷(leaky bucket) 모델을 사용하여 구현되는 비디오 버퍼링 검증기를 포함하는 단일 패스 트랜스코더일 수 있고, 다중 패스 인코더는 제약된 품질 및 한정된 비트율을 포함하는 2-패스 트랜스코더일 수 있다.
본 개시내용은 첨부된 도면들의 도해들에서 제한으로서가 아니라 예로서 예시된다.
도 1은 본 개시내용의 구현에 따른, 예시적인 시스템 아키텍처를 예시하는 블록도이다.
도 2는 본 개시내용의 구현에 따른, 예시적인 컴퓨팅 시스템의 구성요소들 및 모듈들을 예시하는 블록도이다.
도 3은 본 개시내용의 구현에 따른, 트랜스코딩 서버의 예시적인 방법을 예시하는 흐름도이다.
도 4는 본 개시내용의 구현에 따른, 컴퓨터 시스템의 일 구현을 예시하는 블록도이다.
콘텐츠 공유 플랫폼들은 종종, 미디어 아이템들을 공유에 이용가능하게 하도록 처리 및 트랜스코딩되는 수백만 개의 착신 미디어 아이템들을 수신한다. 종래의 미디어 코딩 시스템들을 사용하여 미디어 아이템을 트랜스코딩하는 것은 긴 레이턴시를 초래한다. 트랜스코딩 레이턴시는 종종, 비디오의 해상도, 비트율, 프레임률, 지속기간, 또는 이미지 품질에 따라 증가한다. 예컨대, 단일 비디오 트랜스코더에 의해 3 분 비디오를 고화질(HD) 포맷의 비디오로 트랜스코딩하는 것은, 비디오 콘텐츠의 지속기간보다 10 배 더 오래 걸릴 수 있다. 긴 트랜스코딩 레이턴시는 다운스트림 처리(예컨대, 비디오 분석 또는 스트리밍)를 추가로 지연시켜 사용자 경험이 악화되는 것을 유발할 수 있다. 종래의 비디오 트랜스코더들은 종종, 트랜스코딩에 대한 비디오 콘텐츠 및 코딩 복잡도의 영향을 무시함으로써 레이턴시를 감소시키려고 시도한다. 트랜스코딩에 대한 비디오 콘텐츠 및 복잡도의 영향을 고려하지 않으면서 비디오를 트랜스코딩하는 것은, 비디오 품질 및 사용자 경험을 저하시킬 수 있다.
본 개시내용의 양상들 및 구현들은, 개별 청크들의 복잡도에 기반하여 미디어 아이템의 상이한 청크들에 대해 상이한 인코더들 사이에서 선택함으로써 위의 그리고 다른 결점들을 해결한다. 일 예에서, 기술은 미디어 아이템을 다수의 청크들로 세그먼트화하는 것을 수반할 수 있다. 청크들 중 일부는 제1 인코더에 의해 인코딩될 수 있고, 다른 청크들은 제2 인코더에 의해 인코딩될 수 있다. 어느 청크에 대해 어느 인코더가 사용되는지의 선택은 개개의 청크의 복잡도(예컨대, 움직임의 양, 색상 변동들, 오디오 요동들)에 기반할 수 있다. 청크들의 복잡도는 미디어 복잡도 측정치를 사용하여 표현될 수 있는데, 이는, 이전에 인코딩된 청크의 복잡도를 표시하는 수치 또는 비-수치 값일 수 있다. 미디어 아이템이 동화상(예컨대, 비디오)일 때, 미디어 복잡도 측정치는 비디오 코딩 복잡도 측정치로 지칭될 수 있다. 일 예에서, 비디오 코딩 복잡도 측정치는 특정 청크의 공간적-시간적 분포(예컨대, 콘텐츠 움직임)를 분석함으로써 결정될 수 있다. 다른 예에서, 미디어 복잡도 측정치는, 아래에 논의되는 수학 공식을 사용하여, 프레임 내의 픽셀들의 수에 프레임률을 곱한 것과 다른 정보의 조합으로 청크의 비트율을 나누는 것에 기반하여 근사화될 수 있다. 비트율은, 미리 정의된 품질 수준 또는 수용가능한 품질 수준을 달성하는 데 필요한 비트율일 수 있다. 어느 예에서든, 미디어 복잡도 측정치(예컨대, 비디오 코딩 복잡도)가 분석되어 인코더를 선택할 때 하나 이상의 임계치와 비교될 수 있다.
본원에서 논의되는 시스템들 및 방법들은, 더 복잡한 청크들에 대해 제1 인코더를 그리고 덜 복잡한 청크들에 대해 제2 인코더를 선택할 수 있다. 일 예에서, 제1 인코더는 다중 패스 인코더일 수 있고, 제2 인코더는 단일 패스 인코더일 수 있다. 다중 패스 인코더는 청크를 분석하는 제1 패스를 수행할 수 있고, 후속 패스는 분석 동안 수집된 정보를 사용하여 청크를 인코딩할 수 있다. 단일 패스 인코더는 자신이 청크를 처리하는 동안 분석 및 인코딩할 수 있다. 단일 패스 인코더는 다중 패스 인코더보다 더 적은 컴퓨팅 리소스들을 사용할 수 있지만, 인코딩 결과들은 제1 인코더의 결과들보다 덜 효율적일 수 있다(예컨대, 압축이 더 낮거나 품질이 더 낮음). 향상된 인코딩 효율은 청크들이 더 복잡할 때 사용자에 의해 쉽게 인지될 수 있지만, 청크들이 덜 복잡할 때에는 결과들을 인지하기가 더 어려울 수 있다. 본원에서 논의되는 기술은, 미디어 아이템의 더 복잡한 청크들에 대해 제1 인코더를 선택하고, 덜 복잡한 청크들에 대해 제2 인코더를 선택할 수 있어서, 미디어 아이템의 종합적인 인코딩이 거의 동일한 압축 및 품질을 가지면서 더 리소스 효율적인 방식으로 수행될 수 있다.
본원에서 개시되는 기술은, 그 기술이, 단일 패스 또는 다중 패스 인코더들 중 어느 하나를 단독으로 사용하는 것과 비교하여 컴퓨팅 디바이스가 미디어 아이템들을 더 빠른 속도 또는 더 높은 품질로 인코딩할 수 있게 하기 때문에 유리하다. 일 예에서, 이는, 콘텐츠 공유 플랫폼이 착신 미디어 아이템들을 더 적은 컴퓨팅 리소스들을 사용하여 처리할 수 있게 할 수 있다. 다른 예에서, 이는, 콘텐츠 공유 플랫폼이 착신 미디어 아이템들을 동일한 양의 컴퓨팅 리소스들을 사용하여 더 높은 품질로 처리할 수 있게 할 수 있다.
위에 참조된 방법들 및 시스템들의 다양한 양상들이 제한이 아닌 예들로서 본원에서 아래에 상세히 설명된다. 아래에 제공되는 예들은 종종 단순성 및 간결성을 위해 비디오들을 참조한다. 그러나, 본 개시내용의 교시는 미디어 아이템들에 일반적으로 적용되며, 예컨대, 오디오, 텍스트, 이미지들, 프로그램 명령어들 등을 포함하는 다양한 유형들의 콘텐츠 또는 미디어 아이템들에 적용될 수 있다.
도 1은 본 개시내용의 일 구현에 따른 예시적인 시스템 아키텍처(100)를 예시한다. 컴퓨터 시스템(100)에 대한 다른 아키텍처들이 가능하며, 본 개시내용의 실시예들을 활용하는 컴퓨터 시스템의 구현이 반드시 도시된 특정 아키텍처로 제한되지는 않는다는 것이 유의되어야 한다. 시스템 아키텍처(100)는, 콘텐츠 공유 플랫폼(110), 서버(120), 사용자 디바이스들(130A-Z), 네트워크(140), 및 데이터 저장소(150)를 포함한다.
콘텐츠 공유 플랫폼(110)은, 사용자들의 미디어 아이템들(112A-Z)에 대한 소비, 업로드, 공유, 검색, 승인("좋음"), 싫음, 및/또는 주석달기를 가능하게 할 수 있다. 콘텐츠 공유 플랫폼(110)은, 사용자에게 미디어 아이템들(112A-Z)에 대한 액세스를 제공하기 위해 사용될 수 있는 웹사이트(예컨대, 웹페이지) 또는 애플리케이션 백-엔드 소프트웨어를 포함할 수 있다. 미디어 아이템들(112A-Z)은, 사용자에 의해 선택된 디지털 콘텐츠, 사용자에 의해 이용가능해진 디지털 콘텐츠, 사용자에 의해 업로드된 디지털 콘텐츠, 콘텐츠 제공자에 의해 선택된 디지털 콘텐츠, 방송사에 의해 선택된 디지털 콘텐츠 등일 수 있다. 미디어 아이템들(112A-Z)의 예들은, 디지털 비디오, 디지털 영화들, 디지털 사진들, 디지털 음악, 웹사이트 콘텐츠, 소셜 미디어 업데이트들, 전자 책(ebook)들, 전자 잡지들, 디지털 신문들, 디지털 오디오 북들, 전자 저널들, 웹 블로그들, 초간편 배급(RSS; real simple syndication) 피드들, 전자 만화책들, 소프트웨어 애플리케이션들 등을 포함할 수 있지만 이에 제한되지 않는다. 미디어 아이템들(112A-Z)은 인터넷을 통해 그리고/또는 모바일 디바이스 애플리케이션을 통해 소비될 수 있다. 간결성 및 단순성을 위해, 온라인 비디오(이후 비디오로 또한 지칭됨)가 본 문서 전반에 걸쳐 미디어 아이템의 예로서 사용된다.
본원에서 사용되는 바와 같이, "미디어", "미디어 아이템", "온라인 미디어 아이템", "디지털 미디어", "디지털 미디어 아이템", "콘텐츠" 및 "콘텐츠 아이템"은, 디지털 미디어 아이템을 엔티티에 제시하도록 구성되는 소프트웨어, 펌웨어 또는 하드웨어를 사용하여 실행 또는 로딩될 수 있는 전자 파일을 포함할 수 있다. 일 구현에서, 콘텐츠 공유 플랫폼은 데이터 저장소(150)를 사용하여 미디어 아이템들(112A-Z)을 저장할 수 있다. 일 예에서, 미디어 아이템은 사용자 디바이스(130A)의 사용자에 의해 식별되는 사용자가 생성한 비디오일 수 있거나, 사용자 디바이스들(130A-Z) 중 하나 이상 상에 다른 미디어 아이템을 제시하기 전에, 그 동안에, 또는 그 후에 제시되도록 콘텐츠 공유 플랫폼(110)에 의해 선택된 광고일 수 있다.
미디어 청크들(152A-C)은 특정 미디어 아이템(예컨대, 미디어 아이템(112A))의 상이한 부분들일 수 있다. 도 1에 도시된 예에서, 미디어 청크들(152A-C)은, 미디어 아이템(112A)의 세그먼트화된 콘텐츠를 포함하는 미디어 청크들의 시퀀스일 수 있다. 세그먼트화된 콘텐츠는 미디어 아이템과 동일한 포맷일 수 있거나 상이한 포맷일 수 있다. 시퀀스는 겹치지 않는 미디어 청크들의 연속적인 시퀀스일 수 있다. 예컨대, X의 지속기간을 갖는 미디어 아이템은 4개의 청크로 분할될 수 있고, 청크들 각각은, X/4의 고정 지속기간 또는 X/4의 평균 지속기간(즉, 가변적으로 세그먼트화될 때)을 갖는다. 다른 예에서, 청크들 중 하나 이상이 다른 청크들 중 하나 이상과 겹칠 수 있다. 예컨대, X의 지속기간을 갖는 미디어 아이템은 5개의 청크로 분할될 수 있고, 청크들 중 4개는 위에 논의된 바와 같은 이미지 콘텐츠(예컨대, 비디오 콘텐츠)의 시퀀스를 포함할 수 있고, 하나의 청크는 모든 오디오 콘텐츠를 포함할 수 있다. 이미지 콘텐츠를 갖는 청크들은 서로 겹치지 않을 수 있지만, 오디오 콘텐츠는 4개의 이미지 콘텐츠 청크 각각과 겹칠 수 있다. 일 예에서, 비디오 콘텐츠를 갖는 청크(예컨대, 비디오 청크)는 중간 스트림의 비디오 데이터를 포함할 수 있다. 비디오 청크는 청크 식별 데이터(예컨대, v_id_123)에 의해 식별될 수 있고, 비디오 청크들의 시퀀스 내의 후속 비디오 청크에 대한 식별 데이터는 고정된 양만큼 증분될 수 있다(예컨대, v_id_124).
서버(120)는 콘텐츠 공유 플랫폼(110)의 일부일 수 있거나, 미디어 아이템들(112A-Z)을 처리하기 위한 별개의 디바이스일 수 있다. 서버(120)는, 하나 이상의 컴퓨팅 디바이스(이를테면, 랙마운트 서버, 라우터 컴퓨터, 서버 컴퓨터, 개인용 컴퓨터, 메인프레임 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨터, 데스크톱 컴퓨터 등), 데이터 저장소(예컨대, 하드 디스크들, 메모리들, 데이터베이스들), 네트워크, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소를 포함할 수 있다. 도 1에 도시된 예에서, 서버(120)는, 미디어 세그먼트화 구성요소(122), 복잡도 결정 구성요소(124), 및 트랜스코딩 구성요소(126)를 포함할 수 있다.
미디어 세그먼트화 구성요소(122)는 미디어 아이템들(112A-Z)을 분석할 수 있고, 미디어 아이템들 각각을 하나 이상의 부분으로 세그먼트화할 수 있다. 미디어 세그먼트화 구성요소(122)는 미디어 아이템들(112A-Z) 각각에 액세스할 수 있고, 미디어 아이템을 중간 데이터 구조, 이를테면, 중간 스트림으로 변환할 수 있다. 이어서, 미디어 세그먼트화 구성요소(122)는 미디어 스트림을 하나 이상의 청크(예컨대, 미디어 청크들(152A-C))로 세그먼트화할 수 있다.
복잡도 결정 구성요소(124)는, 아래에서 더 상세히 논의되는 바와 같이, 미디어 아이템을 전체적으로 분석하거나, 미디어 아이템의 일부분, 이를테면, 미디어 아이템의 메타데이터 또는 미디어 아이템의 하나 이상의 청크를 분석함으로써, 미디어 청크들(152A-C)의 복잡도를 결정할 수 있다. 분석은 미디어 청크들 각각에 대한 코딩 복잡도 데이터를 식별할 수 있고, 코딩 복잡도 데이터는, 미디어 아이템의 청크의 이미지 또는 청각 복잡도를 표현할 수 있는 하나 이상의 측정치를 결정하는 데 사용될 수 있다.
트랜스코딩 구성요소(126)는 코딩 복잡도 데이터에 액세스하고 하나 이상의 인코더(예컨대, 트랜스코더)을 선택하여 청크들을 수정할 수 있다. 트랜스코딩 구성요소(126)는, 동일한 미디어 아이템의 다수의 상이한 청크들을 인코딩하기 위해 다수의 상이한 인코더들을 선택할 수 있다. 예컨대, 청크들 중 일부는 제1 트랜스코더를 사용하여 인코딩될 수 있고, 동일한 미디어 아이템의 다른 청크들은 상이한 트랜스코더를 사용하여 인코딩될 수 있다. 일단 미디어 아이템이 트랜스코딩되면, 미디어 아이템은 서버(120) 또는 콘텐츠 공유 플랫폼(110)의 다른 컴퓨팅 디바이스에 의해 하나 이상의 사용자 디바이스(130A-Z)에 제공될 수 있다.
사용자 디바이스들(130A-Z)은 컴퓨팅 디바이스들, 이를테면, 개인용 컴퓨터(PC)들, 랩톱들, 모바일 폰들, 스마트 폰들, 태블릿 컴퓨터들, 넷북 컴퓨터들, 네트워크 연결식 텔레비전들 등을 포함할 수 있다. 일부 예들에서, 사용자 디바이스들(130A-Z)은 또한 "클라이언트 디바이스들"로 지칭될 수 있다. 사용자 디바이스들(130A-Z) 각각은, 미디어 포착 구성요소(132A-Z) 및 미디어 제시 구성요소(134A-Z)를 포함할 수 있다.
미디어 포착 구성요소(132A-Z)는, 사용자 디바이스가 사용자 디바이스에 의해 감지되는 오디오 데이터 및 이미지 데이터를 포착하여 미디어 아이템을 생성할 수 있게 할 수 있다. 미디어 제시 구성요소(134A-Z)는, 사용자 디바이스가 콘텐츠 공유 플랫폼(110)으로부터 수신되는 기록된 미디어 아이템 또는 하나 이상의 미디어 아이템을 제시(예컨대, 재생)할 수 있게 할 수 있다. 미디어 제시 구성요소(134A-Z)는, 이미지들, 비디오들, 오디오, 웹 페이지들, 문서들 등을 제시하는 미디어 뷰어를 포함할 수 있다.
일 예에서, 미디어 뷰어는, 웹 서버에 의해 서빙되는 콘텐츠(예컨대, 하이퍼 텍스트 마크업 언어(HTML) 페이지들과 같은 웹 페이지들, 디지털 미디어 아이템들 등)에 액세스하고, 그를 검색하고, 그를 제시하고/거나 그를 탐색할 수 있는 웹 브라우저일 수 있다. 미디어 뷰어는, 콘텐츠(예컨대, 웹 페이지, 미디어 뷰어)를 사용자에게 렌더링, 표시, 및/또는 제시할 수 있다. 미디어 뷰어는 또한, 웹 페이지(예컨대, 온라인 상인에 의해 판매되는 제품에 관한 정보를 제공할 수 있는 웹 페이지)에 내장된 내장형 미디어 플레이어(예컨대, 플래시(Flash®) 플레이어 또는 HTML5 플레이어)를 표시할 수 있다. 다른 예에서, 미디어 뷰어는, 사용자들이 디지털 미디어 아이템들(예컨대, 디지털 비디오들, 디지털 이미지들, 전자 책들 등)을 볼 수 있게 하는 독립형 애플리케이션(예컨대, 모바일 애플리케이션)일 수 있다. 도 1에 도시된 예에서, 사용자 디바이스들(130A-Z) 각각은, 미디오 공유 디바이스, 미디어 수신자 디바이스, 또는 둘 모두의 조합으로서 기능할 수 있다.
네트워크(140)는, 서버(120) 및 다른 공개적으로 이용가능한 컴퓨팅 디바이스들에 대한 액세스를 사용자 디바이스들(130A-Z) 중 하나 이상에 제공하는 공용 네트워크일 수 있다. 네트워크(140)는, 하나 이상의 광역 네트워크(WAN), 근거리 네트워크(LAN), 유선 네트워크(예컨대, 이더넷 네트워크), 무선 네트워크(예컨대, 802.11 네트워크 또는 Wi-Fi 네트워크), 셀룰러 네트워크(예컨대, 롱 텀 에볼루션(LTE) 네트워크), 라우터, 허브, 스위치, 서버 컴퓨터, 및/또는 이들의 조합을 포함할 수 있다.
데이터 저장소(150)는, 메모리(예컨대, 랜덤 액세스 메모리), 드라이브(예컨대, 하드 드라이브, 플래시 드라이브), 데이터베이스 시스템, 또는 데이터를 저장할 수 있는 다른 유형의 구성요소 또는 디바이스일 수 있다. 데이터 저장소(150)는, 다수의 컴퓨팅 디바이스들(예컨대, 다수의 서버 컴퓨터들)에 걸쳐 있을 수 있는 다수의 저장 구성요소들(예컨대, 다수의 드라이브들 또는 다수의 데이터베이스들)을 포함할 수 있다. 데이터 저장소(150)는, 콘텐츠 공유 플랫폼(110)으로부터 수신되는 미디어 아이템들의 사본들을 저장하는 미디어 캐시를 포함할 수 있다. 일 예에서, 미디어 아이템들(112A-Z) 각각은 콘텐츠 공유 플랫폼(110)으로부터 다운로드된 파일일 수 있고, 미디어 캐시에 로컬로 저장될 수 있다. 다른 예에서, 각각의 미디어 아이템(112)은 콘텐츠 공유 플랫폼(110)으로부터 스트리밍될 수 있고, 그 미디어 아이템이 트랜스코딩될 때까지 서버(120)의 메모리에 단기성 사본으로서 존재할 수 있다.
본 개시내용의 구현들이 서버 및 콘텐츠 공유 플랫폼의 관점에서 논의되지만, 구현들은 또한, 디지털 콘텐츠 및 사용자들 간의 연결들을 제공하는 임의의 유형의 소셜 네트워크에 일반적으로 적용될 수 있다. 본원에서 논의된 시스템들이 사용자들에 관한 개인 정보를 수집하거나 개인 정보를 이용할 수 있는 상황들에서, 사용자들에게는, 콘텐츠 공유 플랫폼이 사용자 정보(예컨대, 사용자의 소셜 네트워크, 소셜 행동들 또는 활동들, 직업, 사용자의 선호도들, 또는 사용자의 현재 위치에 관한 정보)를 수집하는지 여부를 제어하거나, 또는 사용자와 더 관련이 있을 수 있는 콘텐츠 서버로부터 콘텐츠를 수신할지 여부 및/또는 어떻게 수신할지를 제어하는 기회가 제공될 수 있다. 게다가, 특정 데이터는 저장되거나 사용되기 전에 하나 이상의 방식으로 처리될 수 있어서, 개인 식별가능 정보가 제거될 수 있다. 예컨대, 사용자에 대한 어떠한 개인 식별가능 정보도 결정될 수 없도록 사용자의 아이덴티티가 처리될 수 있거나, 위치 정보가 획득되는 사용자의 지리적 위치가 (이를테면, 도시, 우편 번호(ZIP code), 또는 주(state) 수준으로) 일반화될 수 있어서, 사용자의 특정 위치가 결정될 수 없다. 따라서, 사용자는, 사용자에 관한 정보가 어떻게 수집되고 콘텐츠 공유 플랫폼에 의해 어떻게 사용되는지에 대해 제어할 수 있다.
본 개시내용의 구현들에서, "사용자"는 단일 개체로서 표현될 수 있다. 그러나, 본 개시내용의 다른 구현들은, "사용자"가 사용자들의 집합 및/또는 자동화된 소스에 의해 제어되는 엔티티인 것을 포괄한다. 예컨대, 소셜 네트워크에서 커뮤니티로 연합된 개별 사용자들의 집합이 "사용자"로 간주될 수 있다.
도 2는 예시적인 컴퓨터 시스템(200)을 예시하는 블록도이다. 컴퓨터 시스템(200)은 도 1의 서버(120)와 동일하거나 유사할 수 있다. 도 2에 도시된 예에서, 컴퓨터 시스템(200)은, 미디어 세그먼트화 구성요소(122), 복잡도 결정 구성요소(124), 트랜스코딩 구성요소(126), 및 데이터 저장소(150)를 포함한다.
미디어 세그먼트화 구성요소(122)는 미디어 아이템(112)을 분석할 수 있고, 미디어 아이템(112)을 하나 이상의 미디어 청크(152)로 세그먼트화하기 위해 미디어 아이템에 대해 하나 이상의 전처리 단계를 수행할 수 있다. 일 예에서, 미디어 세그먼트화 구성요소(122)는, 중간 스트림 모듈(210) 및 청크 식별 모듈(212)을 포함할 수 있다.
중간 스트림 모듈(210)은 하나 이상의 데이터 저장소(150)로부터의 미디어 아이템(112)에 액세스할 수 있다. 미디어 아이템(112)은, 미디어 아이템(112)을 포착, 기록, 변환, 또는 저장한 컴퓨팅 디바이스 또는 하드웨어 디바이스에 특정한 포맷일 수 있다. 포맷은 데이터를 식별하고 인터리빙하기 위한 특정 멀티미디어 컨테이너 포맷일 수 있고, 비디오 스트림들, 오디오 스트림들, 또는 이들의 조합과 같은 상이한 유형들의 데이터를 포함할 수 있다. 포맷들은, 동화상 전문가 그룹 표준(MPEG)(예컨대, MPEG4), 퀵타임(QuickTime) 파일 포맷, 플래시 비디오(.FLV, F4V), 오디오 비디오 인터리브드(AVI), 윈도우즈 미디어 비디오(WMV), 다른 포맷, 또는 이들의 조합과 동일하거나 유사할 수 있다. 일 예에서, 미디어 아이템(112)은, 미디어 아이템을 포착 및 기록한 사용자 디바이스(예컨대, 모바일 폰, 디지털 영화 카메라)에 특정한 고유한 포맷일 수 있다. 다른 예에서, 미디어 아이템(112)은, 콘텐츠 공유 플랫폼에 특정한 하나 이상의 포맷으로 변환될 수 있다. 어느 예에서든, 미디어 아이템(112)의 포맷은 소스 포맷 또는 원래의 포맷으로 간주될 수 있다. 중간 스트림 모듈(210)은, 미디어 아이템(112)을 원래의 포맷으로부터 하나 이상의 중간 포맷으로 변환할 수 있다. 이는, 미디어 아이템을 원래의 포맷으로부터 중간 포맷으로 디코딩하는 것을 수반할 수 있다. 중간 포맷은 스트림(예컨대, 중간 스트림)의 형태일 수 있고, 고유한 포맷과 상이할 수 있거나, 또는 고유한 포맷과 유사하거나 동일할 수 있다.
청크 식별 모듈(212)은 중간 스트림에 액세스하여 중간 스트림을 하나 이상의 고정 크기 또는 또는 가변 크기 미디어 청크(152)로 세그먼트화할 수 있다. 비디오 트랜스코딩을 예로서 취하면, 청크 식별 모듈(212)은 중간 스트림을 고정 크기 비디오 청크들로 분할할 수 있다. 예컨대, 중간 비디오 스트림의 비디오 데이터의 매 15 초마다 개별 비디오 청크로서 식별될 수 있다. 다른 예에서, 청크 식별 모듈(212)은, 프레임 내(intra-frame) 경계와 같은 기존 경계에 기반하여 중간 스트림을 가변 크기 비디오 청크들로 분할할 수 있다. 어느 예에서든, 청크 식별 모듈(212)은 비디오 콘텐츠를 비디오 청크들로 세그먼트화할 수 있고, 이들 각각은 중간 스트림의 비디오 데이터의 적어도 하나 이상의 이미지를 포함한다.
오디오 콘텐츠를 갖는 중간 스트림의 경우, 청크 식별 모듈(212)은 중간 스트림을 다수의 오디오 청크들로 세그먼트화할 수 있다. 비디오 스트림의 오디오 데이터는 더 높은 주파수(예컨대, 48 kHz)로 샘플링될 수 있으며, 프레임 간(inter-frame) 압축이 요구되지 않는다(예컨대, MP3 오디오 데이터). 추가로, 복잡한 비디오 처리(예컨대, 움직임 추정 및 보상)로 인한 컴퓨팅 측면에서 비용이 많이 드는 비디오 데이터 트랜스코딩과 비교하여, 오디오 트랜스코딩은 훨씬 더 저렴할 수 있다. 일 예에서, 중간 스트림의 오디오 청크들은 중간 스트림의 비디오 청크들보다 클 수 있다. 다른 실시예에서, 중간 스트림의 오디오 콘텐츠는, 세그먼트화되지 않고도 비디오 또는 이미지 콘텐츠로부터 분리될 수 있고, 전체 오디오 콘텐츠는 단일 오디오 청크로서 처리될 수 있다.
복잡도 결정 구성요소(124)는, 미디어 아이템을 전체적으로 분석하거나, 미디어 아이템의 일부분, 이를테면, 미디어 아이템의 메타데이터 또는 미디어 아이템의 하나 이상의 청크를 분석함으로써, 미디어 청크들(152)의 복잡도를 결정할 수 있다. 분석은 청크들에 대한 코딩 복잡도 데이터를 식별할 수 있고, 코딩 복잡도 데이터는, 미디어 아이템의 청크의 청각, 이미지, 또는 비디오 코딩 복잡도를 표현할 수 있는 하나 이상의 미디어 복잡도 측정치를 결정하는 데 사용될 수 있다. 복잡도 결정 구성요소(124)는, 청크 분석 모듈(220) 및 복잡도 측정 모듈(222)을 사용하여 청크에 대한 미디어 복잡도 측정치들(252)을 결정할 수 있다.
미디어 복잡도 측정치들(252)은 하나 이상의 미디어 청크(152)의 코딩 복잡도를 표현하는 수치 또는 비-수치 값들일 수 있고, 미디어 아이템(112)의 특정 청크를 인코딩하는 것의 난이도를 표시할 수 있다. 미디어 복잡도 측정치는, 미디어 아이템(112)의 청크에 포함된 공간적 및/또는 시간적 정보(예컨대, 움직임 데이터)의 양과 직접적으로 또는 간접적으로 관련될 수 있다(예컨대, 비례할 수 있음). 예컨대, 더 높은 미디어 복잡도 측정치는, 비디오 프레임에서의 픽셀 값의 큰 움직임-보상된 휘도 잔차(residual) 값 또는 휘도 편차가 종종 비디오 프레임의 큰 공간적 활동에 대응하기 때문에, 이에 대응할 수 있다. 비디오 프레임의 추출된 시간적 특징들, 이를테면, 움직임 벡터들의 길이/엔트로피 및 프레임 잔차의 에너지가 또한 비디오 프레임에 존재하는 움직임의 양을 반영할 수 있다.
청크 분석 모듈(220)은, 청크와 연관된 콘텐츠 정보를 수집함으로써 청크를 분석할 수 있다. 콘텐츠 정보는 청크의 프레임별 분석을 수행하지 않고도 수집될 수 있는데, 예컨대, 청크 또는 미디어 아이템과 연관된 메타데이터를 분석하는 것이 수반될 수 있다. 청크 분석 모듈(220)은 다수의 소스들로부터 정보를 수집할 수 있고, 정보는, 특정 청크, 대응하는 미디어 아이템, 다른 청크 또는 미디어 아이템, 컴퓨팅 디바이스, 사용자, 다른 정보 또는 이들의 조합과 관련될 수 있다. 콘텐츠 정보는 미디어 아이템 또는 청크의 하나 이상의 이미지 프레임의 치수와 관련될 수 있다. 프레임의 치수들은, 프레임 폭(W), 프레임 높이(H), 종횡비, 다른 치수 또는 이들의 조합을 포함하거나 이와 관련될 수 있다. 프레임의 치수들은, 픽셀 양들(예컨대, 1920 x 1080), 해상도 값들(예컨대, 1080p, 720p, 1080i, 720i), 해상도 모드들(예컨대, 표준 화질(SD), 고화질(HD), 초고화질(UHD)), 다른 값, 또는 이들의 조합으로 표현될 수 있다.
콘텐츠 정보는 청크의 프레임률 또는 비트율에 관한 정보를 포함할 수 있다. 프레임률(예컨대, 프레임 주파수)은 단위 시간에 걸쳐 표시되는 프레임들의 수를 지칭할 수 있고, 초당 프레임들(Fps)로서 표현될 수 있다. 비트율(R) 또는 인코딩 비트율은, 소스 코딩(예컨대, 데이터 압축) 이후에 오디오 또는 비디오를 표현하기 위해 단위 재생 시간 당 사용된 비트 수를 지칭할 수 있다. 비트율은, 가변 비트율 멀티미디어 소스 코딩 방식들의 맥락에서 사용될 때 평균 비트율일 수 있다. 청크의 인코딩 비트율은, 바이트 단위의 청크의 크기를 (초 단위의) 기록의 재생 시간으로 나눈 것에 8을 곱한 것일 수 있다. 일반적으로, 더 높은 비트율은, 청크가 더 복잡한 콘텐츠를 포함함을 표시한다. 이는, 비디오의 공간적 및 시간적 특징들과 그의 대응하는 인코딩 비트율 간에 종종 상관관계가 존재하기 때문일 수 있다.
콘텐츠 정보는 청크의 색차와 관련될 수 있고, 청크의 색상 관련 정보를 전달할 수 있다. 색상 정보는, 디지털 또는 아날로그 비디오그래피에서 색상 이미지 파이프라인의 일부로서 사용되는 색상 공간군(예컨대, YCbCr, YUV)에 기반할 수 있다. 예시적인 색상 공간은 YCbCr(YCC) 색상 공간일 수 있으며, 이는, 연관된 적색 녹색 청색(RGB) 색상 공간으로부터의 수학적 좌표 변환들에 의해 정의될 수 있다. Y(또는 Y')는 루마(luma) 성분일 수 있고, Cb 및 Cr은 각각 청색 차이 크로마 성분 및 적색 차이 크로마 성분일 수 있다.
미디어 아이템들은 종종, 크로마 서브샘플링을 수행함으로써, 인코딩된 미디어 아이템들에서 이용가능한 색상 정보를 감소시킴으로써 압축된다. 크로마 서브샘플링은, 루마 정보(예컨대, 밝기)에 대한 해상도보다 작은 크로마 정보(예컨대, 색상 정보)에 대한 해상도로 이미지를 인코딩할 수 있다. 서브샘플링 방식은 통상적으로 3개의 부분 비율 J:a:b(예컨대, 4:2:2)로서 표현되며, 이는, 폭이 J개의 픽셀이고 높이가 2개의 픽셀일 수 있는 개념적 구역에서 휘도 및 색차 샘플들의 수를 설명한다. "J"는 수평 샘플링 기준을 표현하며, 종종 값이 4이다. "a"는 J개의 픽셀들의 제1 행에서의 색차 샘플들(Cr, Cb)의 수를 표현하고, "b"는 J개의 픽셀들의 제1 행과 제2 행 사이의 색차 샘플들(Cr, Cb)의 변화들의 수를 표현한다.
크로마 서브샘플링의 양은 크로마 인자(CF)에 의해 표현될 수 있다. 일 예에서, 크로마 인자는 4:4:4 베이스라인과 같은 베이스라인에 대해 계산될 수 있다. 그런 다음, 크로마 인자는 인자들 각각을 합산하고 결과를 12(즉, 4 + 4 + 4)로 나눔으로써 결정될 수 있다. 예컨대, 4:2:2 Y'CbCr 크로마 서브샘플링 방식을 사용하는 압축된 이미지는, 4 + 2 + 2가 8이고 8/12가 2/3이기 때문에 2/3 크로마 인자를 가질 수 있다.
복잡도 측정 모듈(222)은 청크 분석 모듈(220)에 의해 결정된 콘텐츠 정보에 액세스할 수 있고, 미디어 청크들(152)에 대한 미디어 복잡도 측정치들(252)을 계산할 수 있다. 미디어 청크가 비디오 콘텐츠를 포함할 때, 미디어 복잡도 측정치는, 픽셀 당 비트(bpp) 값에 기반하여 근사화되는 비디오 코딩 복잡도(VCC) 측정치일 수 있다. 픽셀 당 비트 값은, 청크의 하나 이상의 프레임에 걸쳐 주어진 품질 수준에서 픽셀을 인코딩하는 데 사용되는 비트 수를 표현할 수 있다. 일 예에서, 복잡도 측정 모듈(222)은, 청크의 픽셀들에서의 비트율(R), 프레임률(Fps), 크로마 인자(CF), 프레임 폭(W), 및 프레임 높이(H)를 포함하는 콘텐츠 정보에 액세스함으로써 청크의 비디오 코딩 복잡도(VCC) 측정치를 결정할 수 있다. 그런 다음, 복잡도 측정 모듈(222)은, VCC = R / (W * H * Fps * CF)를 포함하는 수학 공식에 기반하여 비디오 코딩 복잡도에 대한 값을 계산할 수 있다.
복잡도 측정 모듈(222)은, 소스 미디어 청크(152)의 하나 이상의 부가적인 공간적 및/또는 시간적 특징에 대해 VCC 값을 보충하거나 기반함으로써 미디어 복잡도 측정치(252)(예컨대, 비디오 코딩 복잡도 측정치)의 정확도를 향상시킬 수 있다. 예컨대, 미디어 청크(152)의 VCC 값은 부가적으로 또는 대안적으로, 프레임 수준 공간적 편차, 잔차 에너지, 건너뛴 매크로블록(MB)들의 수, 청크의 예측적 매크로블록의 움직임 벡터를 인코딩하기 위한 비트 수에 기반하여 컴퓨팅될 수 있다. 다른 코딩 파라미터들, 이를테면, 소스 미디어 청크(152)를 인코딩하는 것의 범용 작업부하가 VCC 값 계산에서 사용될 수 있다.
복잡도 결정 구성요소(124)는, 미디어 복잡도 측정치들의 결정을 향상시키기 위해 기계 학습 기법들을 포함할 수 있다. 일 예에서, 복잡도 결정 구성요소(124)는, 미디어 아이템의 공간적 및 시간적 특징들과 그의 대응하는 인코딩 비트율 간의 상관관계를 학습하기 위해, 미디어 데이터 저장소로부터 선택된 미디어 아이템들을 사용하여 오프라인으로 훈련될 수 있다. 예컨대, 복잡도 결정 구성요소(124)는, 큰 미디어 세트(예컨대, 비디오 데이터베이스로부터의 20,000개의 비디오)에 대해 선형 회귀 알고리즘을 사용하여 훈련될 수 있다. 선형 회귀 알고리즘은, 선택된 비디오 특징과 정규화된 비트율 간의 관계를 모델링하는 데 사용될 수 있다.
트랜스코딩 구성요소(126)는 코딩 복잡도 데이터에 액세스하고 하나 이상의 인코더(예컨대, 트랜스코더)를 선택하여 청크들을 수정할 수 있다. 트랜스코딩 구성요소(126)는, 동일한 미디어 아이템의 다수의 상이한 청크들을 트랜스코딩하기 위해 다수의 상이한 인코더들을 선택할 수 있다. 예컨대, 청크들 중 일부는 제1 트랜스코더를 사용하여 인코딩될 수 있고, 동일한 미디어 아이템의 다른 청크들은 상이한 트랜스코더를 사용하여 인코딩될 수 있다. 일단 미디어 아이템이 트랜스코딩되면, 미디어 아이템은 서버(120) 또는 콘텐츠 공유 플랫폼(110)의 다른 컴퓨팅 디바이스에 의해 하나 이상의 사용자 디바이스(130)에 제공될 수 있다. 일 예에서, 트랜스코딩 구성요소(126)는, 선택 모듈(230), 개시 모듈(232), 및 결합 모듈(234)을 포함할 수 있다.
선택 모듈(230)은 미디어 청크들(152) 각각에 대한 미디어 복잡도 측정치들(252)에 액세스할 수 있고, 개개의 미디어 복잡도 측정치에 기반하여 미디어 청크에 대한 트랜스코더를 선택할 수 있다. 선택 모듈(230)은, 상이한 인코더들 사이에서 선택할 때 하나 이상의 임계치를 사용할 수 있다. 임계치는, 컴퓨팅 시스템(200) 상에 저장되거나 컴퓨팅 시스템(200)이 액세스가능한 미리 결정된 값에 기반할 수 있고, 미디어 청크 복잡도 임계치에 대한 특정 값(예컨대, 픽셀 당 비트(bpp) 값)에 대응할 수 있다. 미리 결정된 임계치는 설계자, 개발자, 관리자, 다른 사용자, 또는 이들의 조합의 입력에 기반할 수 있다. 미리 결정된 임계치는 기계 학습에 기반하여 생성 또는 조정될 수 있으며, 청크에 대해 인코딩이 완료되기 전의, 그 동안의, 또는 그 후의 피드백에 기반하여 시간 경과에 따라 업데이트될 수 있다.
선택 모듈(230)은, 미디어 청크를 인코딩하기 위해 특정 인코더를 선택할 때, 청크의 미디어 복잡도 측정치를 미리 결정된 임계값과 비교할 수 있다. 미리 결정된 임계치(예컨대, VCC 임계치 또는 bpp 임계치)는 코딩 복잡도의 카테고리들 사이의 분할점을 반영할 수 있다. 일 예에서, 2개의 카테고리가 존재할 수 있고, 미리 결정된 임계 복잡도 값이 2개의 그룹 사이의 분할을 나타낼 수 있다. 임계치 미만의 미디어 복잡도 측정치 값들을 갖는 청크들은 제1 세트의 청크들(예컨대, 더 낮은 복잡도 청크들)과 연관될 수 있고, 임계치와 같거나 그 초과의 미디어 복잡도 측정치 값들을 갖는 청크들은 제2 세트의 청크들(예컨대, 더 높은 복잡도 청크들)과 연관될 수 있다. 선택 모듈(230)은 더 낮은 복잡도와 연관된 청크들을 인코딩하기 위해 단일 패스 인코더/트랜스코더를 선택할 수 있고, 더 높은 복잡도와 연관된 청크들을 인코딩하기 위해 다중 패스 인코더/트랜스코더를 선택할 수 있다. 다른 예들에서, 2개 초과의 복잡도 카테고리가 존재할 수 있다.
개시 모듈(232)은, 미디어 청크 및 선택된 인코더에 기반하여 인코딩 요청을 생성할 수 있다. 인코딩 요청은, 청크 식별자, 미디어 콘텐츠 유형(예컨대, 비디오 청크, 오디오 청크), 인코더 식별자(예컨대, 단일 패스, 다중 패스), 청크 크기, 청크 오프셋(예컨대, 미디어 아이템에 대한 오프셋), 타임스탬프, 소스 포맷, 대상 포맷, 다른 정보, 또는 이들의 조합 중 하나 이상을 포함할 수 있다. 개시 모듈(232)은 개별 미디어 청크(152)에 대한 요청을 제출할 수 있거나, 또는 다수의 미디어 청크들(152)에 대한 요청을 제출할 수 있다. 예컨대, 더 높은 복잡도 청크들 중 하나 이상(예컨대, 제1 세트 전부)을 식별하는 요청 및 더 낮은 복잡도 청크들 중 하나 이상(예컨대, 제2 세트 전부)을 식별하는 다른 요청이 존재할 수 있다. 개시 모듈(232)은, 인코딩을 수행하기 위한 요청들을 컴퓨터 시스템(200) 상의 구성요소에 송신할 수 있거나, 또는 인코딩을 수행하기 위한 요청을 하나 이상의 다른 컴퓨터 시스템(예컨대, 클러스터의 멤버)에 송신할 수 있다. 어느 예에서든, 미디어 청크들의 인코딩은 병렬로, 직렬로, 또는 이들의 조합으로 발생할 수 있다.
결합 모듈(234)은 인코딩된 미디어 청크들에 액세스할 수 있고, 인코딩된 미디어 청크들을 결합하여 인코딩된 버전의 미디어 아이템을 생성할 수 있다. 결합 모듈(234)은 인코딩된 미디어 청크들에 액세스할 수 있고, 인코딩된 청크들을 병합된 미디어 아이템으로 병합할 수 있다. 병합 프로세스는, 미디어 아이템의 시작에 대응하는 청크를 검출하는 것을 수반할 수 있다. 인코딩된 청크가 제1 청크인 것에 대한 응답으로, 결합 모듈(234)은 헤더 정보를 유지할 수 있고, 나머지 청크들(예컨대, 제1 청크들이 아닌 청크들)의 경우, 결합 모듈(234)은 헤더 정보를 제거할 수 있다. 결합 모듈(234)은 인코딩된 청크들을 순서대로 결합할 수 있고, 결합된 미디어 아이템에서의 인코딩된 청크의 위치는 청크 식별에 기반할 수 있다. 예컨대, H.264 비디오 포맷에서의 청크들은 네트워크 추상 계층(NAL) 헤더를 포함할 수 있으며, 결합 모듈(234)은 제1 비디오 청크에 포함된 NAL 헤더를 유지할 수 있고, 후속 비디오 청크들에서의 NAL 헤더를 스트립핑한다.
도 3은 본 개시내용의 하나 이상의 양상에 따른, 동일한 미디어 아이템의 상이한 청크들을 트랜스코딩하기 위해 다수의 상이한 트랜스코더들을 사용하기 위한 방법(300)의 일 예시적인 예의 흐름도를 도시한다. 방법(300) 및 그 방법의 개별 기능들, 루틴들, 서브루틴들, 또는 동작들 각각은, 방법을 실행하는 컴퓨터 디바이스의 하나 이상의 프로세서에 의해 수행될 수 있다. 특정 구현들에서, 방법(300)은 단일 컴퓨팅 디바이스에 의해 수행될 수 있다. 대안적으로, 방법들(300)은 2개 이상의 컴퓨팅 디바이스에 의해 수행될 수 있으며, 각각의 컴퓨팅 디바이스는 방법의 하나 이상의 개별 기능, 루틴, 서브루틴, 또는 동작을 실행할 수 있다. 예시적인 예에서, 방법들(300)을 구현하는 컴퓨팅 디바이스들은 동기화될 수 있다. 대안적으로, 방법(300)을 구현하는 프로세스들은 서로에 대해 비동기식으로 실행될 수 있다.
설명의 단순성을 위해, 본 개시내용의 방법들은 일련의 동작들로서 도시되고 설명된다. 그러나, 본 개시내용에 따른 동작들은, 다양한 순서들로 그리고/또는 동시에, 그리고 본원에서 제시되고 설명되지 않은 다른 동작들과 함께 발생할 수 있다. 또한, 개시된 주제에 따라 방법들을 구현하는 데 있어 예시된 모든 동작들이 요구되지는 않을 수도 있다. 게다가, 관련 기술분야의 통상의 기술자들은, 방법들이 상태도 또는 이벤트들을 통해 일련의 상호관련된 상태들로서 대안적으로 표현될 수 있다는 것을 이해하고 인식할 것이다. 부가적으로, 본 명세서에 개시된 방법들은 그러한 방법들을 컴퓨팅 디바이스들에 전송 및 전달하는 것을 용이하게 하기 위해 제조 물품 상에 저장될 수 있다는 것이 인식되어야 한다. 본원에서 사용되는 바와 같은 "제조 물품"이라는 용어는 임의의 컴퓨터 판독가능 디바이스 또는 저장 매체로부터 액세스가능한 컴퓨터 프로그램을 포괄하는 것으로 의도된다. 일 구현에서, 방법(300)은 도 1의 서버(120) 또는 도 2의 컴퓨팅 시스템(200)에 의해 수행될 수 있다.
방법(300)은 서버 디바이스 또는 클라이언트 디바이스의 처리 디바이스들에 의해 수행될 수 있고, 블록(302)에서 시작될 수 있다. 블록(302)에서, 처리 디바이스는, 제1 청크 및 제2 청크를 포함하는 미디어 아이템에 액세스할 수 있다. 처리 디바이스는, 미디어 아이템을 포착 및 기록한 사용자 디바이스로부터 미디어 아이템을 수신할 수 있고, 미디어 아이템을 제1 청크 및 제2 청크를 포함하는 복수의 청크들로 세그먼트화할 수 있다. 일 예에서, 미디어 아이템의 제1 청크 및 미디어 아이템의 제2 청크는 미디어 아이템의 겹치지 않는 지속기간들의 시퀀스로부터 도출될 수 있다. 예컨대, 미디어 아이템은 5 분 길이일 수 있고, 청크들 각각이 연접되어 미디어 아이템을 생성할 수 있도록, 청크들로 세그먼트화될 수 있다. 다른 예에서, 제1 청크와 제2 청크는 부분적으로 또는 완전히 겹칠 수 있다. 예컨대, 제1 청크는 비디오의 오디오 콘텐츠를 포함할 수 있고, 제2 청크는 비디오의 이미지 콘텐츠일 수 있으며, 오디오 콘텐츠는, 비디오 콘텐츠와 오디오 콘텐츠의 일부 또는 전부가 동시에 제시되도록 비디오 콘텐츠와 겹칠 수 있다. 어느 예에서든, 처리 디바이스는, 미디어 복잡도 측정치가 더 적은 컴퓨팅 리소스들을 사용하여 결정될 수 있도록, 원래의 청크들 대신에 더 낮은 해상도로 하향 규모조정된 청크들(예컨대, 제1 및 제2 청크들)에 액세스할 수 있다.
블록(304)에서, 처리 디바이스는, 제1 청크에 대한 제1 미디어 복잡도 측정치 및 제2 청크에 대한 제2 미디어 복잡도 측정치를 결정할 수 있다. 제1 미디어 복잡도 측정치 및 제2 미디어 복잡도 측정치 각각은, 개개의 청크의 공간적 및 시간적 분포를 표시할 수 있다. 미디어 아이템이 비디오일 때, 미디어 복잡도 측정치들은, 미디어 아이템의 제1 청크에 대한 비디오 코딩 복잡도 측정치 및 제2 청크에 대한 비디오 코딩 복잡도 측정치를 포함할 수 있다. 일 예에서, 제1 청크의 비디오 코딩 복잡도(VCC) 측정치를 결정하는 것은, 제1 청크의 비트율(R), 프레임률(Fps), 크로마 인자(CF), 프레임 폭(W), 및 프레임 높이(H)를 결정하는 것을 수반할 수 있다. 이러한 콘텐츠 정보는, 다음의 수학 공식: VCC = R / (W * H * Fps * CF)에 기반하여 비디오 코딩 복잡도에 대한 값을 계산하기 위해 사용될 수 있다.
블록(306)에서, 처리 디바이스는 복수의 인코더들로부터 제1 인코더 및 제2 인코더를 선택할 수 있다. 제1 인코더는 제1 청크의 제1 미디어 복잡도 측정치에 기반하여 선택될 수 있고, 제2 인코더는 제2 청크의 제2 미디어 복잡도 측정치에 기반하여 선택된다. 일 예에서, 제1 인코더를 선택하는 것은, 처리 디바이스가, 제1 청크의 제1 미디어 복잡도 측정치를 미리 결정된 임계값과 비교하는 것, 및 제1 미디어 복잡도 측정치가 미리 결정된 임계치 미만인 것에 대한 응답으로 단일 패스 인코딩을 선택하는 것을 수반할 수 있다. 미리 결정된 임계치는 설계자, 개발자, 관리자, 다른 사용자, 또는 이들의 조합에 의해 제공되는 미리 결정된 값에 기반할 수 있다. 미리 결정된 임계치는 기계 학습에 기반하여 조정될 수 있으며, 청크들에 대해 인코딩이 완료된 후의 피드백에 기반하여 시간 경과에 따라 수정될 수 있다.
복수의 인코더들은 가변 비트율 인코더들을 포함할 수 있으며, 제1 인코더는 단일 패스 인코더일 수 있고, 제2 인코더는 다중 패스 인코더일 수 있다. 단일 패스 인코더는 비디오 버퍼링 검증기(VBV)를 포함하는 단일 패스 트랜스코더일 수 있고, 다중 패스 인코더는 제약된 품질 및 한정된 비트율을 포함하는 2-패스 트랜스코더일 수 있다. 비디오 버퍼링 검증기는 MPEG 표준들(예컨대, MPEG 2)과 함께 사용되는 비디오 버퍼 모델일 수 있고, 인코딩된 비디오 스트림이 다른 디바이스(예컨대, 디코딩 디바이스, 사용자 디바이스) 상에서 정확하게 버퍼링되어 재생될 수 있음을 보장할 수 있다. 비디오 버퍼링 검증기는, 수신 디바이스(예컨대, 디코더 디바이스)에 버퍼 오버플로우 또는 버퍼 언더플로우가 존재할 것인지 여부를 결정(예컨대, 추정 또는 예측)하는 데 사용될 수 있다. 비디오 버퍼링 검증기는, 미디어 스트림이 수신되는 비트율(예컨대, 최대 비트율) 및 미디어 스트림이 저장되는 버퍼 크기를 고려할 수 있다. 일 예에서, 비디오 버퍼링 검증기는 하나 이상의 리키 버킷 모델을 사용하여 구현될 수 있다. 리키 버킷 모델은, 이산 이벤트들의 일부 시퀀스가 그들의 평균 및 피크 속도들 또는 주파수들에 대한 정의된 제한들을 따르는지 여부를 결정하는 데 사용될 수 있다. 리키 버킷 모델은, 데이터 송신들(예컨대, 패킷들)이 대역폭 및 버스트성(burstiness)에 대한 정의된 제한들을 따르는지를 확인하기 위해 패킷 교환 컴퓨터 네트워크들에서 적용될 수 있다. 버스트성은 네트워크 트래픽의 흐름에서의 변동들의 척도이다.
블록(308)에서, 처리 디바이스는, 제1 인코더를 사용하여 제1 청크를 인코딩하고 제2 인코더를 사용하여 제2 청크를 인코딩할 수 있다. 일 예에서, 미디어 아이템의 제1 청크는 단일 패스 인코더를 사용하여 인코딩될 수 있고, 미디어 아이템의 제2 청크는 다중 패스 인코더를 사용하여 인코딩될 수 있다. 처리 디바이스는 또한, 인코딩된 미디어 아이템을 형성하기 위해, (단일 패스 인코더를 사용하여 인코딩된) 미디어 아이템의 제1 청크와 (2-패스 인코더를 사용하여 인코딩된) 미디어 아이템의 제2 청크를 결합할 수 있다. 본원에서 블록(308)을 참조하여 위에 설명된 동작들을 완료하는 것에 대한 응답으로, 방법은 종결될 수 있다.
도 4는, 본 개시내용의 하나 이상의 양상에 따라 동작하는 컴퓨터 시스템의 블록도를 도시한다. 특정 구현들에서, 컴퓨터 시스템(400)은, (예컨대, 네트워크, 이를테면, 근거리 네트워크(LAN), 인트라넷, 엑스트라넷, 또는 인터넷을 통해) 다른 컴퓨터 시스템들에 연결될 수 있다. 컴퓨터 시스템(400)은, 클라이언트-서버 환경에서 서버 또는 클라이언트 컴퓨터로서, 또는 피어-투-피어 또는 분산형 네트워크 환경에서 피어 컴퓨터로서 동작할 수 있다. 컴퓨터 시스템(400)은, 개인용 컴퓨터(PC), 태블릿 PC, 셋-톱 박스(STB), 개인 휴대 정보 단말기(PDA), 셀룰러 텔레폰, 웹 기기, 서버, 네트워크 라우터, 스위치 또는 브릿지, 또는 임의의 디바이스에 의해 취해질 동작들을 특정하는 (순차적인 또는 다른 방식의) 명령어들의 세트를 실행할 수 있는 그 임의의 디바이스에 의해 제공될 수 있다. 추가로, "컴퓨터"라는 용어는, 본원에서 설명되는 방법들 중 임의의 하나 이상의 방법을 수행하기 위한 명령어들의 세트(또는 다수의 세트들)를 개별적으로 또는 공동으로 실행하는 컴퓨터들의 임의의 집합체를 포함할 것이다.
추가적인 양상에서, 컴퓨터 시스템(400)은, 버스(408)를 통해 서로 통신할 수 있는, 처리 디바이스(402), 휘발성 메모리(404)(예컨대, 랜덤 액세스 메모리(RAM)), 비-휘발성 메모리(406)(예컨대, 판독 전용 메모리(ROM) 또는 전기적으로 소거가능한 프로그래밍가능 ROM(EEPROM)), 및 데이터 저장 디바이스(416)를 포함할 수 있다.
처리 디바이스(402)는, 범용 프로세서(이를테면, 예컨대, 복합 명령어 세트 컴퓨팅(CISC) 마이크로프로세서, 축소된 명령어 세트 컴퓨팅(RISC) 마이크로프로세서, 매우 긴 명령어 워드(VLIW) 마이크로프로세서, 다른 유형들의 명령어 세트들을 구현하는 마이크로프로세서, 또는 명령어 세트들의 유형들의 조합을 구현하는 마이크로프로세서) 또는 전문화된 프로세서(이를테면, 예컨대, 주문형 집적 회로(ASIC), 필드 프로그래밍가능 게이트 어레이(FPGA), 디지털 신호 프로세서(DSP), 또는 네트워크 프로세서)와 같은 하나 이상의 프로세서에 의해 제공될 수 있다.
컴퓨터 시스템(400)은, 네트워크 인터페이스 디바이스(422)를 더 포함할 수 있다. 컴퓨터 시스템(400)은 또한, 비디오 디스플레이 유닛(410)(예컨대, LCD), 문자숫자식 입력 디바이스(412)(예컨대, 키보드), 커서 제어 디바이스(414)(예컨대, 마우스), 및 신호 생성 디바이스(420)를 포함할 수 있다.
데이터 저장 디바이스(416)는, 도 1 및 도 2의 트랜스코딩 구성요소(126)를 인코딩하고 도 3의 방법(300)을 구현하기 위한 명령어들을 포함하는, 본원에서 설명되는 방법들 또는 기능들 중 임의의 하나 이상의 방법 또는 기능을 인코딩하는 명령어들(426)을 저장할 수 있는 비-일시적인 컴퓨터 판독가능 저장 매체(424)를 포함할 수 있다.
명령어들(426)은 또한, 컴퓨터 시스템(400)에 의한 그들의 실행 동안 휘발성 메모리(404) 내에 그리고/또는 처리 디바이스(402) 내에 완전히 또는 부분적으로 상주할 수 있으며, 그러므로, 휘발성 메모리(404) 및 처리 디바이스(402)는 또한 기계 판독가능 저장 매체를 구성할 수 있다.
예시적인 예들에서, 컴퓨터 판독가능 저장 매체(424)가 단일 매체로서 도시되어 있지만, "컴퓨터 판독가능 저장 매체"라는 용어는, 실행가능 명령어들의 하나 이상의 세트를 저장하는, 단일 매체 또는 다수의 매체(예컨대, 중앙집중식 또는 분산형 데이터베이스, 및/또는 연관된 캐시들 및 서버들)를 포함할 것이다. "컴퓨터 판독가능 저장 매체"라는 용어는 또한, 컴퓨터로 하여금 본원에서 설명된 방법들 중 임의의 하나 이상의 방법을 수행하게 하는, 컴퓨터에 의한 실행을 위한 명령어들의 세트를 저장 또는 인코딩할 수 있는 임의의 유형(tangible) 매체를 포함할 것이다. "컴퓨터 판독가능 저장 매체"라는 용어는, 솔리드-스테이트 메모리들, 광학 매체, 및 자기 매체를 포함할 것이지만 이에 제한되지는 않는다.
본원에서 설명된 방법들, 구성요소들, 및 특징들은 이산 하드웨어 구성요소들에 의해 구현될 수 있거나, 또는 ASIC들, FPGA들, DSP들, 또는 유사한 디바이스들과 같은 다른 하드웨어 구성요소들의 기능성에 통합될 수 있다. 게다가, 방법들, 구성요소들, 및 특징들은, 하드웨어 디바이스들 내의 펌웨어 모듈들 또는 기능적 회로에 의해 구현될 수 있다. 추가로, 방법들, 구성요소들, 및 특징들은, 하드웨어 디바이스들과 컴퓨터 프로그램 구성요소들의 임의의 조합 또는 컴퓨터 프로그램들로 구현될 수 있다.
달리 구체적으로 언급되지 않는 한, "검출", "결정", "해제", "파괴", "개시", "생성", "포기" 등과 같은 용어들은, 컴퓨터 시스템 레지스터들 및 메모리들 내에서 물리적(전자적) 양들로서 표현되는 데이터를, 컴퓨터 시스템 메모리들 또는 레지스터들 또는 다른 그러한 정보 저장, 송신 또는 디스플레이 디바이스들 내에서 물리적 양들로서 유사하게 표현되는 다른 데이터로 조작 및 변환하는 컴퓨터 시스템에 의해 수행 또는 구현되는 동작들 및 프로세스들을 지칭한다. 또한, 본원에서 사용되는 바와 같은, "제1", "제2", "제3", "제4" 등의 용어들은 상이한 요소들 간을 구별하기 위한 라벨들로서 의도되며, 그들의 수치 지정에 따라 서수 의미를 갖는 것은 아닐 수 있다.
본원에서 설명된 예들은 또한, 본원에서 설명된 방법들을 수행하기 위한 장치에 관한 것이다. 이러한 장치는 본원에서 설명된 방법들을 수행하기 위해 특수하게 구성될 수 있거나, 또는 이러한 장치는, 컴퓨터 시스템에 저장된 컴퓨터 프로그램에 의해 선택적으로 프로그래밍되는 범용 컴퓨터 시스템을 포함할 수 있다. 그러한 컴퓨터 프로그램은 컴퓨터 판독가능 유형 저장 매체에 저장될 수 있다.
본원에서 설명된 방법들 및 예시적인 예들은 본질적으로 임의의 특정 컴퓨터 또는 다른 장치에 관련되지 않는다. 다양한 범용 시스템들은 본원에서 설명된 교시들에 따라 사용될 수 있거나, 방법(300) 및/또는 그 방법의 개별 기능들, 루틴들, 서브루틴들 또는 동작들 각각을 수행하도록 더 전문화된 장치를 구성하는 것이 편리한 것으로 판명될 수 있다. 다양한 이러한 시스템들에 대한 구조의 예들은 위의 설명에 기재되어 있다. 위의 설명은 제한적인 것이 아니라 예시적인 것으로 의도된다. 본 개시내용이 특정 예시적인 예들 및 구현들을 참조하여 설명되었지만, 본 개시내용은 설명된 예들 및 구현들로 제한되지 않는다는 것이 인지될 것이다. 본 개시내용의 범위는, 다음의 청구항들에 의해 권리가 부여되는 균등물들의 전체 범위와 함께, 다음의 청구항들을 참조하여 결정되어야 한다.

Claims (12)

  1. 방법으로서,
    제1 청크 및 제2 청크를 포함하는 미디어 아이템에 액세스하는 단계;
    처리 디바이스에 의해, 상기 제1 청크에 대한 제1 미디어 복잡도 측정치 및 상기 제2 청크에 대한 제2 미디어 복잡도 측정치를 결정하는 단계;
    상기 처리 디바이스에 의해, 복수의 인코더들로부터 제1 인코더 및 제2 인코더를 선택하는 단계 ― 상기 제1 인코더는 상기 제1 청크의 상기 제1 미디어 복잡도 측정치에 기반하여 선택되고, 상기 제2 인코더는 상기 제2 청크의 상기 제2 미디어 복잡도 측정치에 기반하여 선택됨 ―; 및
    상기 제1 인코더를 사용하여 상기 제1 청크를 인코딩하고 상기 제2 인코더를 사용하여 상기 제2 청크를 인코딩하는 단계를 포함하는, 방법.
  2. 제1항에 있어서,
    상기 복수의 인코더들은 가변 비트율 인코더들을 포함하며, 상기 제1 인코더는 단일 패스 인코더를 포함하고, 상기 제2 인코더는 다중 패스 인코더를 포함하는, 방법.
  3. 제2항에 있어서,
    상기 미디어 아이템의 상기 제1 청크는 상기 단일 패스 인코더를 사용하여 인코딩되고, 상기 미디어 아이템의 상기 제2 청크는 상기 다중 패스 인코더를 사용하여 인코딩되는, 방법.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 제1 미디어 복잡도 측정치 및 상기 제2 미디어 복잡도 측정치 각각은, 개개의 청크의 공간적 및 시간적 분포에 대응하는, 방법.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 미디어 아이템은 비디오이며, 상기 결정하는 단계는, 상기 미디어 아이템의 상기 제1 청크에 대한 비디오 코딩 복잡도 측정치 및 상기 제2 청크에 대한 비디오 코딩 복잡도 측정치를 결정하는 단계를 포함하는, 방법.
  6. 제5항에 있어서,
    상기 제1 청크의 비디오 코딩 복잡도(VCC) 측정치를 결정하는 것은, 상기 제1 청크의 픽셀들에서의 비트율(R), 프레임률(Fps), 크로마 인자(CF; chroma factor), 프레임 폭(W), 및 프레임 높이(H)를 결정하는 것을 포함하고, VCC = R / (W * H * Fps * CF)를 포함하는 수학 공식에 기반하여 비디오 코딩 복잡도에 대한 값을 계산하는 것을 더 포함하는, 방법.
  7. 제2항 또는 제3항에 있어서,
    상기 단일 패스 인코더는 비디오 버퍼링 검증기를 포함하는 단일 패스 인코더이고, 상기 다중 패스 인코더는 제약된 품질 및 한정된 비트율을 포함하는 2-패스 트랜스코더를 포함하는, 방법.
  8. 제2항, 제3항, 및 제7항 중 어느 한 항에 있어서,
    상기 단일 패스 인코더는 리키 버킷(leaky bucket) 모델을 사용하여 구현되는, 방법.
  9. 제2항, 제3항, 제7항, 및 제8항 중 어느 한 항에 있어서,
    상기 제1 인코더를 선택하는 것은,
    상기 제1 청크의 상기 제1 미디어 복잡도 측정치를 미리 결정된 임계값과 비교하는 것; 및
    상기 제1 미디어 복잡도 측정치가 미리 결정된 임계치 미만인 것에 대한 응답으로 상기 단일 패스 인코더를 선택하는 것을 포함하는, 방법.
  10. 제1항 내지 제9항 중 어느 한 항에 있어서,
    상기 미디어 아이템을 포착 및 기록한 사용자 디바이스로부터 상기 미디어 아이템을 수신하는 단계;
    상기 미디어 아이템을 상기 제1 청크 및 상기 제2 청크를 포함하는 복수의 청크들로 세그먼트화하는 단계; 및
    인코딩된 미디어 아이템을 형성하기 위해, 단일 패스 인코더를 사용하여 인코딩된 상기 미디어 아이템의 상기 제1 청크와 2-패스 인코더를 사용하여 인코딩된 상기 미디어 아이템의 상기 제2 청크를 결합하는 단계를 더 포함하는, 방법.
  11. 시스템으로서,
    메모리; 및
    상기 메모리에 동작가능하게 결합되는 처리 디바이스를 포함하며, 상기 처리 디바이스는 제1항 내지 제10항 중 어느 한 항에 따른 방법을 수행하도록 구성되는, 시스템.
  12. 명령어들을 저장하는 비-일시적인 기계 판독가능 저장 매체로서,
    상기 명령어들은, 실행될 때, 처리 디바이스로 하여금 제1항 내지 제10항 중 어느 한 항에 따른 방법을 수행하게 하는, 비-일시적인 기계 판독가능 저장 매체.
KR1020197031997A 2017-05-19 2018-02-20 복잡도 적응형 단일 패스 대 2-패스 트랜스코딩 KR102316968B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/600,272 2017-05-19
US15/600,272 US10771789B2 (en) 2017-05-19 2017-05-19 Complexity adaptive rate control
PCT/US2018/018849 WO2018212816A1 (en) 2017-05-19 2018-02-20 Complexity adaptive single- vs. two-pass transcoding

Publications (2)

Publication Number Publication Date
KR20190133745A true KR20190133745A (ko) 2019-12-03
KR102316968B1 KR102316968B1 (ko) 2021-10-25

Family

ID=61563501

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197031997A KR102316968B1 (ko) 2017-05-19 2018-02-20 복잡도 적응형 단일 패스 대 2-패스 트랜스코딩

Country Status (6)

Country Link
US (1) US10771789B2 (ko)
EP (1) EP3596924A1 (ko)
JP (1) JP6963631B2 (ko)
KR (1) KR102316968B1 (ko)
CN (1) CN110546953B (ko)
WO (1) WO2018212816A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102554917B1 (ko) * 2022-04-05 2023-07-11 한국교통대학교산학협력단 멀티 모달 기반 데이터 압축 장치 및 그 동작 방법

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10306250B2 (en) * 2017-06-16 2019-05-28 Oath Inc. Video encoding with content adaptive resource allocation
US11146608B2 (en) 2017-07-20 2021-10-12 Disney Enterprises, Inc. Frame-accurate video seeking via web browsers
US10652589B2 (en) * 2017-12-08 2020-05-12 Sling Media Pvt Ltd Systems and methods for selecting an initial streaming bitrate
US10728180B2 (en) * 2018-08-21 2020-07-28 At&T Intellectual Property I, L.P. Apparatus, storage medium and method for adaptive bitrate streaming adaptation of variable bitrate encodings
US10965945B2 (en) * 2019-03-29 2021-03-30 Bitmovin, Inc. Optimized multipass encoding
US11611784B2 (en) * 2019-08-02 2023-03-21 Dao Lab Limited System and method for transferring large video files with reduced turnaround time
CN110536168B (zh) * 2019-09-11 2021-09-17 北京达佳互联信息技术有限公司 视频上传方法、装置、电子设备及存储介质
CN112969090A (zh) * 2019-12-03 2021-06-15 华为技术有限公司 一种http请求传输方法及设备
CN111698262B (zh) * 2020-06-24 2021-07-16 北京达佳互联信息技术有限公司 带宽确定方法、装置、终端及存储介质
CN111757118B (zh) 2020-06-29 2023-04-21 北京百度网讯科技有限公司 视频转码处理方法、装置、设备和介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2285111A1 (en) * 2009-08-07 2011-02-16 Canon Kabushiki Kaisha Method for sending compressed data representing a digital image and corresponding device
US20120147958A1 (en) * 2010-12-10 2012-06-14 Ronca David R Parallel Video Encoding Based on Complexity Analysis
US20130287361A1 (en) * 2012-02-02 2013-10-31 MOG Technologies S.A. Methods for storage and access of video data while recording

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6654417B1 (en) 1998-01-26 2003-11-25 Stmicroelectronics Asia Pacific Pte. Ltd. One-pass variable bit rate moving pictures encoding
US20030023982A1 (en) * 2001-05-18 2003-01-30 Tsu-Chang Lee Scalable video encoding/storage/distribution/decoding for symmetrical multiple video processors
US6700935B2 (en) 2002-02-08 2004-03-02 Sony Electronics, Inc. Stream based bitrate transcoder for MPEG coded video
US8054880B2 (en) * 2004-12-10 2011-11-08 Tut Systems, Inc. Parallel rate control for digital video encoder with multi-processor architecture and picture-based look-ahead window
US20040120398A1 (en) * 2002-12-19 2004-06-24 Ximin Zhang System and method for adaptive field and frame video encoding using rate-distortion characteristics
US7330509B2 (en) 2003-09-12 2008-02-12 International Business Machines Corporation Method for video transcoding with adaptive frame rate control
US7746927B1 (en) * 2004-03-26 2010-06-29 Apple Inc. Robust single-pass variable bit rate encoding
US20050232497A1 (en) 2004-04-15 2005-10-20 Microsoft Corporation High-fidelity transcoding
US7474701B2 (en) * 2004-09-23 2009-01-06 International Business Machines Corporation Single pass variable bit rate control strategy and encoder for processing a video frame of a sequence of video frames
US20060114995A1 (en) * 2004-12-01 2006-06-01 Joshua Robey Method and system for high speed video encoding using parallel encoders
CN101253777A (zh) * 2005-07-01 2008-08-27 极速决件公司 用于在多媒体信号编码中使用的方法、装置和系统
US8238424B2 (en) 2007-02-09 2012-08-07 Microsoft Corporation Complexity-based adaptive preprocessing for multiple-pass video compression
WO2009045683A1 (en) * 2007-09-28 2009-04-09 Athanasios Leontaris Video compression and tranmission techniques
US8588296B2 (en) 2009-07-02 2013-11-19 Dialogic Corporation Bitrate control algorithm for video transcoding systems
US8705623B2 (en) 2009-10-02 2014-04-22 Texas Instruments Incorporated Line-based compression for digital image data
US8767825B1 (en) 2009-11-30 2014-07-01 Google Inc. Content-based adaptive video transcoding framework
GB2471056B (en) * 2010-03-09 2011-02-16 Quantum Corp Controlling configurable variable data reduction
CN101854531B (zh) * 2010-05-24 2013-07-31 镇江唐桥微电子有限公司 一种多通道视频联合码率控制方法
US20110299588A1 (en) * 2010-06-04 2011-12-08 Apple Inc. Rate control in video communication via virtual transmission buffer
US9338467B1 (en) 2010-07-19 2016-05-10 Google Inc. Parallel video transcoding
US10085023B2 (en) * 2011-10-05 2018-09-25 Texas Instruments Incorporated Systems and methods for quantization of video content
US8934538B2 (en) 2011-10-17 2015-01-13 Google Inc. Rate-distortion-complexity optimization of video encoding
WO2014011848A2 (en) * 2012-07-12 2014-01-16 Huawei Technologies Co., Ltd. Signaling and processing content with variable bitrates for adaptive streaming
WO2014190308A1 (en) * 2013-05-24 2014-11-27 Sonic Ip, Inc. Systems and methods of encoding multiple video streams with adaptive quantization for adaptive bitrate streaming
US9749642B2 (en) * 2014-01-08 2017-08-29 Microsoft Technology Licensing, Llc Selection of motion vector precision
US9564136B2 (en) * 2014-03-06 2017-02-07 Dts, Inc. Post-encoding bitrate reduction of multiple object audio
US10063866B2 (en) * 2015-01-07 2018-08-28 Texas Instruments Incorporated Multi-pass video encoding

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2285111A1 (en) * 2009-08-07 2011-02-16 Canon Kabushiki Kaisha Method for sending compressed data representing a digital image and corresponding device
US20120147958A1 (en) * 2010-12-10 2012-06-14 Ronca David R Parallel Video Encoding Based on Complexity Analysis
US20130287361A1 (en) * 2012-02-02 2013-10-31 MOG Technologies S.A. Methods for storage and access of video data while recording

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102554917B1 (ko) * 2022-04-05 2023-07-11 한국교통대학교산학협력단 멀티 모달 기반 데이터 압축 장치 및 그 동작 방법

Also Published As

Publication number Publication date
JP6963631B2 (ja) 2021-11-10
US20180338146A1 (en) 2018-11-22
CN110546953B (zh) 2023-09-22
EP3596924A1 (en) 2020-01-22
KR102316968B1 (ko) 2021-10-25
JP2020521351A (ja) 2020-07-16
WO2018212816A1 (en) 2018-11-22
CN110546953A (zh) 2019-12-06
US10771789B2 (en) 2020-09-08

Similar Documents

Publication Publication Date Title
KR102316968B1 (ko) 복잡도 적응형 단일 패스 대 2-패스 트랜스코딩
US20220030244A1 (en) Content adaptation for streaming
US9800883B2 (en) Parallel video transcoding
EP3533232B1 (en) Bitrate optimization for multi-representation encoding using playback statistics
US9510028B2 (en) Adaptive video transcoding based on parallel chunked log analysis
US10735742B2 (en) Adaptive bitrate video testing
US20190052938A1 (en) Producing video data
WO2021147448A1 (zh) 一种视频数据处理方法、装置及存储介质
US20150189222A1 (en) Content-adaptive chunking for distributed transcoding
US10003626B2 (en) Adaptive real-time transcoding method and streaming server therefor
US10755104B2 (en) Scene level video search
KR101087194B1 (ko) 동영상 인코딩 시스템 및 방법
US20210266572A1 (en) Optimized Multipass Encoding
CN114982227A (zh) 使用机器学习基于预测的视觉质量为视频播放器的最优格式选择
Zabrovskiy et al. ComplexCTTP: complexity class based transcoding time prediction for video sequences using artificial neural network
WO2023207513A1 (zh) 视频处理方法、装置及电子设备
US20220232275A1 (en) Adaptive bitrate video testing from screen recording
US11659217B1 (en) Event based audio-video sync detection
US11863791B1 (en) Methods and systems for non-destructive stabilization-based encoder optimization
EP4141796A1 (en) Methods and systems for encoder parameter setting optimization
Prakash et al. Efficient Data usage and Savingwhile Streaming Video
Chen A Novel Rate Control Algorithm for Video Coding Based on Cauchy Distribution

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant