KR101484900B1 - 코덱이 적용된 프레임 크기로의 오디오 분할 - Google Patents

코덱이 적용된 프레임 크기로의 오디오 분할 Download PDF

Info

Publication number
KR101484900B1
KR101484900B1 KR1020147019773A KR20147019773A KR101484900B1 KR 101484900 B1 KR101484900 B1 KR 101484900B1 KR 1020147019773 A KR1020147019773 A KR 1020147019773A KR 20147019773 A KR20147019773 A KR 20147019773A KR 101484900 B1 KR101484900 B1 KR 101484900B1
Authority
KR
South Korea
Prior art keywords
audio
frame
video
content
frames
Prior art date
Application number
KR1020147019773A
Other languages
English (en)
Other versions
KR20140097580A (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 KR20140097580A publication Critical patent/KR20140097580A/ko
Application granted granted Critical
Publication of KR101484900B1 publication Critical patent/KR101484900B1/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/146Data rate or code amount at the encoder output
    • H04N19/147Data rate or code amount at the encoder output according to rate distortion criteria
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/16Sound input; Sound output
    • G06F3/165Management of the audio stream, e.g. setting of volume, audio stream path
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/04Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using predictive techniques
    • G10L19/16Vocoder architecture
    • G10L19/167Audio streaming, i.e. formatting and decoding of an encoded audio signal representation into a data stream for transmission or storage purposes
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L21/00Processing of the speech or voice signal to produce another audible or non-audible signal, e.g. visual or tactile, in order to modify its quality or its intelligibility
    • G10L21/04Time compression or expansion
    • G10L21/055Time compression or expansion for synchronising with other signals, e.g. video signals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs
    • H04N21/23406Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs involving management of server-side video buffer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • 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/266Channel or content management, e.g. generation and management of keys and entitlement messages in a conditional access system, merging a VOD unicast channel into a multicast channel
    • H04N21/2662Controlling the complexity of the video stream, e.g. by scaling the resolution or bitrate of the video stream based on the client capabilities
    • 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/439Processing of audio elementary streams
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/83Generation or processing of protective or descriptive data associated with content; Content structuring
    • H04N21/845Structuring of content, e.g. decomposing content into time segments
    • H04N21/8456Structuring of content, e.g. decomposing content into time segments by decomposing the content in the time domain, e.g. in time segments
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/65Network streaming protocols, e.g. real-time transport protocol [RTP] or real-time control protocol [RTCP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • 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/15Data rate or code amount at the encoder output by monitoring actual compressed data size at the memory before deciding storage at 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
    • H04N19/17Methods 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 an image region, e.g. an object
    • H04N19/172Methods 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 an image region, e.g. an object the region being a picture, frame or field
    • 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/236Assembling of a multiplex stream, e.g. transport stream, by combining a video stream with other content or additional data, e.g. inserting a URL [Uniform Resource Locator] into a video stream, multiplexing software data into a video stream; Remultiplexing of multiplex streams; Insertion of stuffing bits into the multiplex stream, e.g. to obtain a constant bit-rate; Assembling of a packetised elementary stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/434Disassembling of a multiplex stream, e.g. demultiplexing audio and video streams, extraction of additional data from a video stream; Remultiplexing of multiplex streams; Extraction or processing of SI; Disassembling of packetised elementary stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/24Systems for the transmission of television signals using pulse code modulation
    • H04N7/52Systems for transmission of a pulse code modulated video signal with one or more other pulse code modulated signals, e.g. an audio signal or a synchronizing signal

Abstract

경계 아티팩츠의 발생 없이 미디어 콘텐츠의 오디오를 개별 콘텐츠 파일로 분할하는 방법 및 장치가 설명된다.

Description

코덱이 적용된 프레임 크기로의 오디오 분할{AUDIO SPLITTING WITH CODEC-ENFORCED FRAME SIZES}
본 발명은 인터넷 상에서 미디어 콘텐츠 전달 분야에 관련되며; 더욱 구체적으로는, 미디어 콘텐츠의 오디오를 경계 아티팩츠(boundary artifacts)의 발생 없이 개별 콘텐츠 파일로 분할하는 것에 관련된다.
인터넷은 미디어 콘텐츠(예컨대, 비디오 및 오디오 또는 오디오) 및 다른 정보를 최종 사용자에게 배포하는 주요한 방법이 되고 있다. 현재는 컴퓨터, 핸드폰, 및 거의 모든 네트워크가 가능한 장치로 음악, 비디오, 게임 및 다른 미디어 정보를 다운로드 할 수 있다. 미디어 콘텐츠 때문에 인터넷에 접속하는 사람들의 비율이 급격하게 증가하고 있다. 사용자 경험의 품질이 온라인으로 보는 비디오의 성장에 핵심 장애물이다. 온라인 비디오에 대한 소비자 기대는 그들의 텔레비전 및 영화를 보는 경험에 의해서 정해진다.
웹 상의 스트리밍 비디오의 관객 수가 급격하게 증가하고, 인터넷으로 비디오를 보는 것에 대한 관심 및 요구가 증가하고 있다. 데이터 파일의 스트리밍 또는 "스트리밍 미디어(streaming media)"는 심각한 중단 없이 원래대로 예상되는 재생 속도로 사용자에게 미디어를 구현하기에 충분한 레이트로 후속적인 미디어 콘텐츠를 전달하는 기술을 언급한다. 다운로드 한 미디어 파일 데이터와 다르게, 스트리밍된 데이터는 데이터가 재생될 때만 메모리에 저장되고, 지정된 시간이 지나면 후에 순차적으로 삭제된다.
인터넷 상의 미디어 콘텐츠가, 공중, 위성 또는 케이블 상의 정규방송과 비교했을 때, 몇몇 문제를 가지고 있다. 미디어 콘텐츠의 오디오 인코딩에 관한 사정에 관련하여 떠오른 한가지 우려는, 비디오 및 오디오를 고정-시간 부분으로 나눌 때, 경계 아티팩츠(boundary artifacts)의 발생이다. 종래의 처리방법에 있어서, 오디오는, 대응하는 비디오의 고정-시간 기간(fixed-time duration)에 매칭하는 고정-시간 기간을 갖는 부분으로 분할된다(예컨대 2초). 이 처리방법에 있어서 오디오 경계는 언제나 비디오 경계와 나란하다. 종래의 처리방법은, 예를 들면, 저 복잡도 고급 오디오 부호화(Low Complexity Advanced Audio Coding; AAC LC)을 이용하여, 각 콘텐츠 파일에 대한 각 오디오 부분을 인코딩하기 위해 새로운 오디오 코덱 세션을 시작한다. 오디오의 각 부분에 대하여 새로운 인코딩 세션을 이용함으로써, 오디오 코덱은 파형의 처음과 끝을 0부터의 변화에 대해 해석하여, 도 1에 설명된 것과 같이 부분 경계에서 인코딩된 부분의 재생에서 팝 노이즈(pop noise) 또는 클릭 노이즈(click noise)가 생긴다. 팝 또는 클릭 노이즈는 경계 아티팩츠로 언급된다. 또한, 오디오 코덱은 코덱이 적용된 프레임 크기에 따라서 고정-시간 기간의 오디오를 인코딩한다. 오디오 코덱에 의해서 생산된 샘플의 수가 코덱이 적용된 프레임 크기에 의해서 균등하게 나눠질 수 없는 경우 경계 아티팩츠가 또한 발생한다.
도 1은 종래의 처리방법을 이용한 오디오의 두 부분에 대한 오디오 파형(100)의 예를 나타내는 도표이다. 오디오 파형(100)은, 비디오의 제1 및 제2 부분 사이에서 0 (102)부터의 변화를 나타낸다. 오디오 코덱이 고정 프레임 크기(본 명세서에서는 코덱이 적용된 프레임 크기로 언급된다)를 가지면, 상기 부분의 샘플 수가, 코덱이 적용된 프레임 크기에 따른 프레임 당 샘플의 수로 균등하게 나눠지지 않으면, 오디오 코덱은 마지막 프레임(104)가 0으로 패딩되기를 요구한다. 예컨대, 48 kHz의 샘플링 레이트를 이용하는 경우, 2초의 오디오 세그먼트에 대하여 96,000개의 샘플들이 생성된다. 샘플의 수 96,000을 프레임당 샘플 수로 나누면(예컨대, AAC LC에서 1024개 샘플 및 고 효율 AAC(HE AAC)에서 2048개의 샘플), 그 결과가 93.75 프레임이 된다. 수 93.75는 정수가 아니기 때문에, 오디오 코덱은 마지막 프레임(104)을 0으로 패딩한다. 이 예에서, 마지막 프레임의 마지막 256 개 샘플은 0 값으로 지정된다. 0 값이 무음 오디오를 나타내더라도, 마지막 프레임을 0으로 패딩하는 것은 부분 경계에서 오디오의 인코딩된 부분의 재생 동안 팝 또는 클릭 노이즈를 발생시킨다. 0(102)부터의 변화 및 마지막 프레임(104) 내에 패딩되는 0은 경계 아티팩츠를 발생시킨다. 경계 아티팩츠의 발생은, 미디어 콘텐츠가 재생되는 동안 사용자 경험에 영향을 주는 오디오의 전반적인 품질을 떨어뜨린다.
또 다른 종래의 처리방법은 프레임 경계와 나란하기 위한 긴 기간을 갖는 오디오 부분을 이용하여 경계 아티팩츠의 수를 제한하기 위해 시도한다. 그러나, 오디오에 긴 기간 부분을 이용함으로써, 오디오 및 비디오가 분리되어 패키징 되도록 요구될 수 있다. 이는 오디오 및 비디오를 갖는 스트리밍 미디어 콘텐츠에 결점이 나타날 수 있고 특히, 동일한 미디어 콘텐츠가 상이한 품질 레벨에서 인코딩는 경우 예컨대, 적응 스트리밍이 사용되는 상황에서, 미디어 콘텐츠가 재생하는 동안 상이한 품질 레벨 사이를 시프팅하게 한다.
미디어 콘텐츠의 오디오를 경계 아티팩츠의 발생 없이 개별 콘텐츠 파일로 나누기 위한 방법 및 장치가 설명된다.
본 발명의 일 실시예에 따르면, 오디오 및 비디오를 포함하는 미디어 콘텐츠를 수신하는 단계;프레임 레이트에 따라서 상기 비디오를 인코딩하는 단계;코덱이 적용된 프레임 크기에 따라 상기 오디오를 인코딩하는 단계; 및 복수개의 콘텐츠 파일을 생성하는 단계를 포함하되, 상기 복수개의 콘텐츠 파일 각각은, 고정-시간 기간(fixed-time duration)을 갖는 상기 비디오의 인코딩된 부분, 및 상기 코덱이 적용된 프레임 크기를 갖는 복수개의 전체 오디오 프레임을 갖는 상기 오디오의 인코딩된 부분을 포함하는 것을 특징으로 하는, 동작을 수행하도록 프로그램된 컴퓨팅 시스템에 의해 실행되는, 방법이 개시될 수 있다.
또한, 본 발명의 일 실시예에 따르면, 비디오 및 오디오를 포함하는 미디어 콘텐츠를 수신하는 수단;프레임 레이트에 따라 상기 비디오를 인코딩하는 수단;고정-프레임 크기에 따라 상기 오디오를 인코딩하는 수단;상기 비디오를 복수개의 부분으로 분할하는 수단-상기 비디오의 각 부분은 개별 콘텐츠 파일에 저장됨-; 및 경계 아티팩츠의 발생 없이, 상기 오디오를 상기 개별 콘텐츠 파일로 분할하는 수단을 포함하는 장치가 개시될 수 있다.
또한, 본 발명의 일 실시예에 따르면, 오디오 및 비디오를 포함하는 미디어 콘텐츠를 수신하고 상기 오디오 및 상기 비디오를 분할하는 분할기;상기 분할기로부터 상기 비디오를 수신하고, 프레임 레이트에 따라 상기 비디오를 인코딩하기 위해 커플링된 비디오 인코더; 상기 분할기로부터 상기 오디오를 수신하고, 코덱이 적용된 프레임 크기에 따라 상기 오디오를 인코딩하기 위해 커플링된 오디오 인코더; 및 복수개의 콘텐츠 파일을 생성하기 위한 오디오 분할 멀티플렉서-상기 복수개의 콘텐츠 파일 각각은, 고정-시간 기간을 갖는 상기 비디오의 인코딩된 부분 및 상기 코덱이 적용된 프레임 크기를 갖는 복수개의 전체 오디오 프레임을 갖는 상기 오디오의 인코딩된 부분을 포함-;를 포함하는 컴퓨팅 디바이스를 포함하는 장치가 개시될 수 있다.
또한, 본 발명의 일 실시예에 따르면, 명령이 저장된 컴퓨터로 판독 가능한 저장 매체로서, 상기 명령은, 상기 명령이 컴퓨팅 디바이스에 의하여 실행될 경우 상기 컴퓨팅 디바이스가, 오디오 및 비디오를 포함하는 미디어 콘텐츠를 수신하는 단계;프레임 레이트에 따라 상기 비디오를 인코딩하는 단계;코덱이 적용된 프레임 크기에 따라 상기 오디오를 인코딩하는 단계; 및 복수개의 콘텐츠 파일을 생성하는 단계-상기 복수개의 콘텐츠 파일 각각은, 고정-시간 기간을 갖는 상기 비디오의 인코딩된 부분 및 상기 코덱이 적용된 프레임 크기를 갖는 복수개의 전체 오디오 프레임을 갖는 상기 오디오의 인코딩된 부분을 포함-;를 포함하는 방법을 수행하도록 하는 컴퓨터로 판독 가능한 저장 매체가 개시될 수 있다.
본 발명의 일 실시예에 따르면 아티팩츠의 발생 없이 스트리밍 미디어 콘텐츠를 전달할 수 있다.
본 발명은 하기의 상세한 설명 및 본 발명의 실시예들을 설명하도록 이용되는 첨부된 도면들을 참조하여 잘 이해될 수 있다.
도 1은 종래의 처리방법을 이용한 오디오의 두 부분에 대한 예시적인 오디오 파형을 나타낸다.
도 2는 본 실시예의 인코더가 채용할 수 있는 컴퓨팅 환경의 일 실시예를 나타내는 블록도이다.
도 3a는 도 2의 인코더를 각각 채용한 복수의 호스트를 포함하는 인코딩 시스템이 채용될 수 있는 컴퓨팅 환경의 또 다른 실시예를 나타내는 블록도 이다.
도 3b는 일 실시예에 따른, 스트림릿(streamlet)의 병렬 인코딩에 대한 실시예를 나타내는 블록도이다.
도 4는 미디어 콘텐츠의 고정-시간 비디오 부분을 갖는 콘텐츠 파일 사이에 전체 오디오 프레임을 분할하기 위해, 코덱이 적용된 프레임 크기에 따른 미디어 콘텐츠의 오디오를 인코딩하는 방법에 대한 일 실시예의 순서도이다.
도 5a 내지 도 5c는 고정-시간 비디오 부분 및 코덱이 적용된 프레임 크기를 갖는 전체 오디오 프레임이 있는 콘텐츠 파일을 생성하는 일 실시예에 대한 순서도이다.
도 6a는, 오디오 분할의 일 실시예에 따른 오디오 부분, 비디오 부분, 및 스트림릿의 도표형 표현이다.
도 6b는 오디오 분할을 이용하는 네 개의 오디오 부분에 대한 오디오 파형이 일 실시예를 나타낸다.
도 7은 일 실시예에 따른 오디오 나누기를 위한 컴퓨터 시스템의 예시적 형태의 기계에 대한 도표형 표현을 나타낸다.
미디어 콘텐츠의 오디오를 경계 아티팩츠의 발생 없이 개별 콘텐츠 파일로 나누기 위한 방법 및 장치가 설명된다. 일 실시예에서, 오디오 및 비디오를 포함하는 미디어 콘텐츠를 수신, 프레임 레이트에 따라서 비디오를 인코딩, 코덱이 적용된 프레임 크기(즉, 고정 프레임 크기)에 따라서 오디오를 인코딩, 및 콘텐츠 파일을 생성하는 단계를 포함하는 동작을 수행하도록 프로그램된 컴퓨팅 시스템에 의해 실행되는 방법, 상기 각 콘텐츠 파일은 고정-시간 기간을 갖는 비디오의 인코딩된 부분 및 코덱이 적용된 프레임 크기를 갖는 전체 오디오 프레임을 갖는 오디오의 인코딩된 부분을 포함한다. 일 실시예에서, 일반적으로, 오디오 프레임의 마지막은 0으로 패딩되지 않는다.
본 발명의 일 실시예는 스트리밍 오디오에 대하여 향상된 처리방법을 제공한다. 미디어 콘텐츠의 오디오의 각 부분에 대하여 새로운 인코딩 세션을 이용하는 종래의 처리방법과 다르게, 본 명세서에서 설명되는 실시예에서는, 미디어 콘텐츠가 경계 아트팩츠 없이 작은 부분으로 분할된다. 본 명세서에서 설명되는 실시예는 전체 오디오 프레임을 이용하여 오디오를 분할한다. 재생하도록 오디오가 진행(stage)되면, 오디오는 경계 아티팩츠를 갖는 많은 작은 세그먼트 대신에 단일 스트림으로서 디코더로 이동(present)된다. 본 명세서에서 설명되는 실시예에서, 인코더는 코덱 프레임 크기(예컨대, AAC-LC의 경우 1024개의 샘플 또는 HE AAC의 경우 2048개의 샘플)를 인지하고, 얼마나 많은 오디오 프레임이 각 코덱의 인버케이션(invocation)으로 생산되었는지 인지하게 된다. 많은 오디오 프레임 때문에, 인코더 스토리지는 인코딩된 스트림릿(즉, 콘텐츠 파일)에 적합할 수 있고, 고정-시간 기간을 기초로 비디오의 일부분을 가지고 있다. 마지막 오디오 프레임을 0으로 패딩하는 대신, 오디오의 다음 부분의 전체 프레임이 인코딩되고 현재 스트림릿에 더해질 수 있다. 이는 현재 스트림릿 대신에 반면에 쓰여진 순차적인 스트림릿 내에 오디오의 양이 작게 되게 한다. 오디오 스트림이 간격(gap)을 가리키도록, 후속적인 스트림릿에 그 후 타임 오프셋이 주어져, 재생시의 연속적인 스트림과 같이 오디오가 디코더로 이동한다. 이 동일한 시간 양이 이 스트림릿에 대한 오디오의 목표 기간으로부터 빼진다. 이 순차적인 스트림릿의 오디오 끝이 프레임 경계로 떨어지지 않으면, 오디오는 최종 프레임을 채우기 위해 다시 순차적인 스트림릿에서 반사된다(borrowed). 이 프로세스는 미디어 콘텐츠 스트림의 끝에 도달할 때까지 반복된다. 디코딩 및 재생 전에 스트림릿의 오디오 부분이 단계적으로 이동하면, 오디오가 반사된 스트림릿의 초반에 삽입된 간격이 제거될 수 있다. 랜덤 스트림릿을 찾을 때, 무음 오디오가 오디오/비디오의 동기화를 유지하기 위해 상기 간격의 기간 동안 재생될 수 있다.
본 명세서에서 설명된 바와 같이 오디오 분할에 대한 실시예가 비디오와 동일한 고정-시간 기간을 유지하면서, 경계 아티팩츠 없이 큰 코덱이 적용된 프레임 크기(AAC, AC3 등)의 오디오 코덱을 이용하는 미디어 콘텐츠의 오디오를 인코딩하는 기능을 제공한다.
다음 설명에서, 세부사항은 앞서 명시돼있다. 그러나, 본 발명의 실시예가 구체적인 세부사항 없이 본 발명의 이점을 아는 이 기술분야의 일반적인 기술자에 의해 실시될 수 있다는 것이 명백할 것이다. 몇몇 예에서, 알려진 구조 및 장치가 본 발명의 실시예를 모호하지 않게 하기 위해, 구체적으로 하지 않고 블록으로 표현된다.
다음의 세부적인 설명의 몇몇 부분이 컴퓨터 메모리 내의 데이터 비트 상의 동작의 알고리즘 및 상직적인 표현으로 표현된다. 이 알고리즘을 이용한 설명 및 표현은 데이터 처리 분야의 기술자들이 그들의 업무의 실체을 다른 기술자들에게 가장 효과적으로 전달하기 위해 사용되는 수단이다. 그리고 일반적으로 본 명세서에 알고리즘은 목적하는 결과로 리드하는 일관성 있는 순서의 단계를 가진다. 단계는 물리적인 양에 대한 물리적인 조작을 요구한다. 보통, 불필요하지만, 저장, 전송, 결합, 비교, 및 다른 조작이 가능한 양은 전기적 또는 자기적 신호의 형태를 가진다. 비트, 값, 요소, 기호, 문자, 용어, 수 등으로 이 신호들을 언급하기 위해 보통으로 사용하기 때문에 현재 일반적으로 편리하다.
그러나, 이와 같은 것 및 유사한 용어들이 적절한 물리적 양과 관련되는 이러한 양에 단지 적용되는 편리한 라벨이라는 것이 인정되어야 한다. 하기에서 구체적으로 언급하지 않는 한, 명세서 전반에 걸쳐, "수신" "인코딩" "생성" "나누기" "프로세싱" "컴퓨팅" "계산" "결정" "디스플레이" 등과 같은 용어를 이용하는 사항은, 컴퓨터 시스템의 레지스터 또는 메모리내의 물리적인 (예컨대, 전기) 양으로써 표현되는 데이터를, 컴퓨터 시스템 메모리 또는 레지스터 또는 다른 이와 같은 정보 스토리지 또는 전송 또는 디스플레이 장치 내의 물리적인 양으로 표현되는 다른 유사한 데이터로 조작 및 전송하는 것을 언급한다.
본 발명의 실시예는 본 명세서에서 설명하는 동작을 수행하기 위한 장치에 또한 관련된다. 이 장치는 특정 목적을 위해 특별히 구성될 수 있고 또는 컴퓨터 시스템 내에 저장된 컴퓨터 프로그램으로 특별히 프로그램된 범용 컴퓨터 시스템을 포함할 수 있다. 이런 컴퓨터 프로그램은, 컴퓨터로 판독 가능한 기록매체에 기록될 수 있고, 이러한 기록매체는 플로피 디스크, 광 디스크, CD-ROM 및 자기광디스크(MOD), ROM, RAM, EPROM, EEPROM, 자기 또는 광 카드, 또는 전자적 명령을 저장하기에 적합한 임의의 종류의 미디어를 포함하는 임의의 종류의 디스크로 제한되지 않는다.
본 명세서에서 언급되는 용어 "인코딩된 스트림릿(encoded streamlet)" 은 미디어 콘텐츠의 일 부분에 대해 단일 인코딩된 대상을 언급한다. 각 스트림릿은, 미디어의 일 부분을 포함하는 개별적인 콘텐츠 파일일 수 있고, 개별적으로 캐시에 저장되고, 미디어 플레이어에 의해서 독립적으로 요청할 수 있고, 독립적으로 플레이 할 수 있는 독립적인 미디어 객체로써 압축될 수 있다. 이 개별적인 파일들은 본 명세서에서 QSS 파일로 또한 언급된다. 일 실시예에서, 스트림릿은. 지정된 미디어 서버 대신에 비지정된 서버에 의해서 제공될 수 있는 고정 파일(static file)이다. 일 실시예에서, 스트림릿 내의 미디어 콘텐츠는 미리 결정된 재생시간 길이를 가질 수 있다(또는 고정-시간 기간으로 언급될 수 있다). 미리 결정된 시간 길이는 예컨대, 대략 0.1 에서 8.0 초 사이의 범위 내에 있을 수 있다. 또는 다른 미리 결정된 시간 길이가 이용될 수 있다. 스트림릿 내의 미디어 콘텐츠는, 스트림 내에 포함된 미디어 콘텐츠의 시간과 관련된 특정한(unique) 시간 인덱스를 가지고 있을 수 있다. 파일명은 시간 인덱스 부분을 포함할 수 있다. 또는 스트림릿이 시간 인덱스 대신 파일 크기에 따라서 분할될 수 있다. 본 명세서에서 이용되는 용어 "스트림(stream)"은, 예컨대, 동일한 비트 레이트로 인코딩된 비디오의 부분과 같은, 동일한 비디오 품질 프로파일로 인코딩된 미디어 콘텐츠의 스트림릿 무리를 언급할 수 있다. 스트림은 원(original) 미디어 콘텐츠의 사본을 나타낸다. 스트림릿은 개별 파일로써, 콘텐츠 전송 네트워크(CDN)와 같은 네트워크를 통해 임의의 하나 이상의 콘텐츠 서버, 웹 서버, 캐시 서버, 프록시 캐시 또는 다른 장치상에 저장될 수 있다. 개별 파일(예컨대, 스트림릿)은 HTTP를 이용하는 웹 서버로부터 클라이언트 장치에 의해서 요청될 수 있다. HTTP와 같은 표준 프로토콜을 이용하는 것은, 실시간 스트리밍 프로토콜(RTSP)과 같은 새롭고 특정한 프로토콜에 대한, 방화벽을 설정하기 위한 네트워크 관리자를 필요하지 않고, 네트워크 트래픽을 통해서 인식하고 통과할 수 있다. 추가적으로, 미디어 플레이어가 요청을 시작하기 때문에, 예컨대 웹 서버는, 전체 스트림이 아니라 단지 요청된 스트림릿을 검색하고 제공하는 것이 요구된다. 미디어 플레이어는 하나 이상의 웹 서버로부터 스트림릿을 검색할 수 있다. 이 웹 서버는 지정된 서버 측 정보 없이 요청된 부분을 검색할 수 있다. 또 다른 실시예에서, 스트림릿은 개별 파일로, 네트워크 기반 오퍼레이터(예컨대, ISP)의 캐시 서버 또는 다른 CDN의 컴포넌트에 저장될 수 있다. 몇몇 실시예가 스트림릿의 이용을 설명하지만, 본 명세서에서 설명되는 실시예들은 스트림릿을 사용하는 컴퓨팅 시스템에서의 사용에 제한되지 않고, 인터넷 상에서 라이브 미디어 콘텐츠를 전송하기 위한 다른 기술을 이용하는 다른 시스템에서 또한 실행될 수도 있다. 예컨대, 또 다른 실시예에서, 미디어 콘텐츠 파일이 HTTP 범위 요청(range request)을 이용하여 요청될 수 있고, CDN내에 캐시(cache)될 수 있는 부분으로 분할된 단일의 파일 내에 저장된다.
이른바 푸시 기반의 스트리밍(push-based streaming) 및 풀 기반의 스트리밍(pull-based streaming) 이라는 미디어 스트리밍의 일반적인 두 종류가 있다. 푸시(Push) 기술은, 지정된 처리(transaction)를 위해 요청을 시작하는 퍼블리셔의 콘텐츠 서버(publisher's contents server)와 같은 서버가 있는 인터넷 기반의 통신 방법을 설명한다. 이와 다르게, 풀(Pull) 기술은, 정보의 전송 요청이 클라이언트 장치에 의해서 시작되고 서버에 의해서 응답하는 인터넷 기반의 통신 방법을 설명한다. 풀 기술에서 요청의 한 종류는 HTTP 요청이다(예컨대, HTTP GET 요청). 이와 반대로, 푸시 기반의 기술에서, 일반적으로 지정된 서버는 RTSP와 같은 지정된 프로토콜을 이용하여 데이터를 클라이언트 장치에 푸시한다. 또는 몇몇 푸시 기반의 기술은 HTTP를 이용하여 미디어 콘텐츠를 전달한다. 풀 기반의 기술에서, CDN은 미디어를 다수의 클라이언트 장치에 전달하기 위해 이용될 수 있다.
본 명세서에 설명되는 다양한 실시예가 풀 기반의 모델에 연관되지만, 실시예는 푸시 기반의 환경과 같은 다른 환경에서 실행될 수 있다는 것이 주목되어야 한다. 푸시 기반의 환경에서, 인코더에 의한 오디오 분할에 대한 실시예가 도 2에 관련하여 설명되는 풀 기반의 환경과 마찬가지 방식으로 수행될 수 있고, 인코딩된 파일(들)은 미디어 서버와 같은 콘텐츠 서버에 저장되고, 재생하기 위해 푸시 기반의 기술을 이용하여 미디어 콘텐츠를 클라이언트 장치로 전송할 수 있다. 이 실시예들이 상이한 품질 수준의 미디어 콘텐츠를 제공하고, 보통 조정 스트리밍(adaptive streaming)으로 언급되는, 상이한 품질 수준 사이에서의 스위칭이 가능하게 한다는 것이 또한 주목되어야 한다. 푸시 기반의 모델에서, 미디어 서버는 어느 콘텐츠 파일(들)을 클라이언트 서버로 보낼지를 결정하고, 반면에 풀 기반의 모델에서는 클라이언트 서버가 어느 콘텐츠 파일(들)을 콘텐츠 서버로부터 요청할지를 결정하는, 한가지 차이점이 있을 수 있다.
도 2는 본 실시예의 인코더(200)가 채용될 수 있는 컴퓨팅 환경(200)의 일 실시예를 나타내는 블록도이다. 컴퓨팅 환경(200)은 소스(205). 인코더(220), 콘텐츠 전송 네트워크(240)내의 원 콘텐츠 서버(210)(또는 미디어 서버 또는 원 서버로 언급된다), 및 각 클라이언트 장치(204)에서 동작하는 미디어 플레이어(200)를 포함한다. 콘텐츠 서버(210), 인코더(200), 및 클라이언트 장치(204)는 데이터 통신 네트워크로 커플링되어 있을 수 있다. 데이터 통신 네트워크는 인터넷을 포함할 수 있다. 또는 콘텐츠 서버(210), 인코더(200), 및 클라이언트 장치(204)는 공통 근거리 통신 네트워크(common local area network; LAN), 개인 영역 네트워크(personal area network; PAN), 캠퍼스 영역 네트워크(campus area network; CAN), 도시권 통신 네트워크(metropolitan area network; MAN), 원거리 통신 네트워크(wide area network; WAN), 무선 근거리 통신 네트워크(wireless local area network), 셀룰러 네트워크(cellular network), 가상랜(virtual local area network) 등에 위치할 수 있다. 클라이언트 장치(204)는, 셋톱박스, 디지털 수신기, 디지털 텔레비전 또는 다른 전자 장치와 같이 네트워크 상에서 통신하기 위해 구성된 클라이언트 워크스테이션, 서버, 컴퓨터, 휴대용 전자장치, 엔터테인먼트 시스템일 수 있다. 예컨대, 휴대용 전자장치는 핸드폰, 휴대용 게임 시스템, 휴대용 컴퓨팅 장치 등을 포함할 수 있으며 이에 제한되는 것은 아니다. 클라이언트 장치(204)는 방화벽, 라우터(router) 또는 다른 패킷 교환 장치를 통해 인터넷에 액세스할 수 있다.
묘사된 실시예에서, 소스(205)는 퍼블리셔 서버 또는 퍼블리셔 콘텐츠 리포지터리(repository)일 수 있다. 소스(205)는 미디어 콘텐츠에 대한 생성자 또는 분배자일 수 있다. 예컨대, 스트리밍될 미디어 콘텐츠가 텔레비전 프로그램 방송인 경우, 소스(205)는 텔레비전 서버 또는 ABC®채널 또는 MTV®채널 같은 케이블 네트워크 채널일 수 있다. 퍼블리셔는 인터넷상으로 미디어 콘텐츠를 인코더(220)로 전송하며, 상기 인코더는 미디어 콘텐츠를 수신하고 처리하기 위해 구성될 수 있으며, 미디어 콘텐츠의 콘텐츠 파일(들)을 원 콘텐츠 서버(210)에 저장할 수 있다. 일 실시예에서, 콘텐츠 서버(210)는 미디어 콘텐츠를 클라이언트 장치(204)로 전달하며, 클라이언트 장치는 클라이언트 장치 상에서 동작하는 미디어 플레이어 상에서 상기 콘텐츠를 플레이이 하기 위해 구성된다. 콘텐츠 서버(210)는 미디어 콘텐츠를 스트리밍함으로써 상기 미디어 콘텐츠를 클라이언트 장치(204)에 전달한다. 다른 실시예에서, 클라이언트 장치(204)는 여러 위치로부터 미디어 콘텐츠의 상이한 부분을 동시에(simultaneously) 또는 함께(concurrently) 수신하기 위해 구성되며, 하기에서 자세하게 설명한다.
콘텐츠 서버(210)에 저장된 미디어 콘텐츠가 다른 웹 서버에 또는CDN(240)의 프록시 캐시 서버로 복제될 수 있다. 복제가 콘텐츠 서버(210)로부터 의도적인 포워딩 또는 웹, 캐시, 클라이언트 장치(204) 대신에 콘텐츠를 요청하는 콘텐츠 서버(210)의 외부의 프록시 서버에 의해서 일어날 수 있다. 예컨대, 클라이언트 장치(204)는 임의의 다수의 웹 서버, 에지 캐시(edge caches) 또는 프록시 캐시 서버로부터 콘텐츠를 요청하고 수신할 수 있다. 상기 묘사되는 실시예에서, 웹 서버, 프록시 캐시, 에지 캐시, 및 콘텐츠 서버(210)는 CDN(240) 계층으로 조직화되어, 미디어 콘텐츠를 클라이언트 장치204로 전달한다. CDN은, 콘텐츠를 전달하기 위해 명백히 협동하는 인터넷을 통해 서로 연결된 컴퓨터 시스템이며, 예컨대 하나 이상의 원 콘텐츠 서버, 웹 서버, 캐시 서버, 에지 서버 등을 포함할 수 있다. 일반적으로, CDN은 일 계층으로 구성되며, 예컨대, 클라이언트 장치가 에지 캐시로부터 데이터를 요청하고, 에지 캐시가 요청된 데이터를 포함하지 않으면, 요청이 부모 캐시(parent cache)로 보내지고, 원 콘텐츠 서버까지 보내진다. CDN은 미디어 콘텐츠를 전달하기 위해서, 상호 연결된 컴퓨터 네트워크 또는 노드를 또한 포함할 수 있다. CDN의 일부 예들은 아카마이 테크놀로지스, 레벨3 커뮤니케이션스 또는 라임라이트 네트워크로부터 개발된 CDN 일 수 있다. 또는 CDN의 다른 종류가 이용될 수 있다. 다른 실시예에서, 본 발명 분야의 일반적 기술자는 이해할 수 있는 바와 같이, 원 콘텐츠 서버(210)은 미디어 콘텐츠를 다른 환경을 사용하는 클라이언트 장치(204)에 전달할 수도 있다.
일 실시예에서, 퍼블리셔는, 소스(205)로부터 분할(distribute)될 원 콘텐츠 파일 내에 미디어 콘텐츠를 저장한다. 콘텐츠 파일은 텔레비전 방송, 스포츠 이벤트, 영화, 음악, 콘서트등과 관련된 비디오 및/또는 오디오에 해당하는 데이터를 포함할 수 있다. 원 콘텐츠 파일은 압축되지 않은 비디오 및 오디오; 또는 압축되지 않은 비디오 또는 오디오를 포함할 수 있다. 또는, 콘텐츠 파일은 표준 또는 독점(proprietarily) 인코딩 규칙을 이용하여 압축된 콘텐츠(예컨대, 비디오 및/또는 오디오)를 포함할 수 있다. 소스(205)로부터의 원 콘텐츠 파일이 디지털 형식으로 디지털화 될 수 있고, 높은 비트레이트를 갖는, 예컨대, 대략 5 Mbps 또는 그보다 큰 미디어 콘텐츠를 포함할 수 있다.
상기 묘사된 실시예에서, 인코더(220)는 예컨대, 원 콘텐츠 파일, 라이브 이벤트 방송의 직접 피드로부터의 신호, 라이브 텔레비전 이벤트 방송의 스트림 등을 수신함으로써, 원 미디어 콘텐츠를 소스(205)로부터 수신한다. 인코더(220)는 하나 이상의 서버 컴퓨터, 게이트웨이 또는 다른 컴퓨팅 장치를 포함하는 하나 이상의 기계장치 상에서 실행될 수 있다. 일 실시예에서, 인코더(220)는 퍼블리싱 시스템(미도시, 예컨대 퍼블리셔 서버 또는 퍼블리셔 콘텐츠 레포지토리)으로부터 하나 이상의 콘텐츠 파일로써 원 미디어 콘텐츠(231)를 수신한다. 또는, 인코더(220)는 캡처되어있는 원 미디어 콘텐츠(231)을 수신한다. 예컨대, 인코더(220)는, 스트림 또는 신호의 형태로 캡처된 방송과 같은, 라이브 텔레비전 방송의 직접 피드(direct feed)를 수신한다. 원 미디어 콘텐츠(231)는, 텔레비전 및/또는 비디오를 캡처하기 위해 구성된, 예컨대, 캐나다, 온타리오의 디지털 래피즈(Digital Rapids)에서 이용 가능한 DRC-2600 캡처 카드, 캡처 카드에 의해서, 캡처될 수 있다. 또는 오디오 및 비디오를 캡처할 수 있는 임의의 캡처 카드가 본 발명과 함께 이용될 수 있다. 캡처 카드는 인코더와 동일한 서버에 위치할 수 있고 또는 별개의 서버에 위치할 수 있다. 원 미디어 콘텐츠(231)가, 공기, 케이블, 및/또는 위성을 통해 동시에 방송되는 방송 또는 라이브 이벤트 스케쥴에 따라 지정된 시간 내에 플레이 하도록 스케쥴된 미리 기록된 방송에 캡처될 수 있다. 인코더(220)는 DivX®코덱, Windows Media Video9®시리즈 코덱, Sorenson Video®3 비디오 코덱, On2 Technologies®의 TrueMotion VP7 코덱, MPED-4 비디오 코덱, H.263 비디오 코덱, RealVideo 10코덱, OGG Vorbis, MP3 등과 같은 인코딩 규칙을 이용할 수 있다. 또는 커스텀 인코딩 규칙이 채용될 수 있다.
다른 실시예에서, 인코더(220)는 예컨대 2초 청크(two-second chunk)와 같이 고정된 시간 기간의 비디오 및 오디오의 부분으로써(본 명세서에서는 미디어 콘텐츠의 부분으로 언급된다), 원 미디어 콘텐츠(231)를 수신한다. 2초 청크는 로우(raw) 오디오 및 로우(raw) 비디오를 포함할 수 있다. 또는, 2초 청크는 인코딩된 오디오 및 로우 비디오일 수 있다. 이 경우, 인코더(220)는 미디어 콘텐츠를 압축 해제한다. 다른 실시예에서, 인코더(200)는 다수의 로우 스트림릿으로써 원 미디어 콘텐츠(221)를 수신하며, 각 로우 스크림릿은 미디어 콘텐츠의 고정-시간 부분을 포함한다(예컨대, 로우 오디오 및 비디오를 포함하는 다수의 2초 로우 스트림릿). 본 명세서에서 이용되는 바와 같이, 용어"로우 스트림릿(raw streamlet)"은 차후에 품질의 중요한 손실 없이 크기를 줄이기 위해 압축되지 않거나 약간(lightly) 압축된 스트림릿을 언급한다. 약간 압축된 로우 스트림릿은 더 빠르게 전송될 수 있다. 다른 실시예에서, 인코더(220)는 스트림 또는 신호로써 원 미디어 콘텐츠(231)를 수신하고 미디어 콘텐츠를, 로우 스트림릿과 같은 미디어 콘텐츠의 고정-시간 부분으로 분할한다.
상기 묘사된 실시예에서, 인코더(220)는 분할기(222), 고정-프레임 오디오 인코더(224), 오디오 프레임 버퍼(225), 고정-시간 비디오 인코더(226), 비디오 프레임 버퍼(227) 및 오디오 분할 멀티플렉서(228)를 포함한다. 분할기(222)는 예컨대 연속적인 오디오 및 비디오 스트림으로써 원 미디어 콘텐츠(231)를 수신하고, 미디어 콘텐츠(231)를 로우 오디오(233) 및 로우 비디오(235)로 분할한다. 일 실시예에서, 고정-프레임 오디오 인코더(224)는 오디오 코덱이다. 일 실시예에서, 분할기(222)는 연속적인 오디오 및 비디오 스트림을 오디오 및 비디오의 2초 청크로 분할한다. 코덱(압축기-압축해제기 또는 코더-디코더로 또한 언급된다)은 디지털 데이터 스트림 또는 신호를 인코딩 및/또는 디코딩할 수 있는 장치 또는 컴퓨터 프로그램이다. 일 실시예에서, 고정-프레임 오디오 코덱(224)은 로우 오디오(233)를 인코딩하기 위한 인코더(220)에 관한 하나 이상의 컴퓨팅 장치에 의해 실행되는 소프트웨어이다. 또는 고정-프레임 오디오 코덱(224)은 로우 오디오(233)를 인코딩하기 위해 이용되는 하드웨어 로직일 수 있다. 특히, 고정-프레임 오디오 인코더(224)는 로우 오디오(233)를 수신하고, 예컨대, AAC-LC에 있어서 1024개 샘플 또는 HE AAC에 있어서 2048개 샘플과 같은, 코덱이 적용된 프레임 크기에 따라서 오디오를 인코딩한다. 고정 프레임 오디오 인코더(224)는 인코딩된 오디오 프레임(237)을 오디오 프레임 버퍼(225)로 출력한다. 유사하게, 고정-시간 비디오 인코더(226)는 분할기(220)로부터 로우 비디오(235)를 수신하고, 예컨대, 매2초마다 60프레임(초당 30프레임(30fps)과 같은, 고정-시간 기간에 따라서 비디오를 인코딩한다. 고정-시간 비디오 인코더(226)는 인코딩된 비디오 프레임(239)을 비디오 프레임 버퍼(227)로 출력한다. 일 실시예에서, 고정-시간 비디오 코덱(226)은 로우 비디오(235)를 인코딩하기 위한 인코더(220)에 대한 하나 이상의 컴퓨팅 장치에 의해 실행되는 소프트웨어이다. 또는 고정-시간 비디오 코덱(226)은 로우 비디오(235)를 인코딩하기 위해 이용되는 하드웨어 로직일 수 있다.
오디오 분할 멀티플렉서(228)는 인코딩된 오디오 프레임(237) 및 인코딩된 비디오 프레임(239)을 이용하여 인코딩된 미디어 콘텐츠 파일(232)(본 명세서에서는 QSS 파일이라고 언급한다)을 생성한다. 상술한 바와 같이, 종래의 인코더는, 각각 고정-시간 기간이 있는 비디오 부분 및 오디오 부분이 있는 콘텐츠 파일을 생성하며, 상기 부분의 샘플 수가, 오디오 코덱에 의해 이용되는 코덱이 적용된 프레임 크기에 따라서 프레임당 샘플수로 균등하게 나눠질 수 없기 때문에 오디오의 마지막 프레임은 0으로 패딩된다. 마지막 프레임을 패딩하는 종래의 인코더와 달리, 상기 오디오 분할 멀티플렉서(228)는 전체 오디오 프레임을 이용하여 고정-시간 비디오 부분 및 코덱 적용 프레임 크기를 갖는 전체 오디오 프레임을 갖는 오디오 부분을 갖는 콘텐츠 파일을 생성한다. 오디오 분할 멀티플렉서(228)는 전체 오디오 프레임을 이용하여 콘텐츠 파일(232)을 채우기 때문에, 오디오 분할 멀티 플렉서(228)는 종래와 같이 0으로 프레임의 마지막 적은 샘플을 패딩하지 않고, 전체 프레임을 현재 콘텐츠 파일(232)에 더하기 위해 후속하는 오디오의 부분을 인코딩한다.
일 실시예에서, 오디오 분할 멀티플렉서(228)는, 얼마나 많은 프레임이 후속하는 콘텐츠 파일에 이용될 것인지 결정하기 위해 후속하는 부분에 이용되는 샘플의 양을 나타내는 샘플 오프셋(sample offset)을 추적한다. 오디오 분할 멀티플렉서(228)는 오디오 재생에서의 간격(gap)을 가리키는 프리젠테이션 오프셋(presentation offset)을 또한 추적한다. 후속하는 콘텐츠 파일의 일부로서 재생되어야 할 샘플이 현재 콘텐츠 파일의 일부이기 때문에, 후속하는 콘텐츠 파일의 프리젠테이션 오프셋이 오디오 재생에서 간격을 가리키고, 현재 및 후속하는 콘텐츠 파일의 오디오 부분이 연속적인 스트림으로써 디코더로 진행한다. 본질적으로, 오디오 재생 동안, 콘텐츠 파일의 초반에 삽입된 간격(gap)이, 콘텐츠 파일의 오디오 부분이, 디코딩 및 재생 전에 나타나면 제거될 수 있다. 프리젠테이션 오프셋은 오디오가, 경계 아티팩츠를 가진 많은 작은 세그먼트 보다는, 연속적인 스트림으로 디코더로 이동하게 한다. 일 실시예에서, 비디오의 임의의 부분을 찾을 때, 오디오/비디오 동기화를 유지하기 위해, 무음 오디오가 상기 간격의 기간 동안 재생될 수 있다.
일 실시예에서, 오디오 분할 멀티플렉서(228)는, 고정-시간 기간(예컨대, 2초)를 갖는 제1 비디오 부분(예컨대 60프레임) 및 버퍼링된 전체 오디오 프레임 수를 갖는 제1 오디오 부분으로 제1 콘텐츠 파일을 채움으로써 제1 콘텐츠 파일을 생성한다. 버퍼링된 오디오 프레임의 기간은 고정-시간 기간보다 크다.
일 실시예에서, 오디오 분할 멀티플렉서(228)는, 현재 콘텐츠 파일을 채우는데 필요한 인코딩된 오디오 프레임(237)의 수를 결정함으로써 콘텐츠 파일(232)을 생성한다. 일 실시예에서, 프레임의 수는 코덱이 적용된 프레임 크기(예컨대, 프레임당 샘플)로 분할된 현재 콘텐츠 파일을 채우는데 요구되는 샘플의 수보다 작지 않은 최소 정수이다. 일 실시예에서, 이 수는 실제 수를 다음 가장 큰 정수로 보여주는 올림 함수(ceiling function)를 이용하여 계산될 수 있다 예를 들면, ceiling(x)=[x]는 x보다 작지 않은 최소 정수이다. 올림 함수의 일 예가 하기의 수학식(1)에 나타난다.
[수학식 1]올림 함수(스트림릿당 샘플수 - 오프셋 샘플수)/프레임당 샘플 수)
또는 다른 식이 이용될 수 있다.
오디오 분할 멀티플렉서(228)는, 현재 콘텐츠 파일을 채우기 위한 오디오 프레임 버퍼(225) 내의 인코딩된 오디오 프레임(237)이 충분한지 여부를 결정한다. 버퍼링된 인코딩된 프레임이 충분하면, 오디오 분할 멀티플렉서(228)는 현재 콘텐츠 파일을 결정된 프레임 수로 채운다. 버퍼링된 인코딩된 프레임이 적으면, 오디오 분할 멀티플렉서(228)는, 버퍼(225)에 저장된 인코딩된 프레임이 충분할 때까지 기다리고, 버퍼(225)에 저장된 결정되어 있는 인코딩된 프레임의 수로 현재 콘텐츠 파일을 채운다. 일 실시예에서, 오디오 분할 멀티플렉서(228)는 버퍼링된 인코딩된 프레임이 충분한지 여부를 1) 버퍼링된 프레임의 수를 프레임당 샘플의 수에 곱하는 단계, 2) 이전 콘텐츠 파일에 샘플 오프셋이 있으면, 상기 샘플 오프셋을 상기 곱셈결과에 더하는 단계, 3) 상기 더한 결과가 현재 콘텐츠 파일을 채우는데 필요한 샘플의 수와 같거나 큰지 여부를 결정하는 단계에 의해서 결정한다. 이 동작의 일 예가 하기의 수학식(2)에 나타난다.
[수학식 2] 버퍼링된 프레임의 수 * 프레임당 샘플수 + 오프셋 샘플수 >= 스트림릿당 샘플수
오디오 분할 멀티플렉서(228)는 후속하는 콘텐츠 파일에 샘플 오프셋이 있으면, 샘플 오프셋을 결정한다. 일 실시예에서, 오디오 분할 멀티플렉서(228)는, 인코딩된 프레임의 수를 코덱이 적용된 프레임 크기(즉, 프레임당 샘플)에 곱하고, 현재 콘텐츠 파일을 채우기 위해 필요한 샘플의 수를 빼고, 이전 콘텐츠 파일에 샘플 오프셋이 있으면, 그 샘플 오프셋을 더함으로써 샘플 오프셋을 결정한다. 일 예시적인 동작이 하기의 수학식 (3) 및 수학식 (4)에 나타난다.
[수학식 3] 오프셋 샘플 = 보낼 프레임 * 프레임당 샘플 - 스트림릿당 샘플 - 오프셋 샘플, 여기서 [수학식 4] 보낼 프레임 = 올림 함수((스트림릿당 샘플 - 오프셋 샘플) / 프레임당 샘플)
또 다른 실시예에서, 오디오 분할 멀티플렉서(228)는 현재 콘텐츠 파일을 채우기 위해 필요한 샘플의 수(예컨대, 96,000)를 계산함으로써 콘텐츠 파일(221)을 생성한다. 오디오 분할 멀티플렉서(228)는 현재 콘텐츠 파일에 필요한 프레임 수를 계산하고(예컨대, 두 개의 제2부분에 대해 48K 샘플링 레이트로 93개 프레임), 그리고 프레임당 샘플로 분할된 샘플의 수가 균등하게 분할되지 않은 경우, 일 프레임을 상기 프레임의 수에 더한다(예컨대, 총 94개 프레임). 사실상 프레임의 수를 다음 최대 정수로 모은다. 오디오 분할 멀티플렉서(228)는 현재 콘텐츠 파일을 상기 모아진 프레임수로 채운다.
또 다른 실시예에서, 오디오 분할 멀티 플렉서(228)는, 현재 콘텐츠 파일을 채우기 위해 필요한 샘플의 수(예컨대, 96,000)를, 샘플링 레이트(예컨대, 48K)를 고정-시간 기간(예컨대, 2초)에 곱하여 계산함으로써 콘텐츠 파일(221)을 생성한다. 오디오 분할 멀티플렉서(228)는 샘플의 수를 코덱 적용 프레임 크기(예컨대, 프레임당 1024개 샘플)로 나눔으로써 현재 콘텐츠 파일에 필요한 프레임의 수를 계산한다. 상기 나눈 나머지가 0이면, 오디오 분할 멀티플렉서(228)는 현재 콘텐츠 파일을 프레임의 수로 채운다. 그러나, 나눈 결과가 0보다 크면, 오디오 분할 멀티플렉서(228)는 프레임의 수를 하나씩 증가시키고 현재 콘텐츠 파일을 증가된 프레임의 수로 채운다.
추가적인 실시예에서, 오디오 분할 멀티플렉서(228)는 현재 콘텐츠 파일을 채우는데 필요한 샘플의 수로 변환하기 위해 프레임 수를 코덱이 적용된 프레임 크기로 곱함으로써, 그리고 샘플의 수를 샘플링 레이트로 나눔으로써(예컨대, 스트림릿 기간 = 스트림릿당 샘플 / 샘플링 레이트) 현재 콘텐츠 파일의 오디오 기간을 계산함으로써 콘텐츠 파일(221)을 생성한다. 오디오 분할 멀티플렉서(228)는, 고정-시간 기간에서 상기 기간을 뺌으로써, 후속하는 콘텐츠 파일의 프리젠테이션 오프셋을 결정한다. 오디오 분할 멀티플렉서(228)는, 프레임의 수를 코덱이 적용된 프레임 크기에 곱하고, 현재 콘텐츠 파일을 채우는데 이용되는 샘플의 수를 빼고, 이전 콘텐츠 파일에 샘플 오프셋이 있으면 이를 더함으로써(예컨대, 식(3), 후속하는 콘텐츠 파일에 대한 샘플 오프셋을 업데이트한다.
도 2를 재 참조하면, 일 실시예에서, 분할기(222)가 로우 스트림릿으로써 원 미디어 콘텐츠(231)을 수신하면, 분할기(222)는 제1 로우 스트림릿 및 제2 로우 스트림릿을 수신하고, 제1 로우 스트림릿 및 제2 로우 스트림릿의 오디오 및 비디오를 분할한다. 고정-시간 비디오 인코더(226)는 제1 및 제2 로우 스트림릿을 인코딩하고, 오디오 분할 멀티플렉서(228)는 제1 로우 스트림릿의 인코딩된 비디오를 제1 콘텐츠 파일에 저장하고, 제2 로우 스트림릿의 인코딩된 비디오를 제2 콘텐츠 파일에 저장한다. 고정-프레임 오디오 인코더(224)는 제1 로우 스트림릿의 오디오를 오디오 프레임의 제1 세트로 인코딩하고, 상기 제1 세트를 오디오 프레임 버퍼(225)에 저장한다. 오디오 분할 멀티플렉서(228)는 제1 콘텐츠 파일을 채우기 위한 버퍼링된 프레임이 충분한지 여부를 결정한다. 불충분하면, 고정 프레임 오디오 인코더는 제2 로우 스트림릿의 오디오를 오디오 프레임의 제2 세트로 인코딩하고, 상기 제2 세트를 오디오 프레임 버퍼(225)에 저장한다. 제1 콘텐츠 파일을 채우기 위한 버퍼링된 프레임이 충분하면(몇몇 경우에, 하나 이상의 전체 프레임이 버퍼225에 저장돼있다), 오디오 분할 멀티플렉서(228)가 버퍼링된 오디오 프레임을 제1 콘텐츠 파일에 저장한다. 인코더(220)는 미디어 콘텐츠가 종료될 때까지 이 프로세스를 계속한다.
또한, 오디오 분할 멀티플렉서(228)는 전체 오디오 프레임을 이용하기 때문에, 하나의 콘텐츠 파일(232)내의 오디오 프레임이 도 6a 및 6b에 나타난것과 같이 비디오 부분 경계와 나란할 필요는 없다. 예컨대, 콘텐츠 파일(232)의 오디오부분의 기간이 2.0053초일 수 있는 반면, 콘텐츠 파일(232)의 비디오 부분의 고정-시간 기간은 2.00초일 수 있다. 이 예에서, 코덱 적용 프레임 크기가 프레임당 1024샘플이고, 오디오의 샘플링 레이트가 48K이며, 콘텐츠 파일(232) 내에 저장된 오디오 부분에 저장된 94개 프레임에 대한 96256개의 샘플이 있다. 콘텐츠 파일(232) 내에 여분의 53 ms(millisecond)가 있기 때문에, 오디오 분할 멀티플렉서(228)는 다음의 콘텐츠 파일에 53ms의 프리젠테이션 오프셋을 제공한다 이는 현재 콘텐츠 파일이, 고정-시간 기간 오디오 인코딩 규칙을 이용할 때 다음 콘텐츠 파일 내에 있을 수 있는, 53ms의 기간을 갖는 샘플을 사용하기 때문이다. 오디오 분할 멀티플렉서(228)은 얼마나 많은 오디오 프레임이 다음 콘텐츠 파일을 채우기 위해 필요한지를 결정하기 위해 샘플 오프셋을 또한 추적할 수 있다. 일 실시예에서, 오디오 분할 멀티플렉서(228)는 각 콘텐츠 파일을 고정-시간 기간(예컨대, 프레임 레이트가 초당 30프레임 일 때, 60 비디오 프레임에 대해 2초)을 가지고 있는 인코딩된 비디오 부분으로 채운다. 오디오 분할 멀티플렉서(228)에 의해 결정된 바와 같이, 오디오 프레임이 비디오 부분 경계와 나란하지 여부를 기초로 하여, 오디오 분할 멀티플렉서 (228)는, 일부 콘텐츠 파일은 고정-시간 기간보다 크거나, 고정 지속 기간보다 작거나, 또는 고정 기간과 같은 기간을 갖는 버퍼링된 오디오 프레임의 수로 채운다.
도 6a를 참조하면 일 실시예에서 오디오 분할 멀티플렉서(228)는, 제1 스트림릿(601)을, 2초의 고정-시간 기간과 같은 기간인 대략 6개의 비디오 프레임을 가지고 있는 제1 비디오 부분(611) 및 프레임당 각각 1024개의 샘플을 가지고 있는 94개의 오디오 프레임(총 96,256 개 샘플)을 갖는 제1 오디오 부분(621)으로 채움으로써 제1 스트림릿(601)(즉, 콘텐츠 파일)을 생성한다. 제1 오디오 부분(621)의 기간은 대략 2.0053초이다. 오디오 분할 멀티플렉서(228)는, 제1 스트림릿(601)의 오디오 경계(652) 및 비디오 경계(654)가 재생 동안 나란하기 때문에, 제1 스트림릿의 제1 오디오 부분(631)에 프리젠테이션 오프셋을 0으로 결정한다.
오디오 분할 멀티플렉서(228)는, 제2 비디오 부분(612)(60프레임 및 2초) 및94개의 오디오 프레임을 갖는 제2 오디오 부분(622)을 채움으로써 제2 스트림릿(602)을 생성한다. 제2 오디오 부분(622)의 기간은 대략 2.0053초이다. 제1 스트림릿(601)의 제1 오디오 부분(621)의 기간이 대략 2.0053초이기 때문에, 오디오 분할 멀티플렉서(228)는 제2 스트림릿(602)의 제2 오디오 부분(632)에 프리젠테이션 오프셋이 대략 5.4 ms로 결정한다. 프리젠테이션 오프셋은, 제1 스트림릿(601) 및 제2 스트림릿(602) 사이의 오디오 내의 간격(gap)을 가리킨다. 도 6b에 보이는 바와 같이, 제2 스트림릿(602)의 오디오 경계(652) 및 비디오 경계(654)는 재생 동안 나란하지 않다. 프리젠테이션 오프셋은 제1 스트림릿(601) 및 제2 스트림릿(602)의 오디오 부분이, 연속적인 스트림으로 디코더에 프레젠테이션하기 위해 나타나게 하도록 이용될 수 있다.
오디오 분할 멀티플렉서(228)는 제3 스트림릿(603)을 제3 비디오 부분(613)(60프레임 및 2초) 및 94 오디오 프레임을 갖는 제3 오디오 부분(623)으로 채움으로써, 제3 스트림릿(603)을 생성한다. 제3 오디오 부분(623)의 기간은 대략 2.0053초 이다. 제2 스트림릿(602)의 제2 오디오 부분(622)의 기간이 대략 2.0053초 이기 때문에, 오디오 분할 멀티플렉서(228)는 제3 스트림릿(603)의 제3 오디오 부분(633)에 프리젠테이션 오프셋을 대략 10.66 ms로 결정한다. 프리젠테이션 오프셋은, 제2 스트림릿(602) 및 제3 스트림릿(603) 사이의 오디오 내의 간격을 가리킨다. 도 6b를 보면, 제3 스트림릿(603)의 오디오 경계(652) 및 비디오 경계(654)는 재생 동안 나란하지 않다. 프리젠테이션 오프셋은 제2 스트림릿(602) 및 제3 스트림릿(603)의 오디오 부분이, 연속적인 스트림으로 디코더에 프레젠테이션하기 위해 나타나게 하도록 이용될 수 있다.
오디오 분할 멀티플렉서(228)는 제4 스트림릿(604)에, 제4 비디오 부분(614)(60프레임 및 2초) 및 93개 오디오 프레임을 갖는 제4 오디오 부분으로 채움으로써, 제4 스트림릿(604)을 생성한다. 제4 오디오 부분(624)의 기간은 대략 1.984 초이다. 제3 스트림릿(603)의 제3 오디오부분(623)에 기간이 대략 2.0053 초이기 때문에, 오디오 분할 멀티플렉서(228)는 제4 스트림릿(604)의 제4 오디오 부분 (634)에 프리젠테이션 오프셋을 대략 16ms로 결정한다. 프리젠테이션 오프셋은, 제3 스트림릿(603) 및 제4 스트림릿(604) 사이의 오디오 내의 간격을 가리킨다. 도 6b를 보면, 제4 스트림릿(604)의 오디오 경계(652) 및 비디오 경계 (654)가 재생 동안 나란하지 않다. 프리젠테이션 오프셋은 제3 스트림릿(603) 및 제4 스트림릿(604)의 오디오 부분이, 연속적인 스트림으로 디코더에 프레젠테이션 하기 위해 나타나게 하도록 이용될 수 있다. 제4 스트림릿(604) 후에, 그러나 오디오 경계(652) 및 비디오 경계(654)가 나란하게 되면, 제5 스트림릿(미도시)은 0의 프리젠테이션 오프셋을 가질 것이다. 도 6a 및 도 6b의 실시예는 샘플링 레이트가 48 KHz, 고정-시간 기간이 2초, 및 코덱이 적용된 프레임 크기가 프레임당 1024 샘플이라고 가정하였음이 주목되어야한다.
상술한 일 실시예에서, 제1 내지 제3 스트림릿(601-603)의 오디오 부분은 94개 오디오 프레임을 가지고, 제4 스트림릿(604)의 오디오 부분은 93개 오디오 프레임을 가진다. 이 실시예에서, 네 개의 콘텐츠 파일(601-604)의 각 비디오 부분은, 비디오가 초당 30프레임으로 인코딩되는 경우, 대략 60개 비디오 프레임을 가진다. 이 패턴은 미디어 콘텐츠의 끝에 도달할 때까지 계속된다. 이 실시예에 있어서, 모든 네 개의 콘텐츠 파일 후에, 프리젠테이션 오프셋 및 샘플 오프셋은 0이고, 이는 모든 네 개의 콘텐츠 파일 이후 오디오 경계(652) 및 비디오 경계(654)가 나란하다는 것을 의미한다.
도 6b에서 볼 수 있는 것처럼, 미디어 콘텐츠의 8초 후에, 비디오 및 오디오 경계가 나란하다. 이처럼, 경계 아티팩츠 빈도를 설명하고, AAC 프레임 크기를 나란하게 하기 위한 또 다른 접근방식이 고정-시간 기간에 대하여 8초를 이용할 수 있다. 그러나, 이러한 접근방식은 아래의 문제점이 있다: 1) 이 접근방식은 8, 16, 또는 32 초와 같이 큰 청크 크기를 요구한다. 2) 지정된 프레임 크기로 실행하는 것을 구속(tie)한다 즉, 프레임당 1024 샘플. 예를 들어 프레임 크기가 2048 까지 변하면, 이 접근방식은, 상이한 프레임 크기를 갖는 오디오 코덱으로 바꾸고, 비디오의 청크 기간을 또한 변화시켜야 한다. 3) 이 접근방식은 오디오 샘플 레이트가 언제나 48 kHz가 되도록 요구한다. 44.1 kHz와 같이 다른 보통 샘플 레이트는 상이한 것과 잠재적으로 매우 큰 청크 크기를 요구한다. 또는, 소스 오디오는 샘플링 레이트를 48 kHz까지 올려야 한다(업-샘플링; up-sampled). 그러나, 이 업 샘플링은 아티팩츠를 발생시키고, 오디오 코덱의 효율을 떨어뜨릴 수 있다. 그러나 본 명세서에서 설명되는 실시예는, 동일한 청크 기간을 유지하면서, 청크 경계 아티팩츠를 발생하지 않으면서 큰 프레임 크기를 가진 오디오 코덱(AAC, AC3 등)을 이용하여 인코딩하는 능력을 가지고 있다.
또한, 다른 샘플링 레이트(예컨대, 44.1 kHz), 고정-시간 기간(예컨대, 0.1-5.0 초), 비디오 프레임 레이트(예컨대, 24 fps, 30 fps 등), 및/또는 코덱-적용 프레임 크기(예컨대, 2048)가 이용될 수 있다. 상이한 소스 비디오는 상이한 프레임 레이트를 이용한다. 미국에서 방송되는 대부분의 신호는 초당 30프레임이다(실제로는 29.97). 일부 HD 신호는 초당 60프레임이다(59.94). 일부 파일 기반 콘텐츠는 초당 24 프레임이다. 일 실시예에서, 인코더(220)가 추가적인 프레임을 생성하도록 요구되기 때문에, 인코더(220)는 비디오의 프레임 레이트를 증가시키지 않는다. 그러나, 추가적인 프레임을 생성하는 것은 이러한 추가적인 적재(burden)에 대하여 그리 많은 이익을 제공하지는 않는다. 예컨대, 원 미디어 콘텐츠가 24 fps의 프레임 레이트를 가지고 있으면, 인코더(220)는 30 fps로 업 샘플링하기보다는 24 fps의 프레임 레이트를 이용한다. 그러나, 몇몇 실시예에서, 인코더(220)는 프레임 레이트를 다운 샘플링(down-sample)할 수 있다. 예컨대, 원 미디어 콘텐츠가 60 fps의 프레임 레이트를 가지면, 인코더(220)는 30 fps로 다운샘플링 한다. 이는 60 fps는 목표 비트 레이트에서 인코딩되는데 요구되는 데이터의 양이 두 배이기 때문이기 때문이며, 품질을 안 좋게한다. 일 실시예에서, 인코더(220)가 수신되거나 다운 샘플링(일반적으로 30 fps, 24 fps) 후에 프레임 레이트를 일단 결정하면, 인코더(220)는 이 프레임 레이트를 대부분의 품질 프로파일에 이용한다. 최소 품질 프로파일과 같은 몇몇 품질 프로파일이 낮은 프레임 레이트를 이용할 수 있다. 그러나, 다른 실시예에서, 인코더(220)는, 크지 않은 컴퓨터 능력(computational power)과 같이 제한된 자원(resource)이 있는 모바일폰 및 다른 장치를 목표로 하는것과 같이, 상이한 품질 프로파일에 대하여 상이한 프레임 레이트를 이용할 수 있다. 이 경우, 낮은 프레임 레이트로 더 많은 프로파일을 갖는 것이 이점일 수 있다.
이 파라미터들에 대하여 다른 값을 사용할때, 오디오 경계(652) 및 비디오 경계(654)가 도 6b에 나타나는 실시예와 다를 수 있다. 예컨대, 44.1 kHz 샘플링 레이트, 1024의 코덱 적용 프레임 크기, 및 2초의 고정-시간 기간을 이용할 때, 제1콘텐츠 파일의 오디오 부분이 87개의 오디오 프레임을 가지고, 제2 내지 제7 콘텐츠 파일이 86개의 오디오 프레임을 가질 것이다. 이 패턴은, 미디어 콘텐츠 내에 남은 비디오가 충분하지 않을 때까지 자체적으로 반복된다. 이 실시예에서, 매 128개의 콘텐츠 파일 후에, 상기 축약된 표 1-1에 나타난 바와 같이, 매 128번째 콘텐츠 파일 후에 오디오 경계(652) 및 비디오 경계(654)가 나란해지는 것을 의미하는, 프리젠테이션 오프셋 및 샘플 오프셋이 0이 된다는 점이 주목되어야 한다.
[표1-1]
Figure 112014066721797-pat00001
위 표에서 샘플 오프셋이, 설명을 간단히 하기 위해, 초 또는 밀리 초가 아닌 샘플 단위로 나타난다는 점이 주목되어야 한다. 샘플 오프셋을 프리젠테이션 오프셋으로 변환하기 위해, 샘플 오프셋이 44,100으로 나눠져 초 단위 프리젠테이션 오프셋을 얻을 수 있고, 1,000을 곱함으로써 밀리초 단위 프리젠테이션 오프셋을 얻을 수 있다. 일 실시예에서, 밀리초의 프리젠테이션 오프셋이 스트림릿 헤더에 저장될 수 있다. 또한, 프리젠테이션 오프셋 또는 샘플 오프셋이 다른 유닛 내의 스트림릿 헤더에 저장될 수 있다.
또 다른 실시예에서, 오디오 분할 멀티플렉서(228)는 고정-시간 기간(예컨대, 고정-시간 기간 부분)을 갖는 인코딩된 비디오 프레임(239)으로 각 콘텐츠 파일(232)을 채움으로써 인코딩된 콘텐츠 파일(232)을 생성하고, 고정-시간 기간보다 크거나 작은 오디오 프레임(237)의 기간을 갖는 전체 오디오 프레임(237)의 수로 콘텐츠 파일(232)을 채워서 콘텐츠 파일(232)에 사용되는 전체 오디오 프레임을 수용한다. 예컨대, 제1 콘텐츠 파일이 2초와 같은 고정-시간 기간을 갖는 비디오의 일부 및 고정-시간 기간보다 큰 기간을 갖는 다수의 전체 오디오 프레임을 갖는 오디오 부분으로 채워질 수 있다. 결국, 샘플 오프셋이 충분히 클 것이고, 적은 오디오 프레임이 사용되며, 이때, 오디오 프레임의 기간이 고정-시간 기간보다 적을 수 있다.
또 다른 실시예에서, 오디오 분할 멀티플렉서(228)는, 비디오의 제1 부분의 비디오 프레임 및 오디오의 제1 부분으로부터의 오디오 프레임 및 제2 부분으로부터의 오디오프레임을 갖는 제1 콘텐츠 파일을 생성함으로써 인코딩된 콘텐츠 파일(232)을 생성한다. 오디오 분할 멀티플렉서(228)는 비디오의 제2 부분의 비디오 프레임을 갖는 제2콘텐츠 파일을 생성한다. 오디오에 대하여, 오디오 분할 멀티플렉서(228)는 오디오 경계가 비디오 경계에 떨어지는지 여부를 결정한다. 오디오 경계가 비디오 경계에 떨어지면, 오디오 분할 멀티플렉서(228)는 제2 부분의 나머지 오디오 프레임으로 제2 콘텐츠 파일을 채운다. 그러나, 오디오 경계가 비디오 경계에 떨어지지 않으면, 오디오 분할 멀티플렉서(228)는 미디어 콘텐츠의 제3부분의 오디오 프레임을 인코딩하고, 제2 부분의 나머지 오디오 프레임 및 제3 부분의 오디오 프레임으로 제2 콘텐츠 파일을 채운다. 이 프로세스는 미디어 콘텐츠의 끝에 다다를 때까지 반복된다.
도 2를 다시 참조하면, 인코더(220)가 원 미디어 콘텐츠(231)를 일단 인코딩하면, 인코더(220)는 인코딩된 미디어 콘텐츠 파일(232)을 원 콘텐츠 서버(210)로 보내는데, 서버는 인코딩된 미디어 콘텐츠(232)를 네트워크 연결(241, network connection)을 통해 미디어 플레이어(200)로 전송한다. 미디어 플레이어(200)가 비디오의 고정-시간 기간 및 오디오의 변화가능 시간 기간을 갖는 콘텐츠 파일을 수신하면, 미디어 플레이어(200)는, 경계 아티팩츠로 인해 나타난 팝 또는 클릭 노이즈를 제거하거나 감소시키는, 콘텐츠 파일의 프리젠테이션 오프셋을 이용하여 연속적인 스트림으로서 디코더에 제공되도록 오디오를 나타낸다. 본질적으로, 오디오를 재생하는 동안, 미디어 플레이어(200)는, 디코딩 및 재생하기 전에 콘텐츠 파일의 오디오 부분이 나타나면, 콘텐츠 파일의 초기에 삽입된 간격을 제거한다. 다른 실시예에서 본 명세서에서 설명된 바와 같이 오디오 분할이 수행되지 않고 마지막 프레임이 0으로 패딩되면, 미디어 플레이어(200)는 오디오를 디코더에 보내기 전에 마지막 프레임에 패딩된 샘플을 제거하도록 구성될 수 있다. 그러나, 이 접근방식은 특정 상황에서 유용하지 않은데, 예컨대, 제3자에 의해 미디어 플레이어가 제공되거나 디코딩이 제한된 후에 오디오 프레임 데이터에 접근하는 경우이다.
각 미디어 플레이어(200)에 대하여, 한 라인으로 설명되었지만, CDN(240)에 대한 각 라인(241)이 다수의 네트워크연결을 나타낼 수 있다. 일 실시예에서, 각 미디어 플레이어(200)가 CDN(240)에 대한 다수의 전송 제어 프로토콜(transport control protocol; TCP) 연결을 확립할 수 있다. 또 다른 실시예에서, 미디어 콘텐츠가 다수의 CDN에 저장되는데 예컨대, 다수의 CDN 각각에 연관된 원 서버 내에 저장된다. CDN(240)이, 대역폭 가격을 줄이고, 콘텐츠의 전반적인 이용성을 늘림으로써, 최종 사용자에 대한 퍼포먼스, 확장성, 및 가격 효율을 형상시킬 목적으로 이용될 수 있다. CDN이 다양한 방식으로 실행될 수 있고, 그 동작에 대한 자세한 사항은 본 기술분야의 보통의 기술자에게 이해될 것이다. 보통 그 동작에 관한 추가적인 구체적 사항들이 포함되지 않았다. 다른 실시예에서, 피어투피터식의(peer-to-peer) 네트워크 등과 같은 다른 전달 기술이 미디어 콘텐츠를 원 서버로부터 미디어 플레이어로 전달하는데 이용될 수 있다.
상술한 실시예에서, 콘텐츠 파일(232)는 원 미디어 콘텐츠 파일(231)의 하나의 사본을 나타낸다. 그러나, 다른 실시예에서, 원 미디어 콘텐츠(231)의 각 부분은 콘텐츠의 동일한 부분에 대하여 다수의 인코딩된 표상(representation)으로 인코딩될 수 있다. 다수의 인코딩된 표상은 상이한 품질 프로파일에 따라서 인코딩될 수 있고, 클라이언트 장치(204)에 의해 독립적으로 요청 가능하고 독립적으로 플레이될수 있는 개별 파일로써 저장될수 있다. 각 상기 파일은 하나 이상의 콘텐츠 서버(210), 웹 서버, 프록시 캐시, CDN(240)의 에지 캐시에 저장될 수 있고, 클라이언트 장치(204)로 분리되어 요청되거나 전달될 수 있다. 일 실시예에서, 인코더(220)는, 예컨대, 10 또는 13과 같이 몇몇 상이한 레벨에서 원 콘텐츠 미디어(231)를 동시에 인코딩한다. 각 품질 레벨은 품질 프로파일 또는 프로파일로 언급된다. 예컨대, 미디어 콘텐츠가 1시간 기간을 가지고, 미디어 콘텐츠가 2초 기간을 갖는 QSS 파일로 분할되면, 미디어 콘텐츠의 인코딩된 각 표상이 대하여 1800개의 QSS 파일이 있게된다. 미디어 콘텐츠가 10개의 상이한 품질 프로파일에 따라 인코딩되면, 미디어 콘텐츠에 대하여 18,000 개의 QSS 파일이 있게된다. 품질 프로파일은, 어떻게 스트림이 인코딩되는지 가리킨다 예컨대, 품질 프로파일은 이미지의 폭 및 높이(즉, 이미지 크기), 비디오 비트 레이트(즉, 비디오가 인코딩되는 레이트), 오디오 비트 레이트, 오디오 샘플링 레이트(즉, 캡처됐을때, 오디오가 샘플링되는 레이트), 프레임 레이트(예컨대, 초당 프레임), 스테이징 크기(staging size) 등과 같은 파라미터를 지정할 수 있다. 예컨대, 요청하는 미디어 플레이어의 컴퓨팅 장치가 충분한 컴퓨터 능력 및 충분한 네트워크 대역폭을 가지고 있으면, 일 미디어 플레이어가HD 품질의 비디오를 갖는 스트림릿을 요청할 수 있다. 일 실시예에서, 2005년 4월 28일 출원된 미국특허출원공개 No. 2005/0262257에서 나타난 바와 같이, 미디어 플레이어(200)는 미디어 콘텐츠의 상이한 사본들(예컨대, 상이한 품질 스트림)로부터, 부분들을 요청함으로써 경계 부분에서 품질 레벨 사이를 시프트한다. 또는, 미디어 플레이어(200)는 본 발명의 이점을 갖는 해당 분야의 일반적인 기술자에게 인정될 수 있는 다른 기술들을 이용하는 부분을 요청할 수 있다.
인코더(220)는 미디어 콘텐츠의 특정 부분에 이용 가능한 품질 프로파일을 또한 지정할 수 있고, 예컨대, QMX파일을 이용하여, 얼마나 많은 미디어 콘텐츠가 전송 가능한지 지정할 수 있다. QMX파일은 이용 가능한 QSS파일에 의해서 나타나는 미디어 콘텐츠의 현재 기간을 가리킨다. QMX 파일은, 어느 QSS 파일이 전달하기에 이용가능한지, 어디로부터 QSS 파일이 검색될 수 있는지 가리키는 미디어 콘텐츠에대한 콘텐츠 표로써 동작한다. QMX 파일은 예컨대, CDN(240)을 통해 미디어 플레이어(200)로 보내질 수 잇다. 또는, 미디어 플레이어(200)는 특정 미디어 콘텐츠에 대하여 이용 가능한 품질 프로파일을 요청할 수 있다. 다른 실시예에서, HTTP 트래픽을 다수의 미디어 플레이어(200)로 전달하기 위해, 이 환경이 CDN의 스케일링 능력을 이용하여 크기가 조절될 수 있다. 예컨대, 인코딩된 미디어 콘텐츠를 저장하는 데이터 센터는 원 콘텐츠 서버(210)의 클러스터를 가지고 있어, 데이터 센터로부터 인코딩된 미디어 콘텐츠를 요청하는 다수의 미디어 플레이어에 제공할 수 있다. 또는 본 발명의 이점을 갖는 해당 분야의 일반적인 기술자에게 인정될 수 있는 다른 환경이 이용될 수 있다.
고려된 일 실시예에서, 미디어 플레이어(200)는, 개별적인 스트림릿 파일(예컨대, QSS파일)을 요청함으로써 미디어 콘텐츠의 부분을 요청한다. 미디어 플레이어(200)는, 메타데이터 디스크립터(descriptor) 파일(예컨대, QMX파일)에 따라서 QSS파일을 요청한다. 미디어 플레이어(200)는 QMX 파일을 인출(fetch)하는데, 예컨대 프리젠테이션을 위한 미디어 콘텐츠의 사용자 선택에 응답하여 인출하고, 미디어 플레이어(200)는 QMX 파일을 읽어서, 현재 기간을 이용하는 미디어 콘텐츠의 재생을 언제 시작할지 및 QSS 파일을 어디서 요청할지 결정한다. QMX 파일은, 언제 인코딩 프로세스가 시작되었는지 가리키는 UTC(Coordinated Universal Time; 협정세계시) 지표 및 전달을 위해 이용 가능한 미디어 콘텐츠가 얼마나 많은지 가리키는 현재 기간과 같은 QMX 타임스탬프를 포함한다. 예컨대, QMX 타임스탬프는 오후6:00시(MDT)에 인코딩 프로세스가 시작되었고, 미디어 콘텐츠의 4,500개의 QSS파일이 전달을 위해 이용 가능하다고 가리킬 수 있다. 미디어 플레이어(200)는 콘텐츠 기간(라이브 플레이아웃; live playout)을 대략 15분으로 결정할 수 있고, 프로그램 재생 후 15분 또는 약간 그 보다 전에 프로그램 재생에 대응하는 QSS파일을 요청하는 것을 시작하도록 결정할 수 있다. 일 실시예에서, 미디어 플레이어(200)는, 대응하는 스트림릿을 오프셋에서 미디어 콘텐츠로 인출함으로써, 미디어 플레이어(200)가 콘텐츠의 재생을 시작해야 하는 시점인, 미디어 콘텐츠내의 포인트를 결정할 수 있다. 인코더가 QSS 파일의 또 다른 세트를 콘텐츠 서버상에 저장하는 각 시간에(예컨대, 10개의 상이한 품질 프로파일에서 미디어 콘텐츠의 다음 2초를 나타내는 10개의 QSS 파일 세트), QMX파일이 업데이트되고, 인터넷 상에서 전달을 위해 2초 이상이 이용 가능하다고 가리키도록, QMX 파일이 미디어 플레이어(200)에 의해 인출될 수 있다. 미디어 플레이어(200)는 업데이트된 QMX 파일을 주기적으로 체크할수 있다. 또는, QMX파일 및 임의의 업데이트들이, 미디어 플레이어(200)가 언제 미디어 콘텐츠가 인터넷상에서 전달을 위해 이용가능한지 가리키도록 푸시될 수 있다.
원 콘텐츠 서버(210)가 CDN(240)내에 있는 것으로 설명되었지만, 원 콘텐츠 서버(210)가 CDN(240)의 외부에 존재할 수 있고, 여전히 CDN(240)과 연관될 수 있다는 점이 주목되어야 한다. 예컨대, CDN(240)이 아닌, 일 엔티티가 스트림릿을 저장하고 전달하는 콘텐츠 서버를 소유 및 동작할 수 있고, 이들의 장치가 하나 이상의 개별 엔티티에 의해서 소유되고 동작될 수 있다.
미디어 콘텐츠는 데이터이고, 미디어 플레이어(200)(전자 장치상에서 동작하는(즉, 클랑이언트 장치)에 의해서 처리되면 미디어 플레이어(200)가 이벤트의 시각 및/또는 오디오 표상을 미디어 플레이어(200)의 관찰자에게 보여준다. 미디어 플레이어(200)는 미디어 콘텐츠를 플레이하는 소프트웨어의 일부일 수 있고, 독립적인 소프트웨어 애플리케이션, 웹 브라우저 플러그인, 브라우저 플러그인 및 서포팅 웹페이지 로직의 결합 등일 수 있다. 예컨대, 이벤트가 스포츠 이벤트, 라이브 또는 기록된 퍼포먼스, 라이브 또는 기록된 뉴스 리포트등과 같은 텔레비전 방송일 수 있다. 이러한 사정에서 라이브 이벤트 또는 스케쥴된 텔레비전 이벤트가, 스케쥴에 좌우됨으로써, 시간 내의 특정 포인트에서 재생되도록 스케쥴된 미디어 콘텐츠를 나타낼 수 있다. 라이브 이벤트는, 라이브 텔레캐스트 사이에서 플레이되는, 라이브 이벤트 내의 중요 이벤트에 대한 슬로모션 클립과 같은, 라이브 미디어 콘텐츠와 혼합된 미리 기록된 콘텐츠를 또한 가질 수 있다. 본 명세서에서 설명된 실시예가 주문형 비디오(video-on-demand; VOD)를 스트리밍하기 위해 또한 이용될 수 있다.
도 3a는 각각 인코더(220)를 채용한 다수의 호스트(314)를 포함하는 인코딩 시스템(320)이 채용될 수 있는, 컴퓨팅 환경(300)에 대한 또 다른 실시예를 나타내는 블록도이다. 일 실시예에서, 인코딩 시스템(320)은 마스터 모듈(322) 및 다수의 호스트 컴퓨팅 모듈(이하 "호스트", 314)를 포함한다. 각 호스트(314)는 하나 이상의 개인용 컴퓨터, 서버 등에서 실행될 수 있다. 추가적인 실시예에서, 호스트(314)는 예컨대 단일 컴퓨터에 연결된 카드와 같은 전용 하드웨어일 수 있다.
일 실시예에서, 마스터 모듈(이하 "마스터", 322)는, 퍼블리셔(310)로부터 미디어 콘텐츠를 수신하는 수신 모듈(302) 및 미디어 콘텐츠를 로우 스트림릿(312)으로 분할하는 스트림릿 모듈(303)을 포함하는 스트림릿 생성 시스템(301)로부터, 로우 스트림릿(312)를 수신하도록 구성된다. 마스터 모듈(322)은 프로세스를 위해 로우 스트림릿(312)을 보낸다(stage). 또 다른 실시예에서, 마스터(322)는 인코딩 및/또는 압축된 소스 스트림릿을 수신할 수 있고, 마스터(322)는 이 소스 스트림릿을 압축 해제하여 로우 스트림릿을 생산한다. 본 명세서에서 설명되는 바와 같이, 용어 "로우 스트림릿(raw streamlet)"은, 품질의 중요한 손실 없이 실질적인 크기를 줄이기 위해, 압축되지 않거나 약간 압축된 스트림릿(312)을 언급한다. 약간 압축된 로우 스트림릿은 더 빨리 더 많은 호스트에 전송될 수 있다. 각 호스트(314)는 마스터(322)에 커플링되고, 인코딩하기 위해 마스터 (322)로부터 로우 스트림릿을 수신하도록 구성된다. 일 예에서, 호스트(314)는 동일한 시간 인덱스, 고정-시간 기간 및 변하는 비트 레이트를 갖는 다수의 스트림릿을 생성한다. 일 실시예에서, 각 호스트(314)는, 마스터(322)로부터 보내진 로우 스트림릿(312)으로부터 인코딩된 스트림릿 세트(306)을 생성하도록 구성되며, 여기서 각 지원되는 비트 레이트로 인코딩된 스트림릿 세트(306)는 미디어 콘텐츠의 동일한 부분을 나타낸다(즉, 각 스트림릿은 이용 가능한 품질 프로파일 중 하나에 따라서 인코딩된다). 또는, 각 호스트(314)는 인코딩에 요구되는 시간을 줄이기 위해서, 지원되는 비트 레이트 중 하나에서 인코딩된 단일의 스트림릿을 생성하도록 이용될 수 있다.
인코딩이 완료되면, 호스트(314)는 세트(306)을 마스터(322)로 되돌리고, 인코딩 시스템(320)이 세트(306)를 스트림릿 데이터 베이스(308)에 저장할 수 있다. 마스터(322)는 호스트(314)에 인코딩 작업을 할당하도록 더 구성된다. 일 실시예에서, 각 호스트(314)는 인코딩 작업 컴플리션 비드(encoding job completion bid)(이하 "비드")를 마스터(322)에 제출하도록 구성될 수 있다. 마스터(322)는 호스트(314)로부터의 비드에 의존하여 인코딩작업을 할당한다. 각 호스트(314)는, 현재 인코딩 작업 완료율, 평균 작업 완료 시간, 프로세서 속도, 물리적 메모리 용량 등을 포함하여 제한없이 다수의 컴퓨팅 변수에 의존하여 비드를 생성한다.
예컨대, 호스트(314)는 호스트(314)가 과거 수행 이력을 기초로 15초 내에 인코딩 작업을 완료할 수 있다고 가리키는 비드를 제출할 수 있다. 마스터(322)는 다수의 비드 중에서 최고의 비드를 선택하고, 실질적으로 상기 최고의 비드와 함께 인코딩 작업을 상기 호스트에 제출하도록 구성될 수 있다. 보통, 상술한 인코딩 시스템(320)은, 각 호스트(314)가 동일한 하드웨어일 것을 요구하지 않으나, 호스트(314)의 이용 가능한 컴퓨터 능력의 유용하게 이점을 갖는다. 또는, 마스터(322)는 선착순 또는 특정한 인코딩 작업에 적합하다고 여겨지는 몇몇 다른 알고리즘을 기초로 호스트(314)를 선택한다.
하나의 스트림릿을 인코딩하는데 요구되는 시간은 호스트(314)의 컴퓨터 능력 및 원 미디어 콘텐츠의 콘텐츠 파일의 인코딩 요건에 의존한다. 인코딩 요건의 예는, 2 또는 다중-패스 인코딩, 및 다수의 상이한 비트스트림의 스트림 등을 포함하며 이에 제한되지는 않는다. 본 발명의 하나의 이점은 라이브 콘텐츠 파일에서 2-패스 인코딩을 수행하는 능력이다. 일반적으로, 2-패스 인코딩을 수행하기 위해서, 이전 기술의 시스템은 인코딩 전에 완료될 콘텐츠 파일을 기다려야 한다. 그러나, 스트림릿이 필요하다고 여겨지는 만큼 여러 번 인코딩 될 수 있다. 스트림릿이 적은 기간(예컨대, 2초)의 압축된 미디어 객체이기 때문에, 제1 스트림릿이 캡처되면, 다중-패스 인코딩이 라이브 이벤트 상에서 시작할 수 있다.
일 실시예에서, 인코더(220)는 원 콘텐츠 파일을 소스 스트림릿으로 분할하고, 예컨대, TV쇼가 끝날 때까지 기다림없이, 대응하는 각 로우 스트림릿(312)에 다수의 사본들(예컨대, 스트림)에 대하여 2-패스 인코딩을 수행한다. 보통, 스트림릿 생성 시스템(301)이 원 콘텐츠 파일 캡처를 시작한 후에 웹 서버(316)이 인터넷 상에서 간략히 스트림릿을 스트림밍할 수 있다. 퍼블리셔(310)로부터 전송된 라이브 방송 사이의 지연 및 콘텐츠의 이용성은 호스트(314)의 컴퓨터 능력에 의존한다.
도 3b는 일 실시예에 따른 스트림릿(312)에 대한 병렬 인코딩의 일 실시예를 나타내는 블록도이다. 일 예에서, 스트림릿 생성 시스템(301)은 원 콘텐츠 파일 캡처, 제1 스트림릿(312a) 생성 및 및 스트림릿을 인코딩 시스템(320)으로 보내는(pass) 것을 시작한다. 인코딩 시스템(320)은, 예컨대 스트림릿 (304a)(304a1, 304a2, 304a3)등, 상이한 비트레이트의 스트림릿(304)을 표현한다)에 대한 제1 세트(306a)를 생성하는데 10초가 걸릴 수 있다. 도 3b는, 인코딩 시스템(320)을, 참조한 상술한 설명한 바에 따라 로우 또는 약간 인코딩된 스트림릿(312)을 처리하는데 요구되는 시간 기간을 도식적으로 설명하기 위해 블록(308)으로 인코딩 프로세스를 나타낸다. 인코딩 시스템(320)은 하나 이상의 스트림릿(312)을 동시에 처리할 수 있고, 스트림릿의 처리는 스트림릿 생성 모듈(301)로부터 스트림릿이 도착하면 시작될 것이다.
제1 스트림릿(312a)을 인코딩하는데 요구되는 10초의 시간 동안, 스트림릿 모듈(404)은 인코딩을 위해 다섯 개의 추가적인 2-초 스트림릿 (312b, 312c, 312d, 312e, 312f)을 생성하고, 마스터(322)는 대응하는 로우 스트림릿을 준비하여 보낸다(stage). 제1 세트(306a)가 이용 가능하고, 2초 후에 다음 세트(306b) 등이 이용 가능하다. 보통, 인터넷상에서 스트리밍 및 라이브로 나타내기 위해, 상이한 품질 레벨에서 원 콘텐츠 파일이 인코딩된다. 10-초 딜레이가 단지 예시적인 방식으로 본 명세서에서 주어진다. 다수의 호스트(314)가, 인코딩 시스템(320)의 처리능력을 증가시키기 위해 인코딩 시스템(320)에 더해질 수 있다. 높은 CPU 능력이 구비된 시스템 또는 대안적으로 다수의 낮은 능력이 구비된 시스템에 의해서, 거의 인식할 수 없는 레벨에서 딜레이가 짧아질 수 있다.
스트림릿이 적용된 임의의 구체적인 인코딩 규칙이 완료하기 위해서, 스트림릿 자체의 시간 기간보다 더 오래 걸릴 수 있다. 예컨대, 2-초 스트림릿에 대한 매우 높은 품질의 인코딩이 완료하는데 5초가 걸릴 수 있다. 또는, 각 스트림릿에 요구되는 처리 시간이 스트림릿의 시간 기간보다 짧을 수 있다. 그러나, 연속적인 스트림릿에 대한 오프셋 병렬 인코딩이, 인코딩 시스템(320)에 의해 일정한 간격으로 인코딩되기 때문에(스트림릿이 인코딩 시스템(320)에 제공되는 예컨대 2초의 간격에 매칭한다), 인코딩 시스템(320)의 출력 타이밍이 인코딩되지 않은 스트림릿(312)의 실시간 제공 레이트(real time submission rate) 아래로 떨어 지지 않는다.
도 3a로 돌아오면, 묘사된 바와 같이, 마스터(322) 및 호스트(314)는 단일 로컬 지역 네트워크 내에 위치하거나 다른 경우 호스트(314)는 마스터(322)에 물리적으로 가까운 곳에 있을 수 있다. 또는, 호스트(314)는 인터넷 또는 다른 통신망을 통해서 마스터(322)로부터 인코딩 작업을 수신할 수 있다. 예컨대, 다수의 호스트를 설치하기 어려울 수 있는 원격지에서의 라이브 스포츠 이벤트를 생각해보라. 이 예에서, 스트림릿 온라인을 배포(publish)하기 전에, 마스터는 인코딩을 수행하기 않거나 또는 대체적으로 가벼운 인코딩을 한다. 그 후 호스트(314)는 스트림릿을 검색하고, 상술한 바와 같이, 그 스트림릿을 다수의 비트 레이트 세트(306)으로 인코딩한다.
추가적으로, 호스트(314)가 동적으로(dynamically) 더해지거나, 인코딩 작업의 재시작 및/또는 스트림릿의 배포에 방해 없이 인코딩 시스템(320)으로부터 제거될 수 있다. 호스트(314)가 고장 또는 일부 실패를 겪으면, 인코딩 업무가 또 다른 호스트로 재 할당된다.
일 실시예에서, 인코딩 시스템(320)은 특정한 재생 플랫폼에 특정한 스트림릿을 생산하도록 또한 구성될 수 있다. 예컨대, 단일 로우 스트림에 있어서, 단일 호스트(314)는, 개인용 컴퓨터 재생을 위한 상이한 품질 레벨의 스트림릿, 상이한 휴대폰 상에서 재생을 위한 스트림릿, 적절한 코덱, 스트림의 섬네일 뷰를 플레이할 때(프로그래밍 가이드에서와 같은) 이용하기 위한 작은 비디오 전용 스트림릿, 및 파일보관(archiving)내에서 이용하기 위한 매우 높은 품질의 스트림릿을 생산할 수 있다.
상기 묘사된 실시예에서, 컴퓨팅 환경(300)은 콘텐츠 관리 시스템(CMS, 304)을 포함한다. CMS(340)은 예컨대 스트림릿 데이터베이스(308)를 이용하여 인코딩된 미디어 콘텐츠(220)를 관리하고, 퍼블리셔가 미디어 콘텐츠(232)의 재생을 스케쥴하기 위한 타임라인(본 명세서에서는 가상 타임라인(QVT)으로 언급됨)을 생성하고 수정할 수 있게 하는 퍼블리싱 시스템이다. QVT는 사용자를 위한 재생 목록을 정의할 수 있는 메타데이터이고, 언제 미디어 플레이어(200)가 미디어 콘텐츠를 플레이해야 하는지 가리킬 수 있다. 예컨대, 타임라인은 미디어 콘텐츠(232)의 시작 시간, 및 미디어 콘텐츠(232)의 현재 기간을 지정하여, 스케쥴에 따라서, 미디어 이벤트를 재생할 수 있게 한다. 상술한 예에서, 인코더(220)는, 스트림의 특정 부분(예컨대, 스트림릿)이 CDN(240)과 연관된 원 콘텐츠 서버(210)로 보내진다고 가리키는, 스트림에 대한 정보(예컨대, 미디어 콘텐츠(232)의 사본) 내의 CMS(240)를 업데이트한다. 이 실시예에서, CMS(340)는 예컨대: 암호 키(encryption key); 인코더(220) 세트가 인코딩된 미디어 콘텐츠(232)의 부분을 원 콘텐츠 서버(210)로 보내는 것을 가리키는 유효성 정보; 어느 품질 수준이 미디어 콘텐츠(232)의 특정 부분에 대하여 이용 가능한지 가리키는 정보; 예컨대, 콘텐츠의 방송일, 제목, 여자배우, 남자배우, 시작 인덱스, 최종 인덱스, 적절한 퍼블리셔 데이터, 암호화 레벨, 콘텐츠 기간, 에피소드 또는 프로그램명, 퍼블리셔를 포함하는 메타데이터; 메뉴, 섬네일, 사이드바, 광고, 빨리감기, 되감기, 정지, 및 플레이등과 같이 이용 가능한 최종 사용자의 탐색 환경을 위해 이용 가능한 툴; 프레임 파서(parser) 정보 등과 같은 임의의 인코더(220)로부터 정보를 수신한다. 또는, 인코더(220)는 상술한 정보보다 많거나 적은 정보를 보낼 수 있다.
상기 모사된 실시예에서, 컴퓨팅 환경(300)은, 시스템에 디지털 저작권 관리 능력을 제공할 수 있는 디지털 저작권 관리 서버(DRM, 350)을 포함한다. DRM서버350는 최종 사용자를 증명하도록 암호화 키를 최종 사용자에게 공급하기 위해 추가적으로 구성된다. 일 실시예에서, DRM서버(350)는 로그인 자격증명을 기초로 사용자 증명하기 위해 구성된다. 본 분야의 기술자는 DRM서버(350)가 최종 사용자를 증명하는, 암호화된 쿠기, 사용자 프로파일, 지리 위치, 소스 웹사이트 등 등을 포함하여 다양한 상이한 방법들을 인식할 것이며 상술한 방법에 제한되는 것은 아니다.
다른 실시예에서, 컴퓨팅 환경(300)은, 디렉터리 서버, 관리 서버, 통계 서버,네트워크 기반 오퍼레이터(예컨대, ISP) 장치 등을 포함할 수 있다.
도 4는 미디어 콘텐츠의 고정-시간 비디오 부분을 갖는 콘텐츠 파일 사이의 전체 오디오 프레임을 분할하기 위해 코덱-적용 프레임 크기에 따라 미디어 콘텐츠의 오디오를 인코딩하는 방법(400)에 관한 일 실시예를 나타내는 순서도이다. 방법(400)이 하드웨어(회로, 전용 로직 등), 소프트웨어(컴퓨터 시스템 또는 전용 장치상에서 구동되는 것들), 펌웨어(예컨대, 내장된 소프트웨어), 또는 그들의 임의의 조합에 의해 수행된다. 일 실시예에서, 방법(400)이 도 2 및 도 3a의 인코더(220)에 의해 수행된다. 또 다른 실시예에서, 상기 방법의 일부 동작이 도 2의 고정 프레임 오디오 인코더(224) 및 오디오 분할 멀티플렉서(228)에 의해 수행될 수 있다.
도 4에서, 프로세싱 로직이 샘플 오프셋을 0으로 초기 설정함으로써 시작하고(블록 402), 미디어 콘텐츠의 오디오의 로우 부분을 수신한다(블록 404). 프로세싱 로직은 고정프레임 오디오 코덱을 이용하여 오디오의 로우 부분을 인코딩하고(블록 406), 오디오 코덱에서 출력된 인코딩된 오디오 프레임을 버퍼링한다(블록 408). 프로세싱 로직은 스트림릿을 채우기 위해 오디오 프레임이 충분한지 여부를 결정한다(블록 410). 이 실시예에서, 각 스트림릿은 본 명세서에서 설명된 바와 같이, 기간이 고정된 비디오 프레임을 또한 포함한다. 스트림릿을 채우기 위한 오디오 프레임이 불충분하면, 프로세싱 로직은 오디오의 후속하는 로우 부분을 수신하기 위해 블록(404)으로 되돌아 가고, 오디오의 로우 부분을 인코딩하고, 블록 (408)에서 인코딩된 오디오 프레임을 버퍼링한다. 프로세싱 로직이 블록 (410)에서, 스트림릿을 채우기 위한 오디오 프레임이 충분하다고 결정하면, 프로세싱 로직은 오디오 프레임을 오디오 분할 멀티플렉서로 보내고, 보내진 프레임을 버퍼로부터 제거한다(블록 412). 프로세싱 로직은 샘플 오프셋을 업데이트 하고(블록 414), 미디어 콘텐츠가 종료점에 있는지 여부를 결정한다(블록 416). 블록 (416)에서 미디어 콘텐츠가 종료점에 없으면, 프로세싱 로직은 블록 (404)으로 되돌아가서 오디오의 또 다른 로우 부분을 수신한다. 그렇지 않으면 방법이 종료한다.
도 2에 관하여 상술한 바와 같이, 프로세싱 로직이, 인코더(200)의 요소의 다양한 동작을 수행하도록 구성될 수 있다. 예컨대, 방법(400)이 고정 프레임 오디오 인코더(224)에 의해 수행될 수 있으며, 고정 프레임 오디오 인코더는 분할기(222)로부터 로우 오디오(233)를 수신하고, 오디오 프레임을 인코딩하며, 인코딩된 오디오 프레임(237)을 오디오 프레임 버퍼(225)에 저장할 수 있다. 이 실시예에서, 블록(410-416)에서 동작이 오디오 분할 멀티플렉서(228)에 의해 수행될 수 있는 동안, 블록(402-408)의 동작이 고정 프레임 오디오 인코더(224)에 의해 수행될 수 있다. 또는, 상기 동작이 인코더(220)의 요소들의 다른 조합에 의해 수행될 수 있다.
도 5a-5c는 고정-시간 비디오 부분 및 코덱이 적용된 프레임 크기를 갖는 전체 오디오 프레임이 있는 콘텐츠 파일 생성에 대한 일 실시예에 관련된 순서도이다. 방법 (500), (550), 및 (570)은 하드웨어(회로, 전용 로직 등), 소프트웨어(일반적인 목적의 컴퓨터 시스템 또는 전용 장치 상에서 구동되는 것들), 펌웨어(예컨대, 내장된 소프트웨어), 또는 그들의 임의 조합을 포함할 수 있다. 또 다른 실시예에서, 방법(500)은 고정 프레임 오디오 인코더(224)에 의해 수행되고, 방법(550)은 고정-시간 비디오 인코더(226)에 의해 수행되고, 방법(570)은 오디오 분할 멀티플렉서(228)에 의해 수행된다. 또는 방법(500), (550), 및(570)의 동작이 인코더(220)의 요소들의 다른 조합에 의해 수행될 수 있다.
도 5a에서, 방법(500)의 프로세싱 로직이 오디오의 로우 부분을 수신함으로써 시작한다(블록 502). 프로세싱 로직이 코덱적용 프레임 크기에 따라 오디오의 로우 부분을 인코딩하고(블록 504), 인코딩된 오디오 프레임을 버퍼링한다(블록 506). 프로세싱 로직은 미디어 콘텐츠가 종료점에 있는지 여부를 결정한다(블록 508). 미디어 콘텐츠가 블록 508에서 종료점에 없으면, 프로세싱 로직은 블록 502로 되돌아가서 오디오의 또 다른 로우 부분을 수신한다. 그렇지 않으면 방법이 종료한다.
도 5b에서, 방법 (550)의 프로세싱 로직이 비디오의 로우 부분을 수신함으로서 시작한다(블록 552). 프로세싱 로직은 프레임 레이트에 따라서 비디오의 로우 부분을 인코딩하고(블록 554), 인코딩된 비디오 프레임을 버퍼링한다(556). 프로세싱 로직은 미디어 콘텐츠가 종료점에 있는지 여부를 결정한다(블록 558). 블록 (558)에서, 미디어 콘텐츠가 종료점에 없으면, 프로세싱 로직은 블록 (552)으로 되돌아가서 비디오의 또 다른 로우 부분을 수신한다. 그렇지 않으면 방법이 종료된다.
도 5c에서, 방법(570)의 프로세싱 로직이 버퍼로부터 인코딩된 오디오 프레임을 수신함으로써 시작하고(블록 572), 버퍼로부터 비디오 프레임을 수신한다(블록 574). 프로세싱 로직은 스트림릿을 생성하고(블록 576), 스트림릿을 원 콘텐츠 서버에 보낸다(블록 578). 프로세싱 로직은 미디어 콘텐츠가 종료점에 있는지 여부를 결정한다(580). 블록(580)에서 미디어 콘텐츠가 종료점에 없으면, 프로세싱 로직은 블록 (572)으로 되돌아 간다. 그렇지 않으면 방법이 종료한다.
일 실시예에서, 블록 (576)에서 프로세싱 로직은, 얼마나 많은 비디오 프레임이 스트림릿을 채우기 위해 필요한지 및 얼마나 많은 오디오 프레임이 스트림릿을 채우기 위해 필요한지를 결정한다. 이 실시예에서, 각 스트림릿에 대한 비디오 프레임의 수는 고정-시간 기간에 따라 대략 고정된다. 예컨대, 프레임 레이트가 30fps 이면, 2-초 스트림릿 내에 60프레임이 있을 것이다. 그러나, 사실상 비디오는 언제나 정확히 30fps가 아니며 오히려29.97fps인 점이 주목되어야 한다. 그래서, 몇몇 2-초 스트림릿이 59 프레임을, 일부는 60, 및 일부는 심지어 61 프레임을 가질 수 있다. 스트림릿 내의 각 프레임은 스트림릿의 시작에 관한 프리젠테이션 시간을 갖는다. 그래서, 스트림릿이 초에 30-32개를 나타내면, 스트림릿 내의 제1 프레임이 0 대신 6ms의 프리젠테이션 시간을 가질 수 있다. 이 프레임이 스트림의 시작으로부터 3006ms에서 디스플레이 될 것이다. 라이브의 경우에, 컴퓨팅 자원이 제한되고, 인코더가 라이브 호라이즌(live horizon)을 유지할 수 없으면, 인코더는 따라잡기 위해 프레임을 떨어뜨릴 수 있다. 그래서, 일부 스트림릿이 비디오 내에 간격(gap)을 가질 수 있고 이는 스트림릿당 프레임의 수의 변화의 또 다른 원인이 될 수 있다. 또는, 30fps와 다른 24fps등과 같은 프레임 레이트가 이용될 수 있다. 각 스트림릿에 대한 오디오 프레임의 수는 고정되지 않는다. 오디오 프레임의 수는 오디오 분할 멀티플렉서(228)에 관련되어 상기 설명된 동작에 의해서 결정된다. 프로세싱 로직은 현재 스트림릿을 채우기 위해 버퍼 내에 저장된 전체 프레임이 충분한지 여부를 결정한다. 오디오 프레임이 충분하지 않으면, 프로세싱 로직은 오디오의 후속하는 부분을, 예컨대, 본 명세서에서 설명된 것과 같이 후속하는 부분으로부터의 오디오의 전체 프레임을, 수신하고 인코딩한다. 몇몇 경우, 스트림릿내의 오디오 프레임의 기간이 고정-시간 기간보다 클 수 있고, 다른 경우에, 오디오 프레임의 기간이 고정-시간 기간보다 작을 수 있다.
도 7은 오디오 분할을 위한 컴퓨터 시스템(700)의 예시적인 형성에서 기계의 도표형 표현을 나타낸다. 컴퓨터 시스템(700)은 본 명세서에서 설명된 하나 이상의 임의의 오디오 분할 방법을 수행하기 위한 컴퓨터를 실행하는 명령을 설정한다. 대체적인 실시예에서, 기계가 LAN, 인트라넷, 엑스트라넷, 또는 인터넷으로 다른 기계와 연결(예컨대, 네트워킹)될 수 있다. 기계는 클라이언트 서버 네트워크 환경내의 서버 또는 클라이언트 기계의 능력 내에서 동작할 수 있고 또는 피어-투-피어(또는 분할된) 네트워크 환경의 피어 기계로써 동작할 수 있다. 기계는 PC, 태블릿 PC, STB, PDA, 핸드폰, 웹 어플라이언스, 서버, 네트워크 라우터, 스위치 또는 브리지, 또는 기계에 의해 수행되는 동작을 지정하는 명령의 세트를 실행 가능한 임의의 기계일 수 있다. 추가적으로, 단지 단일의 기계가 설명되나, 용어 "기계"는 상술한 방법 (400), (500), (550) 및 (570)과 같은 오디오 분할 동작에 대하여 본 명세서에서 논의된 하나 이상의 임의의 방법을 수행하기 위한 명령 세트(또는 다수의 세트)를 개별적으로 또는 협동하여 실행하는 기계의 임의의 무리를 또한 포함한다. 일 실시예에서, 컴퓨터 시스템(700)은 상기 설명된 것으로 인코더(220) 또는 인코딩 시스템(320) 내에서 실행될 수 있는 다양한 요소를 표현한다. 또는 인코더(220) 또는 인코딩 시스템은 컴퓨터 시스템(700) 내에서 설명되는 것 보다 많거나 적은 요소를 포함할 수 있다.
예시적인 컴퓨터 시스템(700)은 프로세싱 장치(702), 메인 메모리(704)(예컨대, ROM, 플래시 메모리, 동기 DRAM(SDRAM) 또는 DRAM(RDRAM 등)과 같은 다이나믹 랜덤 액세스 메모리; DRAM), 정적 메모리(static memory, 706)(예컨대, 플래시 메모리, 스태틱 랜덤 액세스 메모리(SRAM) 등), 및 데이터 저장장치(706)를 포함하며, 각각은 버스(730)를 통해 서로 통신한다.
프로세싱 장치(702)는, 마이크로프로세서, 중앙 처리 장치 등과 같은 하나 이상의 범용 프로세싱 장치를 나타낸다. 더 구체적으로, 프로세싱 장치(702)는 복잡 명령 집합 컴퓨터(complex instruction set computer; CISCC) 마이크로프로세서, 축소 명령 집합 컴퓨팅(reduced instruction set computing; RISC) 마이크로프로세서, 매우 긴 명령어 컴퓨터(very long instruction word; VLIW) 마이크로 프로세서, 또는 다른 명령 집합을 실행하는 프로세서 또는 명령의 결합을 실행하는 프로세서가 될 수 있다. 프로세싱 장치(702)는 주문형반도체(application specific integrated circuit; ASIC), 필드 프로그램가능 게이트 어레이(FPGA), 디지털 신호 프로세서(DSP), 네트워크 프로세서 등과 같은 하나 이상의 전용 프로세싱 장치가 또한 될 수 있다. 프로세싱 장치(702)는 본 명세서에서 논의된 동작 및 단계를 수행하기 위해 프로세싱 로직을 실행하도록(예컨대, 오디오 분할(726)) 구성된다.
컴퓨터 시스템(700)은 네트워크 인터페이스 장치(722)를 더 포함할 수 있다. 컴퓨터 시스템(700)은 비디오 디스플레이부(710)(예컨대, 액정디스플레이(LCD) 또는 음극선관(CRT), 영숫자 입력장치(712)(예컨대, 키보드), 커서 제어장치(714)(예컨대, 마우스), 및 신호 생성장치(720)(예컨대, 스피커)를 또한 포함할 수 있다.
데이터 저장장치(716)는, 본 명세서에서 설명된 하나 이상의 임의의 방법 또는 기능을 포함하는 하나 이상의 명령세트(예컨대, 오디오 분할(726))를 저장하는 컴퓨터로 판독가능한 저장 매체(724)를 포함할 수 있다. 오디오 분할(726)이, 컴퓨터로 판독가능한 저장매체를 또한 구성하는 컴퓨터 시스템(700), 메인 메모리(704) 및 프로세싱 장치(702)에 의한 그 실행 동안, 메인 메모리(704) 및/또는 프로세싱 장치(702)내에 완전히 또는 적어도 부분적으로 또한 있을 수 있다. 오디오 분할(726)이 네트워크 인터페이스 장치(722)를 통해 네트워크 상에서 추가적으로 전송되거나 수신될 수 있다.
컴퓨터 판독 가능한 저장 매체(724)가 예시적인 실시예에서 단일의 매체로 보여지나, 용어 "컴퓨터-판독가능한 저장매체"는 하나 이상의 명령 세트를 저장하는, 단일의 매체 또는 다수의 매체를(예컨대, 집중되거나 분배된 데이터베이스 및/또는 관련된 캐시 및 서버) 포함하는 것으로 인정되어야한다. 용어 "컴퓨터 판독 가능한 저장매체"는 본 실시예에 대한 하나 이상의 임의의 방법들을 수행하기 위한 기계를 작동시키고 기계에 의한 실행에 대한 명령 세트를 저장할 수 있는 임의의 매체를 포함하는 것으로 또한 인정되어야 한다. 용어 "컴퓨터-판독가능한 저장매체"는 반도체 기억 장치, 광자기 매체, 자기 매체, 또는 명령을 저장하는 다른 종류의 매체를 포함하며 이에 제한되지 않는다는 점이 인정되어야한다. 용어 "컴퓨터-판독가능한 전송매체"는 본 실시예의 하나 이상의 임의의 방법을 수행하기 위한 기계를 작동시키고 기계에 의한 실행에 대한 명령 세트를 전송할 수 있는 임의의 매체를 포함한다는 것이 인정되어야 한다.
오디오 분할 모듈(732), 요소들, 및 본 명세서에서 설명되는 다른 특징들이(예컨대, 도 2 및 3a에 관련된) 별개의 하드웨어 구성요소로써 실행될 수 있고, ASICS, FPGA, DSP 또는 유사한 장치와 같은 하드웨어 구성요소의 기능으로 통합될 수 있다. 추가로, 오디오 분할 모듈(732)이 하드웨어 장치 내의 펌웨어 또는 기능 회로로써 실행될 수 있다. 게다가, 오디오 분할 모듈(732)은 하드웨어 장치 및 소프트웨어 요소의 임의의 조합으로 실행될 수도 있다.
설명을 위한 목적으로 앞선 설명이 구체적인 실시예를 참조하여 설명되었다. 그러나, 상기 설명적인 논의는 개시된 본 발명의 정확한 형태를 하나라도 빠뜨리거나 제한하기 위함이 아니다. 많은 수정 및 변경이 상술한 기술을 고려하여 가능하다. 본 발명의 원리 및 그 실용적인 응용을 잘 설명하기 위해 설명되고 선택되며, 그에 따라 본 기술분야의 다른 기술자는 본 발명을 이용할 수 있고 특정 사용에 적합할 수 있게, 다양한 수정과 함께 다양한 실시예가 계획될 수 있다.

Claims (22)

  1. 컴퓨팅 시스템에 의해, 오디오 및 비디오를 포함하는 미디어 콘텐츠를 수신하는 단계;
    상기 컴퓨팅 시스템에 의해, 프레임 레이트에 따라 상기 비디오를 인코딩하는 단계;
    상기 컴퓨팅 시스템에 의해, 코덱이 적용된 프레임 크기에 따라 상기 오디오를 인코딩하는 단계; 및
    상기 컴퓨팅 시스템에 의해, 복수개의 콘텐츠 파일을 생성하는 단계를 포함하되,
    상기 복수개의 콘텐츠 파일 각각은, 고정-시간 기간(fixed-time duration)을 갖는 상기 비디오의 인코딩된 부분 및 상기 코덱이 적용된 프레임 크기를 갖는 복수개의 전체 오디오 프레임을 갖는 상기 오디오의 인코딩된 부분을 포함하고, 하나 이상의 상기 복수개의 콘텐츠 파일의 오디오의 상기 인코딩된 부분의 기간이 상기 고정-시간 기간보다 크거나 작으며,
    상기 복수개의 콘텐츠 파일을 생성하는 단계는,
    상기 오디오의 인코딩된 프레임을 버퍼링하는 단계;
    상기 복수개의 콘텐츠 파일 중 현재 콘텐츠 파일을 채우기 위해 필요한, 상기 코덱이 적용된 프레임 크기에 의해 나누어진 상기 복수개의 파일 중 현재 콘텐츠 파일을 채우기 위해 필요한 샘플의 수보다 작지 않은 최소 정수인 인코딩된 프레임의 수를 결정하는 단계;
    상기 복수개의 콘텐츠 파일 중 현재 콘텐츠 파일을 채우기 위해 버퍼링된 상기 인코딩된 프레임이 충분한지 여부를 결정하는 단계;
    상기 버퍼링된 인코딩된 프레임이 충분하면, 상기 복수개의 콘텐츠 파일 중 상기 현재 콘텐츠 파일을 상기 프레임의 수로 채우는 단계; 및
    상기 버퍼링된 인코딩된 프레임이 충분하지 않으면, 상기 오디오의 추가적인 프레임을 버퍼링하고, 상기 복수개의 콘텐츠 파일 중 상기 현재 콘텐츠 파일을 상기 프레임의 수 및 상기 추가적인 프레임으로 채우는 단계를 포함하는 것을 특징으로 하는 방법.
  2. 제1항에 있어서,
    상기 복수개의 전체 오디오 프레임 중 마지막은 0으로 패딩되지 않는 것을 특징으로 하는 방법.
  3. 제1항에 있어서,
    상기 미디어 콘텐츠를 상기 오디오 및 상기 비디오로 분할하는 단계를 더 포함하되,
    상기 비디오를 인코딩하는 단계는,
    상기 고정-시간 기간에 따라 비디오 코덱을 이용하여 상기 비디오를 인코딩하는 단계를 포함하고,
    상기 오디오를 인코딩하는 단계는,
    상기 코덱이 적용된 프레임 크기에 따라 오디오 코덱을 이용하여 상기 오디오를 인코딩하는 단계를 포함하는 것을 특징으로 하는 방법.
  4. 제1항에 있어서,
    상기 버퍼링된 상기 인코딩된 프레임이 충분한지 여부를 결정하는 단계는,
    상기 버퍼링된 프레임의 수에 상기 코덱이 적용된 프레임 크기를 곱하는 단계;
    상기 복수개의 콘텐츠 파일 중 이전 콘텐츠 파일에 샘플 오프셋이 있으면, 상기 곱셈의 결과에 상기 샘플 오프셋을 더하는 단계; 및
    상기 합이, 상기 복수개의 콘텐츠 파일 중 첫 번째 콘텐츠 파일을 채우기 위해 필요한 상기 샘플의 수와 같거나 큰지 여부를 결정하는 단계를 포함하는 것을 특징으로 하는 방법.
  5. 제1항에 있어서,
    상기 복수개의 콘텐츠 파일 중 후속하는 콘텐츠 파일에 샘플 오프셋이 있으면, 상기 샘플 오프셋을 결정하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  6. 제5항에 있어서,
    상기 샘플 오프셋을 결정하는 단계는,
    상기 인코딩된 프레임의 수에 상기 코덱이 적용된 프레임 크기를 곱하고, 상기 복수개의 콘텐츠 파일 중 첫 번째 콘텐츠 파일을 채우기 위해 필요한 샘플의 수를 빼고, 상기 복수개의 콘텐츠 파일 중 이전 콘텐츠 파일에 샘플 오프셋이 있으면, 상기 이전 콘텐츠 파일의 샘플 오프셋을 더하는 것을 특징으로 하는 방법.
  7. 컴퓨팅 시스템에 의해, 오디오 및 비디오를 포함하는 미디어 콘텐츠를 수신하는 단계;
    상기 컴퓨팅 시스템에 의해, 프레임 레이트에 따라 상기 비디오를 인코딩하는 단계;
    상기 컴퓨팅 시스템에 의해, 코덱이 적용된 프레임 크기에 따라 상기 오디오를 인코딩하는 단계;
    상기 오디오의 인코딩된 프레임을 버퍼링하는 단계; 및
    상기 컴퓨팅 시스템에 의해, 복수개의 콘텐츠 파일을 생성하는 단계를 포함하되,
    상기 복수개의 콘텐츠 파일 각각은, 고정-시간 기간(fixed-time duration)을 갖는 상기 비디오의 인코딩된 부분 및 상기 코덱이 적용된 프레임 크기를 갖는 복수개의 전체 오디오 프레임을 갖는 상기 오디오의 인코딩된 부분을 포함하고, 하나 이상의 상기 복수개의 콘텐츠 파일의 오디오의 상기 인코딩된 부분의 기간이 상기 고정-시간 기간보다 크거나 작으며,
    상기 복수개의 콘텐츠 파일을 생성하는 단계는,
    상기 복수개의 콘텐츠 파일 중 현재 콘텐츠 파일을 채우기 위해 필요한 샘플의 수를 계산하는 단계;
    상기 복수개의 콘텐츠 파일 중 상기 현재 콘텐츠 파일에 필요한 프레임의 수를 계산하는 단계;
    상기 코덱이 적용된 프레임 크기로 나눠진 상기 샘플의 수가 균등하지 않으면, 상기 프레임의 수에 프레임을 더하는 단계; 및
    상기 복수개의 콘텐츠 파일 중 상기 현재 콘텐츠 파일을 상기 프레임의 수로 채우는 단계를 포함하는 것을 특징으로 하는 방법.
  8. 컴퓨팅 시스템에 의해, 오디오 및 비디오를 포함하는 미디어 콘텐츠를 수신하는 단계;
    상기 컴퓨팅 시스템에 의해, 프레임 레이트에 따라 상기 비디오를 인코딩하는 단계;
    상기 컴퓨팅 시스템에 의해, 코덱이 적용된 프레임 크기에 따라 상기 오디오를 인코딩하는 단계;
    상기 오디오의 인코딩된 프레임을 버퍼링하는 단계; 및
    상기 컴퓨팅 시스템에 의해, 복수개의 콘텐츠 파일을 생성하는 단계를 포함하되,
    상기 복수개의 콘텐츠 파일 각각은, 고정-시간 기간(fixed-time duration)을 갖는 상기 비디오의 인코딩된 부분 및 상기 코덱이 적용된 프레임 크기를 갖는 복수개의 전체 오디오 프레임을 갖는 상기 오디오의 인코딩된 부분을 포함하고, 하나 이상의 상기 복수개의 콘텐츠 파일의 오디오의 상기 인코딩된 부분의 기간이 상기 고정-시간 기간보다 크거나 작으며,
    상기 복수개의 콘텐츠 파일을 생성하는 단계는,
    샘플링 레이트에 상기 고정-시간 기간을 곱하고, 상기 복수개의 콘텐츠 파일 중 이전 콘텐츠 파일에 샘플 오프셋이 있으면, 상기 샘플 오프셋을 더함으로써, 상기 하나 이상의 복수개의 콘텐츠 파일 중 현재 콘텐츠 파일을 채우기 위해 필요한 샘플의 수를 계산하는 단계;
    상기 샘플의 수를 상기 코덱이 적용된 프레임 크기로 나눔으로써 상기 현재 콘텐츠 파일을 채우기 위해 필요한 프레임의 수를 계산하는 단계;
    상기 나눗셈의 나머지가 0이면, 상기 현재 콘텐츠 파일을 상기 프레임의 수로 채우는 단계; 및
    상기 나눗셈의 나머지가 0보다 크면, 상기 프레임의 수를 하나씩 증가시키고 상기 현재 콘텐츠 파일을 상기 증가된 프레임의 수로 채우는 단계를 포함하는 것을 특징으로 하는 방법.
  9. 제8항에 있어서,
    상기 복수개의 콘텐츠 파일을 생성하는 단계는,
    상기 현재 콘텐츠 파일을 채우기 위해 필요한 상기 샘플의 수로 변환하기 위해, 상기 프레임의 수에 상기 코덱이 적용된 프레임 크기를 곱하는 단계;
    상기 샘플의 수를 상기 샘플링 레이트로 나눔으로써, 상기 현재 콘텐츠 파일의 상기 오디오의 상기 인코딩된 부분의 상기 기간을 계산하는 단계;
    상기 고정-시간 기간에서 상기 기간을 빼므로써, 상기 복수개의 콘텐츠 파일 중 후속하는 콘텐츠 파일에 대한 프리젠테이션 오프셋을 결정하는 단계; 및
    상기 프레임의 수에 상기 코덱이 적용된 프레임 크기를 곱하고, 상기 복수개의 콘텐츠 파일 중 첫 번째 콘텐츠 파일을 채우기 위해 필요한 상기 샘플의 수를 빼고, 상기 복수개의 콘텐츠 파일 중 이전 콘텐츠 파일에 샘플 오프셋이 있으면, 상기 샘플 오프셋을 더함으로써, 상기 복수개의 콘텐츠 파일 중 상기 후속하는 콘텐츠 파일에 대한 상기 샘플 오프셋을 업데이트 하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  10. 컴퓨팅 시스템에 의해, 복수개의 로우(raw) 스트림릿 중 제1 로우 스트림릿 및 상기 복수개의 로우 스트림릿 중 제2 로우 스트림릿으로 오디오 및 비디오를 포함하는 미디어 콘텐츠를 수신하는 단계로서, 상기 복수개의 로우 스트림릿 각각은 고정-시간 기간(fixed-time duration)을 갖는 상기 미디어 콘텐츠의 일부를 포함하는, 상기 미디어 콘텐츠를 수신하는 단계;
    상기 제1 로우 스트림릿 및 상기 제2 로우 스트림릿의 상기 오디오 및 상기 비디오를 분할하는 단계;
    상기 컴퓨팅 시스템에 의해, 프레임 레이트에 따라 상기 비디오를 인코딩하는 단계;
    상기 컴퓨팅 시스템에 의해, 코덱이 적용된 프레임 크기에 따라 상기 오디오를 인코딩하는 단계; 및
    상기 컴퓨팅 시스템에 의해, 복수개의 콘텐츠 파일을 생성하는 단계를 포함하되,
    상기 비디오를 인코딩하는 단계는:
    상기 복수개의 콘텐츠 파일 중 제1 콘텐츠 파일 내에 저장된, 상기 제1 로우 스트림릿의 상기 비디오를 인코딩 하는 단계; 및
    상기 복수개의 콘텐츠 파일 중 제2 콘텐츠 파일 내에 저장된, 상기 제2 로우 스트림릿의 상기 비디오를 인코딩 하는 단계를 포함하고,
    상기 오디오를 인코딩하는 단계는:
    상기 제1 로우 스트림릿의 상기 오디오를 제1 복수개의 오디오 프레임으로 인코딩하는 단계; 및
    상기 제1 복수개의 오디오 프레임을 버퍼링하는 단계를 포함하며,
    상기 복수개의 콘텐츠 파일 각각은, 고정-시간 기간(fixed-time duration)을 갖는 상기 비디오의 인코딩된 부분 및 상기 코덱이 적용된 프레임 크기를 갖는 복수개의 전체 오디오 프레임을 갖는 상기 오디오의 인코딩된 부분을 포함하고, 하나 이상의 상기 복수개의 콘텐츠 파일의 오디오의 상기 인코딩된 부분의 기간이 상기 고정-시간 기간보다 크거나 작으며,
    상기 복수개의 콘텐츠 파일을 생성하는 단계는,
    상기 제1 콘텐츠 파일을 채우기 위한 버퍼링된 프레임이 충분한지 여부를 결정하는 단계;
    상기 제1 콘텐츠 파일을 채우기 위한 버퍼링된 프레임이 충분하지 않으면, 상기 제2 로우 스트림릿의 상기 오디오를 제2 복수개의 오디오 프레임으로 인코딩 하고 상기 제2 복수개의 오디오 프레임을 버퍼링 하는 단계; 및
    상기 제1 콘텐츠 파일을 채우기 위한 버퍼링된 프레임이 충분하면, 상기 버퍼링된 오디오 프레임을 상기 제1 콘텐츠 파일에 저장하는 단계를 포함하는 것을 특징으로 하는 방법.
  11. 컴퓨팅 시스템에 의해, 오디오 및 비디오를 포함하는 미디어 콘텐츠를 수신하는 단계;
    상기 컴퓨팅 시스템에 의해, 프레임 레이트에 따라 상기 비디오를 인코딩하는 단계;
    상기 컴퓨팅 시스템에 의해, 코덱이 적용된 프레임 크기에 따라 상기 오디오를 인코딩하는 단계; 및
    상기 컴퓨팅 시스템에 의해, 복수개의 콘텐츠 파일을 생성하는 단계를 포함하되,
    상기 복수개의 콘텐츠 파일 각각은, 고정-시간 기간(fixed-time duration)을 갖는 상기 비디오의 인코딩된 부분 및 상기 코덱이 적용된 프레임 크기를 갖는 복수개의 전체 오디오 프레임을 갖는 상기 오디오의 인코딩된 부분을 포함하고, 하나 이상의 상기 복수개의 콘텐츠 파일의 오디오의 상기 인코딩된 부분의 기간이 상기 고정-시간 기간보다 크거나 작으며,
    상기 고정-시간 기간은 2 초이고, 상기 오디오는 초당 48,000 개 샘플로 샘플링되고, 상기 코덱이 적용된 프레임 크기는 프레임당 1024 개 샘플이고, 상기 복수개의 콘텐츠 파일 중 제1 내지 제3 콘텐츠 파일의 상기 오디오 부분 각각은 94 개 오디오 프레임을 포함하고, 상기 복수개의 콘텐츠 파일 중 제4 콘텐츠 파일의 상기 오디오 부분은 93 개 오디오 프레임을 포함하고, 상기 제4 콘텐츠 파일의 상기 비디오 부분 각각은 60 개 비디오 프레임을 포함하는 것을 특징으로 하는 방법.
  12. 컴퓨팅 시스템에 의해, 오디오 및 비디오를 포함하는 미디어 콘텐츠를 수신하는 단계;
    상기 컴퓨팅 시스템에 의해, 프레임 레이트에 따라 상기 비디오를 인코딩하는 단계;
    상기 컴퓨팅 시스템에 의해, 코덱이 적용된 프레임 크기에 따라 상기 오디오를 인코딩하는 단계; 및
    상기 컴퓨팅 시스템에 의해, 복수개의 콘텐츠 파일을 생성하는 단계를 포함하되,
    상기 복수개의 콘텐츠 파일 각각은, 고정-시간 기간(fixed-time duration)을 갖는 상기 비디오의 인코딩된 부분 및 상기 코덱이 적용된 프레임 크기를 갖는 복수개의 전체 오디오 프레임을 갖는 상기 오디오의 인코딩된 부분을 포함하고, 하나 이상의 상기 복수개의 콘텐츠 파일의 오디오의 상기 인코딩된 부분의 기간이 상기 고정-시간 기간보다 크거나 작으며,
    상기 고정-시간 기간은 2 초이고, 상기 오디오는 초당 44,100 개 샘플로 샘플링되고, 상기 코덱이 적용된 프레임 크기는 프레임당 1024 개 샘플이고, 상기 복수개의 콘텐츠 파일 중 제1 콘텐츠 파일의 상기 오디오 부분은 87 개 오디오 프레임을 포함하고, 상기 복수개의 콘텐츠 파일 중 제2 콘텐츠 파일은 86 개 오디오 프레임을 포함하는 것을 특징으로 하는 방법.
  13. 제1항에 있어서,
    상기 코덱이 적용된 프레임 크기는 프레임당 2048 개 샘플인 것을 특징으로 하는 방법.
  14. 비디오 및 오디오를 포함하는 미디어 콘텐츠를 수신하는 수단;
    프레임 레이트에 따라 상기 비디오를 인코딩하는 수단;
    고정-프레임 크기에 따라 상기 오디오를 인코딩하는 수단;
    상기 비디오를 복수개의 부분으로 분할하는 수단 - 상기 비디오의 각 부분은 개별 콘텐츠 파일에 저장됨-; 및
    경계 아티팩츠의 발생 없이, 상기 오디오를 상기 개별 콘텐츠 파일로 분할하는 수단을 포함하되, 상기 개별 콘텐츠 파일 중 제1 콘텐츠 파일의 상기 인코딩된 오디오가, 상기 제1 콘텐츠 파일에 저장된 상기 인코딩된 비디오의 상기 부분의 기간보다 크거나 작은 기간을 가지며,
    상기 개별 콘텐츠 파일은,
    상기 오디오의 인코딩된 프레임을 버퍼링하는 단계;
    상기 개별 콘텐츠 파일 중 현재 콘텐츠 파일을 채우기 위해 필요한 인코딩된 프레임의 수를 결정하는 단계 - 상기 프레임의 수는, 상기 고정-프레임 크기로 나눠진 상기 개별 콘텐츠 파일 중 현재 콘텐츠 파일을 채우기 위해 필요한 샘플의 수보다 작지 않은 최소 정수임 -;
    상기 개별 콘텐츠 파일 중 현재 콘텐츠 파일을 채우기 위해 버퍼링된 상기 인코딩된 프레임이 충분한지 여부를 결정하는 단계;
    상기 버퍼링된 인코딩된 프레임이 충분하면, 상기 개별 콘텐츠 파일 중 상기 현재 콘텐츠 파일을 상기 프레임의 수로 채우는 단계; 및
    상기 버퍼링된 인코딩된 프레임이 충분하지 않으면, 상기 오디오의 추가적인 프레임을 버퍼링하고, 상기 개별 콘텐츠 파일 중 상기 현재 콘텐츠 파일을 상기 프레임의 수 및 상기 추가적인 프레임으로 채우는 단계에 의해 생성되는 것을 특징으로 하는 컴퓨팅 시스템.
  15. 제14항에 있어서,
    상기 콘텐츠 파일 각각에 샘플 오프셋이 있으면, 상기 샘플 오프셋을 추적하는 수단; 및
    상기 콘텐츠 파일 각각에 프리젠테이션 오프셋이 있으면, 상기 프리젠테이션 오프셋을 추적하는 수단을 더 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  16. 오디오 및 비디오를 포함하는 미디어 콘텐츠를 수신하고 상기 오디오 및 상기 비디오를 분할하는 분할기;
    상기 분할기로부터 상기 비디오를 수신하고, 프레임 레이트에 따라 상기 비디오를 인코딩하기 위해 커플링된 비디오 인코더;
    상기 분할기로부터 상기 오디오를 수신하고, 코덱이 적용된 프레임 크기에 따라 상기 오디오를 인코딩하기 위해 커플링된 오디오 인코더; 및
    복수개의 콘텐츠 파일을 생성하기 위한 오디오 분할 멀티플렉서 - 상기 복수개의 콘텐츠 파일 각각은, 고정-시간 기간을 갖는 상기 비디오의 인코딩된 부분 및 상기 코덱이 적용된 프레임 크기를 갖는 복수개의 전체 오디오 프레임을 갖는 상기 오디오의 인코딩된 부분을 포함-;를 포함하되,
    상기 복수개의 콘텐츠 파일은,
    상기 오디오의 인코딩된 프레임을 버퍼링하는 단계;
    상기 복수개의 콘텐츠 파일 중 현재 콘텐츠 파일을 채우기 위해 필요한, 상기 코덱이 적용된 프레임 크기에 의해 나누어진 상기 복수개의 파일 중 현재 콘텐츠 파일을 채우기 위해 필요한 샘플의 수보다 작지 않은 최소 정수인 인코딩된 프레임의 수를 결정하는 단계;
    상기 복수개의 콘텐츠 파일 중 현재 콘텐츠 파일을 채우기 위해 버퍼링된 상기 인코딩된 프레임이 충분한지 여부를 결정하는 단계;
    상기 버퍼링된 인코딩된 프레임이 충분하면, 상기 복수개의 콘텐츠 파일 중 상기 현재 콘텐츠 파일을 상기 프레임의 수로 채우는 단계; 및
    상기 버퍼링된 인코딩된 프레임이 충분하지 않으면, 상기 오디오의 추가적인 프레임을 버퍼링하고, 상기 복수개의 콘텐츠 파일 중 상기 현재 콘텐츠 파일을 상기 프레임의 수 및 상기 추가적인 프레임으로 채우는 단계에 의해 생성되는 것을 특징으로 하는 컴퓨팅 장치.
  17. 제16항에 있어서,
    상기 복수개의 전체 오디오 프레임의 마지막 프레임은 0으로 패딩되지 않은 것을 특징으로 하는 컴퓨팅 장치.
  18. 제16항에 있어서,
    상기 오디오의 인코딩된 프레임을 버퍼링하기 위한 오디오 프레임 버퍼를 더 포함하는 것을 특징으로 하는 컴퓨팅 장치.
  19. 명령이 저장된 컴퓨터로 판독 가능한 영구적 저장 매체로서,
    상기 명령은, 상기 명령이 컴퓨팅 디바이스에 의하여 실행될 경우 상기 컴퓨팅 디바이스가,
    오디오 및 비디오를 포함하는 미디어 콘텐츠를 수신하는 단계;
    프레임 레이트에 따라 상기 비디오를 인코딩하는 단계;
    코덱이 적용된 프레임 크기에 따라 상기 오디오를 인코딩하는 단계; 및
    복수개의 콘텐츠 파일을 생성하는 단계 - 상기 복수개의 콘텐츠 파일 각각은, 고정-시간 기간을 갖는 상기 비디오의 인코딩된 부분 및 상기 코덱이 적용된 프레임 크기를 갖는 복수개의 전체 오디오 프레임을 갖는 상기 오디오의 인코딩된 부분을 포함하고, 하나 이상의 상기 복수개의 콘텐츠 파일의 오디오의 상기 인코딩된 부분의 기간이 상기 고정-시간 기간보다 크거나 작음 -;를 포함하는 방법을 수행하도록 하며,
    상기 복수개의 콘텐츠 파일을 생성하는 단계는,
    상기 오디오의 인코딩된 프레임을 버퍼링하는 단계;
    상기 복수개의 콘텐츠 파일 중 현재 콘텐츠 파일을 채우기 위해 필요한 인코딩된 프레임의 수를 결정하는 단계 - 상기 프레임의 수는, 상기 코덱이 적용된 프레임 크기로 나눠진 상기 복수개의 콘텐츠 파일 중 현재 콘텐츠 파일을 채우기 위해 필요한 샘플의 수보다 작지 않은 최소 정수임 -;
    상기 복수개의 콘텐츠 파일 중 현재 콘텐츠 파일을 채우기 위해 버퍼링된 상기 인코딩된 프레임이 충분한지 여부를 결정하는 단계;
    상기 버퍼링된 인코딩된 프레임이 충분하면, 상기 복수개의 콘텐츠 파일 중 상기 현재 콘텐츠 파일을 상기 프레임의 수로 채우는 단계; 및
    상기 버퍼링된 인코딩된 프레임이 충분하지 않으면, 상기 오디오의 추가적인 프레임을 버퍼링하는 단계 및 상기 복수개의 콘텐츠 파일 중 상기 현재 콘텐츠 파일을 상기 프레임의 수 및 상기 추가적인 프레임으로 채우는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터로 판독 가능한 영구적 저장 매체.
  20. 삭제
  21. 삭제
  22. 삭제
KR1020147019773A 2009-12-21 2010-12-21 코덱이 적용된 프레임 크기로의 오디오 분할 KR101484900B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/643,700 2009-12-21
US12/643,700 US9338523B2 (en) 2009-12-21 2009-12-21 Audio splitting with codec-enforced frame sizes
PCT/US2010/061658 WO2011084823A1 (en) 2009-12-21 2010-12-21 Audio splitting with codec-enforced frame sizes

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020127018246A Division KR20120101710A (ko) 2009-12-21 2010-12-21 코덱이 적용된 프레임 크기로의 오디오 분할

Publications (2)

Publication Number Publication Date
KR20140097580A KR20140097580A (ko) 2014-08-06
KR101484900B1 true KR101484900B1 (ko) 2015-01-22

Family

ID=44151068

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020147019773A KR101484900B1 (ko) 2009-12-21 2010-12-21 코덱이 적용된 프레임 크기로의 오디오 분할
KR1020127018246A KR20120101710A (ko) 2009-12-21 2010-12-21 코덱이 적용된 프레임 크기로의 오디오 분할

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020127018246A KR20120101710A (ko) 2009-12-21 2010-12-21 코덱이 적용된 프레임 크기로의 오디오 분할

Country Status (12)

Country Link
US (5) US9338523B2 (ko)
EP (1) EP2517121B1 (ko)
JP (1) JP5728736B2 (ko)
KR (2) KR101484900B1 (ko)
CN (2) CN102713883B (ko)
AU (1) AU2010339666B2 (ko)
BR (1) BR112012014872B1 (ko)
CA (1) CA2784779C (ko)
IL (1) IL220482A (ko)
MX (1) MX2012007243A (ko)
SG (1) SG181840A1 (ko)
WO (1) WO2011084823A1 (ko)

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120045052A1 (en) * 2010-08-17 2012-02-23 Pedro Javier Vazquez Theft deterrence of motion picture films employing damaged-video files
CN107071513B (zh) * 2011-03-16 2020-03-10 艾迪尔哈布股份有限公司 用于提供媒体内容的方法、客户机和服务器
US9111524B2 (en) * 2011-12-20 2015-08-18 Dolby International Ab Seamless playback of successive multimedia files
US9609340B2 (en) * 2011-12-28 2017-03-28 Verizon Patent And Licensing Inc. Just-in-time (JIT) encoding for streaming media content
US9276989B2 (en) 2012-03-30 2016-03-01 Adobe Systems Incorporated Buffering in HTTP streaming client
US9142003B2 (en) * 2012-06-10 2015-09-22 Apple Inc. Adaptive frame rate control
US8904453B2 (en) 2012-06-10 2014-12-02 Apple Inc. Systems and methods for seamlessly switching between media streams
WO2014115147A1 (en) * 2013-01-24 2014-07-31 Telesofia Medical Ltd. System and method for flexible video construction
CN103152611B (zh) * 2013-02-18 2018-04-27 中兴通讯股份有限公司 一种流媒体管道业务的控制方法和装置
TWI557727B (zh) 2013-04-05 2016-11-11 杜比國際公司 音訊處理系統、多媒體處理系統、處理音訊位元流的方法以及電腦程式產品
US9386308B2 (en) * 2013-07-16 2016-07-05 Cisco Technology, Inc. Quality optimization with buffer and horizon constraints in adaptive streaming
CA2878754A1 (en) * 2014-01-19 2016-06-19 Fabrix Tv Ltd. Methods and systems of storage level video fragment management
EP3105938B1 (en) 2014-02-10 2020-12-16 Dolby International AB Embedding encoded audio into transport stream for perfect splicing
CN104065977B (zh) * 2014-06-06 2018-05-15 北京音之邦文化科技有限公司 音/视频文件的处理方法及装置
US20170118501A1 (en) * 2014-07-13 2017-04-27 Aniview Ltd. A system and methods thereof for generating a synchronized audio with an imagized video clip respective of a video clip
MX363719B (es) 2015-03-09 2019-03-29 Fraunhofer Ges Forschung Codificación de audio alineada por fragmentos.
US9906590B2 (en) * 2015-08-20 2018-02-27 Verizon Digital Media Services Inc. Intelligent predictive stream caching
US11269951B2 (en) 2016-05-12 2022-03-08 Dolby International Ab Indexing variable bit stream audio formats
US10701415B2 (en) * 2016-05-19 2020-06-30 Arris Enterprises Llc Method and apparatus for segmenting data
US10812558B1 (en) 2016-06-27 2020-10-20 Amazon Technologies, Inc. Controller to synchronize encoding of streaming content
US10652625B1 (en) 2016-06-27 2020-05-12 Amazon Technologies, Inc. Synchronization of multiple encoders for streaming content
US10652292B1 (en) * 2016-06-28 2020-05-12 Amazon Technologies, Inc. Synchronization of multiple encoders for streaming content
US10462269B2 (en) * 2016-08-15 2019-10-29 Qualcomm Incorporated Packetizing encoded audio frames into compressed-over-pulse code modulation (PCM) (COP) packets for transmission over PCM interfaces
CN106911941B (zh) * 2017-03-02 2019-08-16 上海幻电信息科技有限公司 一种自适应视频切片方法
AU2018254550B2 (en) 2017-04-21 2020-09-24 Zenimax Media Inc. Systems and methods for game-generated motion vectors
BR112019021687A2 (pt) 2017-04-21 2020-05-12 Zenimax Media Inc. Sistemas e métodos para renderização de qualidade adaptativa guiada por codificador
US10148978B2 (en) 2017-04-21 2018-12-04 Zenimax Media Inc. Systems and methods for player input motion compensation by anticipating motion vectors and/or caching repetitive motion vectors
CA3059743A1 (en) 2017-04-21 2018-10-25 Zenimax Media Inc. Systems and methods for deferred post-processes in video encoding
AU2018255414B2 (en) 2017-04-21 2021-01-21 Zenimax Media Inc. Systems and methods for rendering and pre-encoded load estimation based encoder hinting
US10652166B2 (en) * 2017-06-27 2020-05-12 Cisco Technology, Inc. Non-real time adaptive bitrate recording scheduler
US11146608B2 (en) 2017-07-20 2021-10-12 Disney Enterprises, Inc. Frame-accurate video seeking via web browsers
US10997320B1 (en) * 2018-01-31 2021-05-04 EMC IP Holding Company LLC Segment-based personalized cache architecture
CN108417219B (zh) * 2018-02-22 2020-10-13 武汉大学 一种适应于流媒体的音频对象编解码方法
US10440367B1 (en) * 2018-06-04 2019-10-08 Fubotv Inc. Systems and methods for adaptively encoding video stream
US10674192B2 (en) 2018-06-29 2020-06-02 International Business Machines Corporation Synchronizing multiple computers presenting common content
KR102074240B1 (ko) * 2018-10-17 2020-02-06 네오컨버전스 주식회사 동영상 변환방법 및 장치
CN109788343B (zh) * 2018-11-26 2019-10-25 广州微算互联信息技术有限公司 Html网页播放音频流的方法与云手机服务器
CN110557226A (zh) * 2019-09-05 2019-12-10 北京云中融信网络科技有限公司 一种音频传输方法和装置
US11503264B2 (en) 2019-09-13 2022-11-15 Netflix, Inc. Techniques for modifying audiovisual media titles to improve audio transitions
US11336947B2 (en) * 2019-09-13 2022-05-17 Netflix, Inc. Audio transitions when streaming audiovisual media titles
CN110913273A (zh) * 2019-11-27 2020-03-24 北京翔云颐康科技发展有限公司 视频直播方法及装置
US11277461B2 (en) * 2019-12-18 2022-03-15 The Nielsen Company (Us), Llc Methods and apparatus to monitor streaming media
US11723136B2 (en) * 2019-12-20 2023-08-08 Harman Professional Denmark Aps Systems and methods for a music feature file and coordinated light show
CN112437315B (zh) * 2020-09-02 2023-06-27 上海幻电信息科技有限公司 适应多系统版本的音频适配方法及系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020001309A1 (en) * 2000-06-30 2002-01-03 Kabushiki Kaisha Toshiba Multiplexer, multimedia communication apparatus and time stamp generation method
KR20070046313A (ko) * 2005-10-31 2007-05-03 엠큐브웍스(주) 오디오 비트 스트림을 보코더 패킷 단위로 전송하는 방법
US20070100607A1 (en) * 2005-11-03 2007-05-03 Lars Villemoes Time warped modified transform coding of audio signals
KR20080044828A (ko) * 2005-06-27 2008-05-21 스트리밍 네트웍스 즉시재생 제공 방법 및 시스템

Family Cites Families (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA1186028A (en) 1982-06-23 1985-04-23 Microdesign Limited Method and apparatus for scrambling and unscrambling data streams using encryption and decryption
US6604118B2 (en) 1998-07-31 2003-08-05 Network Appliance, Inc. File system image transfer
US5511003A (en) 1993-11-24 1996-04-23 Intel Corporation Encoding and decoding video signals using spatial filtering
US6366614B1 (en) 1996-10-11 2002-04-02 Qualcomm Inc. Adaptive rate control for digital video compression
US5953506A (en) 1996-12-17 1999-09-14 Adaptive Media Technologies Method and apparatus that provides a scalable media delivery system
US5913190A (en) 1997-10-17 1999-06-15 Dolby Laboratories Licensing Corporation Frame-based audio coding with video/audio data synchronization by audio sample rate conversion
US5899969A (en) 1997-10-17 1999-05-04 Dolby Laboratories Licensing Corporation Frame-based audio coding with gain-control words
US5913191A (en) 1997-10-17 1999-06-15 Dolby Laboratories Licensing Corporation Frame-based audio coding with additional filterbank to suppress aliasing artifacts at frame boundaries
US6081299A (en) * 1998-02-20 2000-06-27 International Business Machines Corporation Methods and systems for encoding real time multimedia data
JP4228407B2 (ja) 1998-03-04 2009-02-25 ソニー株式会社 情報記録装置及び情報記録方法
US6195680B1 (en) 1998-07-23 2001-02-27 International Business Machines Corporation Client-based dynamic switching of streaming servers for fault-tolerance and load balancing
US6574591B1 (en) 1998-07-31 2003-06-03 Network Appliance, Inc. File systems image transfer between dissimilar file systems
US6665751B1 (en) 1999-04-17 2003-12-16 International Business Machines Corporation Streaming media player varying a play speed from an original to a maximum allowable slowdown proportionally in accordance with a buffer state
JP2008072718A (ja) 1999-09-20 2008-03-27 Matsushita Electric Ind Co Ltd 符号化記録装置
US6278387B1 (en) 1999-09-28 2001-08-21 Conexant Systems, Inc. Audio encoder and decoder utilizing time scaling for variable playback
JP4356046B2 (ja) 1999-10-26 2009-11-04 日本ビクター株式会社 符号化データ記録再生装置、及び符号化データ再生装置
US7523181B2 (en) 1999-11-22 2009-04-21 Akamai Technologies, Inc. Method for determining metrics of a content delivery and global traffic management network
US6678332B1 (en) * 2000-01-04 2004-01-13 Emc Corporation Seamless splicing of encoded MPEG video and audio
US7240100B1 (en) 2000-04-14 2007-07-03 Akamai Technologies, Inc. Content delivery network (CDN) content server request handling mechanism with metadata framework support
US6976090B2 (en) 2000-04-20 2005-12-13 Actona Technologies Ltd. Differentiated content and application delivery via internet
WO2002015591A1 (en) 2000-08-16 2002-02-21 Koninklijke Philips Electronics N.V. Method of playing multimedia data
US7574272B2 (en) 2000-10-13 2009-08-11 Eric Paul Gibbs System and method for data transfer optimization in a portable audio device
US6934875B2 (en) 2000-12-29 2005-08-23 International Business Machines Corporation Connection cache for highly available TCP systems with fail over connections
AU2002247257A1 (en) 2001-03-02 2002-09-19 Kasenna, Inc. Metadata enabled push-pull model for efficient low-latency video-content distribution over a network
US6907081B2 (en) * 2001-03-30 2005-06-14 Emc Corporation MPEG encoder control protocol for on-line encoding and MPEG data storage
US20020154691A1 (en) 2001-04-19 2002-10-24 Kost James F. System and process for compression, multiplexing, and real-time low-latency playback of networked audio/video bit streams
US20030121047A1 (en) 2001-12-20 2003-06-26 Watson Paul T. System and method for content transmission network selection
US6789123B2 (en) 2001-12-28 2004-09-07 Microsoft Corporation System and method for delivery of dynamically scalable audio/video content over a network
CA2471855C (en) 2002-01-11 2013-03-19 Akamai Technologies, Inc. Java application framework for use in a content delivery network (cdn)
US7634531B2 (en) 2002-01-23 2009-12-15 Ali Abdolsalehi Interactive internet browser based media broadcast
US20030151753A1 (en) 2002-02-08 2003-08-14 Shipeng Li Methods and apparatuses for use in switching between streaming video bitstreams
US7136922B2 (en) 2002-10-15 2006-11-14 Akamai Technologies, Inc. Method and system for providing on-demand content delivery for an origin server
US20040103444A1 (en) 2002-11-26 2004-05-27 Neal Weinberg Point to multi-point broadcast-quality Internet video broadcasting system with synchronized, simultaneous audience viewing and zero-latency
US7630612B2 (en) 2003-02-10 2009-12-08 At&T Intellectual Property, I, L.P. Video stream adaptive frame rate scheme
US7373416B2 (en) 2003-04-24 2008-05-13 Akamai Technologies, Inc. Method and system for constraining server usage in a distributed network
US20050108414A1 (en) 2003-11-14 2005-05-19 Taylor Thomas M. System and method for transmitting data in computer systems using virtual streaming
US7272782B2 (en) 2003-12-19 2007-09-18 Backweb Technologies, Inc. System and method for providing offline web application, page, and form access in a networked environment
WO2005104551A2 (en) 2004-04-16 2005-11-03 Modulus Video, Inc. High definition scalable array encoding system and method
US8868772B2 (en) 2004-04-30 2014-10-21 Echostar Technologies L.L.C. Apparatus, system, and method for adaptive-rate shifting of streaming content
JP2005341061A (ja) * 2004-05-25 2005-12-08 Ntt Docomo Inc 多重化装置及び多重化方法
JPWO2006006714A1 (ja) * 2004-07-14 2008-05-01 セイコーエプソン株式会社 映像再生同期信号生成方法、映像再生同期信号生成プログラム、タイミング制御装置、映像音声同期再生方法、映像音声同期再生プログラム及び映像音声同期再生装置
US20060206246A1 (en) 2004-10-28 2006-09-14 Walker Richard C Second national / international management and security system for responsible global resourcing through technical management to brige cultural and economic desparity
US7548727B2 (en) * 2005-10-26 2009-06-16 Broadcom Corporation Method and system for an efficient implementation of the Bluetooth® subband codec (SBC)
JP2007207328A (ja) 2006-01-31 2007-08-16 Toshiba Corp 情報記憶媒体、プログラム、情報再生方法、情報再生装置、データ転送方法、及びデータ処理方法
US20070230898A1 (en) 2006-03-31 2007-10-04 Masstech Group Inc. Random access searching with frame accuracy and without indexing within windows media video
JP2008054159A (ja) 2006-08-28 2008-03-06 Matsushita Electric Ind Co Ltd 映像音声多重化装置
US9247259B2 (en) 2006-10-10 2016-01-26 Flash Networks Ltd. Control of video compression based on file size constraint
DE102006049154B4 (de) * 2006-10-18 2009-07-09 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Kodierung eines Informationssignals
US20080219151A1 (en) 2007-03-07 2008-09-11 Nokia Corporation System and method for using a peer to peer mechanism to repair broadcast data in wireless digital broadcast networks
US20090198500A1 (en) 2007-08-24 2009-08-06 Qualcomm Incorporated Temporal masking in audio coding based on spectral dynamics in frequency sub-bands
US20090257484A1 (en) * 2008-04-15 2009-10-15 Winbond Electronics Corp. Method for audio-video encoding and apparatus for multimedia storage
US8325800B2 (en) * 2008-05-07 2012-12-04 Microsoft Corporation Encoding streaming media as a high bit rate layer, a low bit rate layer, and one or more intermediate bit rate layers
KR101612442B1 (ko) 2008-05-13 2016-04-15 삼성전자주식회사 컨텐츠 시청 제한 정보의 제공 및 이용을 위한 방법 및장치

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020001309A1 (en) * 2000-06-30 2002-01-03 Kabushiki Kaisha Toshiba Multiplexer, multimedia communication apparatus and time stamp generation method
KR20080044828A (ko) * 2005-06-27 2008-05-21 스트리밍 네트웍스 즉시재생 제공 방법 및 시스템
KR20070046313A (ko) * 2005-10-31 2007-05-03 엠큐브웍스(주) 오디오 비트 스트림을 보코더 패킷 단위로 전송하는 방법
US20070100607A1 (en) * 2005-11-03 2007-05-03 Lars Villemoes Time warped modified transform coding of audio signals

Also Published As

Publication number Publication date
US20160240205A1 (en) 2016-08-18
US20170155910A1 (en) 2017-06-01
JP5728736B2 (ja) 2015-06-03
CA2784779A1 (en) 2011-07-14
AU2010339666B2 (en) 2014-07-10
US10230958B2 (en) 2019-03-12
BR112012014872B1 (pt) 2020-12-15
IL220482A (en) 2014-11-30
US10547850B2 (en) 2020-01-28
US20180234682A1 (en) 2018-08-16
US20110150099A1 (en) 2011-06-23
CN106210768B (zh) 2019-04-26
KR20140097580A (ko) 2014-08-06
EP2517121B1 (en) 2019-06-19
EP2517121A1 (en) 2012-10-31
CN102713883B (zh) 2016-09-28
CN106210768A (zh) 2016-12-07
SG181840A1 (en) 2012-07-30
MX2012007243A (es) 2013-01-29
KR20120101710A (ko) 2012-09-14
AU2010339666A1 (en) 2012-07-19
CA2784779C (en) 2015-11-24
US9601126B2 (en) 2017-03-21
US9961349B2 (en) 2018-05-01
US9338523B2 (en) 2016-05-10
JP2013515401A (ja) 2013-05-02
US20190182488A1 (en) 2019-06-13
BR112012014872A2 (pt) 2016-03-22
CN102713883A (zh) 2012-10-03
EP2517121A4 (en) 2016-10-12
WO2011084823A1 (en) 2011-07-14

Similar Documents

Publication Publication Date Title
KR101484900B1 (ko) 코덱이 적용된 프레임 크기로의 오디오 분할
US11677798B2 (en) Apparatus, system, and method for multi-bitrate content streaming
US10979473B2 (en) Apparatus, system, and method for multi-bitrate content streaming
US20240015343A1 (en) Fragment server directed device fragment caching
US8850054B2 (en) Hypertext transfer protocol live streaming
US9332051B2 (en) Media manifest file generation for adaptive streaming cost management
US20140032658A1 (en) Optimizing video clarity
CN113141522B (zh) 资源传输方法、装置、计算机设备及存储介质
KR101383904B1 (ko) 스트리밍 서비스에서의 광고 영상 제공 방법 및 이를 이용한 스트리밍 서비스 장치

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20171219

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20181226

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20191217

Year of fee payment: 6