KR20160104035A - 분산된 트랜스코딩을 위한 콘텐츠-적응 청킹 - Google Patents

분산된 트랜스코딩을 위한 콘텐츠-적응 청킹 Download PDF

Info

Publication number
KR20160104035A
KR20160104035A KR1020167020591A KR20167020591A KR20160104035A KR 20160104035 A KR20160104035 A KR 20160104035A KR 1020167020591 A KR1020167020591 A KR 1020167020591A KR 20167020591 A KR20167020591 A KR 20167020591A KR 20160104035 A KR20160104035 A KR 20160104035A
Authority
KR
South Korea
Prior art keywords
scene
video clip
chunks
frames
video
Prior art date
Application number
KR1020167020591A
Other languages
English (en)
Inventor
샘 존
상옥 금
스티브 벤팅
씨어리 포우쿠
야오 청 린
Original Assignee
구글 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 구글 인코포레이티드 filed Critical 구글 인코포레이티드
Publication of KR20160104035A publication Critical patent/KR20160104035A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • H04N21/234309Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements by transcoding between formats or standards, e.g. from MPEG-2 to MPEG-4 or from Quicktime to Realvideo
    • 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/142Detection of scene cut or scene change
    • 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/179Methods 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 a scene or a shot
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/44008Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving operations for analysing video streams, e.g. detecting features or characteristics in the video stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/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
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/76Television signal recording
    • H04N5/91Television signal processing therefor

Landscapes

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

Abstract

비디오 클립을 트랜스코드하는 시스템 및 방법이 개시된다. 한 구현에서, 컴퓨터 시스템은 비디오 클립을 N+1개의 연속하는 청크들로 나눌 N개의 프레임들을 결정하고, 여기서 N은 양의 정수이고, 상기 프레임들은 비디오 클립의 영상 콘텐츠, 최소 청크 크기, 및 최대 청크 크기에 기초하여 결정된다. N+1개의 청크들 각각은 트랜스코드하기 위한 각자의 프로세서에 제공되고, 트랜스코드된 비디오 클립이 트랜스코드된 N+1개의 청크들로부터 발생된다.

Description

분산된 트랜스코딩을 위한 콘텐츠-적응 청킹{CONTENT-ADAPTIVE CHUNKING FOR DISTRIBUTED TRANSCODING}
본 개시내용의 양태들 및 구현들은 데이터 처리, 및 보다 구체적으로, 디지털 콘텐츠의 트랜스코딩에 관한 것이다.
트랜스코딩은 하나의 인코딩의 다른 것으로의 직접 디지털-디지털 데이터 변환이다. 트랜스코딩은 다양한 화면 해상도들, 애스펙트 비들, 파일 포맷들, 코덱들 등을 위한 지원을 제공하기 위해 비디오 클립들의 클라이언트 머신들(예를 들어, 데스크탑 컴퓨터들, 스마트폰들, 태블릿들 등)로의 전달에 자주 이용된다.
다음은 이러한 양태들의 기본적 이해를 제공하기 위해 본 개시내용의 다양한 양태들의 간소화된 요약을 제시한다. 이 요약은 모든 숙고된 양태들의 광범위한 개관이 아니고, 주요 또는 중요한 요소들을 확인하려는 것도 아니고 이러한 양태들의 범위를 한정하려는 것도 아니다. 그것의 목적은 나중에 제시되는 보다 상세한 설명에 대한 서문으로서 본 개시내용의 일부 개념들을 간소화된 형태로 제시하는 것이다.
본 개시내용의 양태에서, 컴퓨터 시스템은 비디오 클립을 N+1개의 연속하는 청크들로 나눌 N개의 프레임들을 결정하고, 여기서 N은 양의 정수이고, 여기서, 그 프레임들은 비디오 클립의 영상 콘텐츠, 최소 청크 크기, 및 최대 청크 크기에 기초하여 결정된다. 한 구현에서, N+1개의 청크들 각각은 트랜스코드하기 위한 각자의 프로세서에 제공되고, 트랜스코드된 비디오 클립은 다음에 트랜스코드된 N+1개의 청크들로부터 발생된다.
본 개시내용의 양태들 및 구현들은 아래에 주어진 상세한 설명으로부터 및 본 개시내용의 다양한 양태들 및 구현들의 첨부 도면으로부터 보다 완전히 이해될 것이지만, 본 개시내용을 특정한 양태들 및 구현들로 제한하도록 취해지지 않아야 하고, 단지 설명과 이해를 위한 것이다.
도 1은 예시적인 비디오 클립의 부분 및 비디오 클립의 예시적인 고정-크기 및 콘텐츠-적응 청킹을 도시한다.
도 2는 본 개시내용의 한 구현에 따른, 예시적인 시스템 아키텍처를 도시한다.
도 3은 트랜스코딩 관리기의 한 구현의 블록도이다.
도 4는 비디오 클립들의 분산된 트랜스코딩을 위한 방법의 양태들의 흐름도를 도시한다.
도 5는 비디오를 청크들로 나눌 경계 프레임들을 결정하는 방법의 양태들의 흐름도를 도시한다.
도 6은 본 개시내용의 양태들 및 구현들에 따라 동작하는 예시적인 컴퓨터 시스템의 블록도를 도시한다.
본 개시내용의 양태들 및 구현들이 비디오 클립들의 분산된 트랜스코딩을 위해 개시된다. 특히, 본 개시내용의 구현들은 비디오 클립을 청크들로 나누고, 청크들 각각을 트랜스코드하기 위한 각자의 프로세서(예를 들어, 각각의 서버의 중앙 처리 장치, 멀티-프로세서 컴퓨터의 각자의 프로세서 등)에 제공하고, 트랜스코드된 청크들로부터 트랜스코드된 비디오 클립을 발생할 수 있다. 청크들은 프로세서들에 의해 병렬로 트랜스코드될 수 있기 때문에, 비디오 클립은 단일 프로세서가 전체 비디오 클립을 트랜스코드하기 위해 요구되는 시간의 부분에서 트랜스코드될 수 있다.
그러나, 이러한 전략으로 생길 수 있는 문제는 청크들이 그들의 비디오 코딩 복잡도에서 폭넓게 변화할 수 있다는 것이다. 보다 특정적으로, 장면이 상이한 비디오 코딩 복잡도들을 갖는 인접한 청크들에 걸쳐 스플릿될 때, 결과는 충분히 클 때, 트랜스코드된 비디오 클립의 관찰자에게 가시적일 수 있는, 청크 경계들에서의 불연속들일 수 있다. 예를 들어, 충분히 클 때, 청크 경계에서 피크 신호 대 잡음비(PSNR)에서의 가시적인 불연속을 발생하는 인접한 청크들 간의 양자화 단계 크기에서의 불연속이 있을 수 있다.
비디오를 트랜스코드하기 위해 청킹을 사용할 때의 추가의 문제는 비디오 압축의 본질로부터 생긴다. 보다 특정적으로, 비디오 압축은 상이한 유형들의 프레임들 - 완전히 특정된 영상들을 포함하는 I-프레임들, 및 인접한 프레임들 사이의 변화들만을 저장하는 비-I-프레임들(예를 들어, P-프레임들로서 공지된 예측된 화상, B-프레임들로서 공지된 바이-예측(bi-predictive) 화상 프레임들 등)을 이용한다. 청크의 제1 프레임은 항상 I-프레임인 반면, 청크의 최종 프레임은 I-프레임 또는 비-I-프레임일 수 있다. 게다가, I-프레임들 및 비-I-프레임들은 상이한 양자화 잡음 패턴들을 나타낸다. 결과적으로, 청크의 최종 비-I-프레임과 다음 청크의 초기 I-프레임 간의 품질 차이는, 특히 낮은 비트 레이트 인코딩 방식들(예를 들어, 낮은 비트 레이트 H.264/MPEG-4 인코딩들 등)에서, I-펄싱이라고 알려진 가시적인 플리커를 야기할 수 있다.
본 개시내용의 구현들은 콘텐츠-적응 알고리즘을 사용함으로써 청킹의 이들 고유한 문제들을 완화시킬 수 있다. 보다 특정적으로, 비디오 클립을 고정-크기(또는 거의 고정-크기) 청크들로 단순하게 나누는 것 대신에, 본 개시내용의 구현들은 비디오 클립의 영상 콘텐츠(예를 들어, 비디오 클립의 프레임들의 화소 값들, 비디오 클립의 특징들 등), 최소 청크 크기, 및 최대 청크 크기에 기초하여 청크 경계들을 결정한다. 이 방식은 청크 경계들에서 보다 적은 수의 아티팩트들을 발생시키고, 그럼으로써 사용자들에게 개선된 관찰 경험을 가져다 준다.
본 개시내용의 일부 구현들에서, 비디오 클립의 영상 콘텐츠에 기초하여 청크 경계들을 결정하는 것은 (예를 들어, 페이드 인 또는 페이드 아웃과 같은 효과들의 추출을 통해, 프레임들 간의 화소 기반 차이들을 통해, 프레임들 간의 히스토그램 기반 차이들을 통해, 특징들의 통계학적 분석을 통해, 등) 비디오 클립에서 장면 변화들을 식별하는 것을 포함한다. 장면 변화들을 식별하고, 가능할 때, 장면 변화들에 청크 경계들을 정렬시킴으로써, 청킹에 의해 발생된 아티팩트들이 장면 변화들과 일치할 때 관찰자들에게 일반적으로 덜 눈에 띄게 됨에 따라, 함께 연결된 트랜스코드된 비디오 클립의 품질이 개선된다.
도 1은 (a) 비디오 클립의 예시적인 고정-크기 청킹, 및 (b) 비디오 클립의 예시적인 콘텐츠-적응 청킹으로 나누어진 장면들(101-1 내지 101-5)을 포함하는 예시적인 비디오 클립의 부분을 도시한다. 도 1에 도시한 바와 같이, 양 청킹 방식들이 5개의 청크 경계들을 발생하지만, 콘텐츠-적응 청크들은 고정-크기 청킹에 비해 장면 내에서 발생하는 더 적은 수의 경계들을 가짐으로써, 보다 높은 품질의 트랜스코드된 비디오 클립을 가져다 준다.
일부 구현들에서, 청크 경계들의 결정은 또한 최소 및 최대 청크 크기들 외에, 디폴트 청크 크기에 기초한다. 일부 이러한 구현들에서, 디폴트 청크 크기는 최소 청크 크기 이상이고 최대 청크 크기 이하이다.
일부 구현들에서, 장면이 최대 청크 크기를 초과할 때, 청크 경계에서의 장면의 스플리팅은 영상 콘텐츠에 기초할 수 있다. 예를 들어, 청크 경계는 장면의 개개의 프레임들의 휘도의 측정치에 기초하여(예를 들어, 휘도의 측정치가 최소 변화율을 갖는 프레임에서 장면을 스플릿하는 것 등), 또는 장면의 프레임들에 걸치는 움직임의 측정치에 기초하여(예를 들어, 움직임의 측정치가 최소 변화율을 갖는 프레임에서 장면을 스플릿하는 것 등) 결정될 수 있다.
일부 구현들에 따르면, 청크는 먼저 중간 "유니버설" 포맷으로 디코드될 수 있고, 다음에 유니버설 포맷으로부터 목표 인코딩으로 트랜스코드될 수 있다. 게다가, 일부 구현들에서 비디오 클립은 복수의 상이한 인코딩들(예를 들어, H.264/MPEG-4, MPEG-2 등)로 트랜스코드될 수 있다. 일부 이러한 구현들에서, 각각의 청크는 복수의 상이한 인코딩들로 트랜스코드되고, 각각의 인코딩을 위한 트랜스코드된 비디오 클립은 대응하는 트랜스코드된 청크들을 어셈블함으로써 발생된다(예를 들어, MPEG-2 비디오 클립은 MPEG-2-인코드된 청크들로부터 어셈블되고, H.264/MPEG-4 비디오 클립은 H.264/MPEG-4-인코드된 청크들로부터 어셈블되는 등). 일부 구현들에서 유니버설 포맷은 압축되지 않을 수 있는 반면, 다른 구현들에서 유니버설 포맷은 압축될 수 있다는 점에 주목하여야 한다.
그러므로 본 개시내용의 양태들 및 구현들은 병렬 및 분산 처리를 통해 트랜스코드된 비디오 클립들의 품질을 개선할 수 있다. 트랜스코드된 비디오 클립들은 인트라-장면 청크 경계들의 감소, 긴 장면들의 지능적인 스플리팅(예를 들어, 이러한 장면들 내에 드는 경계들에서 휘도, 움직임의 변화율 등을 최소화함으로써), 및 트랜스코드된 비디오 클립 내의 I-프레임들의 수의 전체적인 감소로 인해 단순한, 고정-크기 청킹 전략들과 비교할 때 더 적은 수의 눈에 띄는 아티팩트들을 가진다. 결과적으로, 본 개시내용의 양태들 및 구현들은 분산 및 병렬 처리를 통해 비디오 클립들을 트랜스코드하는 속도 장점을 제공하면서, 이러한 처리에 의해 야기되는 품질의 저하를 완화시킨다.
비디오 클립들을 트랜스코드하는 맥락에서 양태들 및 구현들이 개시되지만, 본 개시내용의 기술들은 다른 유형들의 미디어 아이템들(예를 들어, 오디오 클립들, 영상들 등)을 트랜스코드하는 데 적응될 수 있다는 점에 주목하여야 한다. 예를 들어, 비디오 클립에서의 장면 변화의 아날로그는 오디오 클립에서의 조용한 시간 간격일 수 있다.
도 2는 본 개시내용의 한 구현에 따른, 예시적인 시스템 아키텍처(200)를 도시한다. 시스템 아키텍처(200)는 네트워크(204)에 접속된 서버 머신(215), 미디어 스토어(220), 웹 페이지 스토어(230), 클라이언트 머신들(202-1 내지 202-M), 및 트랜스코드 서버들(260-1 내지 260-N)을 포함하고, 여기서 M과 N은 양의 정수들이다. 네트워크(204)는 공중 네트워크(예를 들어, 인터넷), 사설 네트워크(예를 들어, 근거리 네트워크(LAN) 또는 광역 네트워크(WAN)), 또는 이들의 조합일 수 있다.
클라이언트 머신들(202-1 내지 202-M)은 퍼스널 컴퓨터들(PC들), 랩탑들, 이동 전화들, 태블릿 컴퓨터들, 셋톱 박스들, 텔레비전들, 비디오 게임 콘솔들, 개인 휴대 단말기들 또는 기타 컴퓨팅 디바이스들일 수 있다. 클라이언트 머신들(202-1 내지 202-M)은 클라이언트 머신들(202-1 내지 202-M)의 하드웨어 및 소프트웨어를 관리하는 운영 체제(도시 안됨)를 실행시킬 수 있다. 브라우저(도시 안됨)는 일부 클라이언트 머신들 상에서(예를 들어, 클라이언트 머신들의 OS 상에서) 실행할 수 있다. 브라우저는 (예를 들어, 하이퍼텍스트 트랜스포트 프로토콜(HTTP)을 사용하여) 콘텐츠 서버(240)의 웹 페이지들에 내비게이트함으로써 서버 머신(215)의 콘텐츠 서버(240)에 의해 서브되는 콘텐츠에 액세스할 수 있는 웹 브라우저일 수 있다. 브라우저는 미디어 아이템들(예를 들어, 비디오 클립들, 오디오 클립들, 영상들 등)을 업로드하고, 미디어 아이템들을 서치하고, 미디어 아이템들을 분산시키는 것 등을 위한 명령들과 같은, 명령들 및 조회들을 콘텐츠 서버(240)에 발행할 수 있다.
클라이언트 머신들(202-1 내지 202-M) 중 하나 이상은 콘텐츠 서버(240)에 의해 제공된 서비스와 관련된 애플리케이션들을 포함할 수 있다. 이러한 애플리케이션들("앱들")을 사용할 수 있는 클라이언트 머신들의 예들은 이동 전화들, "스마트" 텔레비전, 태블릿 컴퓨터들 등을 포함한다. 애플리케이션들 또는 앱들은 콘텐츠 서버(240)의 웹 페이지들에 방문하지 않고서, 콘텐츠 서버(240)에 의해 제공된 콘텐츠에 액세스하고, 콘텐츠 서버(240)에 명령들을 발행하는 것 등을 할 수 있다.
일반적으로, 콘텐츠 서버(240)에 의해 수행되는 것으로서 한 실시예에서 설명된 기능들은 또한 적절한 경우에 다른 실시예들에서 클라이언트 머신들(202-1 내지 202-M) 상에서 수행될 수 있다. 또한, 특정한 소자에 부여되는 기능성은 함께 동작하는 상이한 또는 다중 소자들에 의해 수행될 수 있다. 콘텐츠 서버(240)는 또한 적절한 애플리케이션 프로그래밍 인터페이스들을 통해 다른 시스템들 또는 디바이스들에 제공된 서비스로서 액세스될 수 있으므로, 웹사이트들에서 사용하는 것으로 한정되지 않는다.
서버 머신(215)은 랙마운트 서버, 라우터 컴퓨터, 퍼스널 컴퓨터, 개인 휴대 단말기, 이동 전화, 랩탑 컴퓨터, 태블릿 컴퓨터, 카메라, 비디오 카메라, 노트북, 데스크탑 컴퓨터, 미디어 센터, 또는 상기의 어떤 조합일 수 있다. 서버 머신(215)은 콘텐츠 서버(240) 및 트랜스코딩 관리기(250)를 포함한다. 대안적 구현들에서, 콘텐츠 서버(240) 및 트랜스코딩 관리기(250)는 상이한 머신들 상에서 실행할 수 있다.
미디어 스토어(220)는 미디어 아이템들을 태그, 구성, 및 인덱스하기 위해 데이터 구조들뿐만 아니라 미디어 아이템들(예를 들어, 비디오 클립들, 오디오 클립들, 영상들 등)을 저장할 수 있는 지속 스토리지이다. 미디어 스토어(220)는 주 메모리, 자기 또는 광학 스토리지 기반 디스크들, 테이프들 또는 하드 드라이브들, NAS, SAN 등과 같은, 하나 이상의 저장 디바이스에 의해 호스트될 수 있다. 일부 구현들에서, 미디어 스토어(220)는 네트워크-부착 파일 서버일 수 있는 반면, 다른 실시예들에서 미디어 스토어(220)는 서버 머신(215) 또는 네트워크(204)를 통해 서버 머신(215)에 결합된 하나 이상의 상이한 머신에 의해 호스트될 수 있는, 객체-지향 데이터베이스, 상관적인 데이터베이스 등과 같은 일부 다른 유형의 지속 스토리지일 수 있다. 미디어 스토어(220) 내에 저장된 미디어 아이템들은 언론사들, 출판사들, 라이브러리들 등과 같은 서비스 제공자들로부터의 미디어 아이템들뿐만 아니라, 클라이언트 머신들에 의해 업로드된 사용자-발생 미디어 아이템들을 포함할 수 있다. 일부 구현들에서, 미디어 스토어(220)는 제3자 서비스에 의해 제공될 수 있는 반면, 일부 다른 구현들에서 미디어 스토어(220)는 서버 머신(215)을 유지하는 동일한 엔티티에 의해 유지될 수 있다.
웹 페이지 스토어(230)는 웹 페이지들 및/또는 모바일 앱 문서들(예를 들어, 모바일 디바이스들 상에 제공하기 위해 모바일 앱들에 제공된 문서들)을 태그, 구성, 및 인덱스하기 위해 데이터 구조들뿐만 아니라, 클라이언트들에 서브하기 위한 웹 페이지들 및/또는 모바일 앱 문서들을 저장할 수 있는 지속 스토리지이다. 웹 페이지 스토어(230)는 주 메모리, 자기 또는 광학 스토리지 기반 디스크들, 테이프들 또는 하드 드라이브들, NAS, SAN 등과 같은, 하나 이상의 저장 디바이스들에 의해 호스트될 수 있다. 일부 구현들에서, 웹 페이지 스토어(230)는 네트워크-부착 파일 서버일 수 있는 반면, 다른 실시예들에서 웹 페이지 스토어(230)는 서버 머신(215) 또는 네트워크(204)를 통해 서버 머신(215)에 결합된 하나 이상의 상이한 머신에 의해 호스트될 수 있는, 객체-지향 데이터베이스, 상관적인 데이터베이스 등과 같은 일부 다른 유형의 지속 스토리지일 수 있다. 웹 페이지 스토어(230) 내에 저장된 웹 페이지들 및/또는 모바일 앱 문서들은 사용자들에 의해 발생되고 클라이언트 머신들에 의해 업로드되고, 언론사들 등에 의해 제공된 매립된 콘텐츠(예를 들어, 미디어 스토어(220) 내에 저장된 미디어 아이템들, 인터넷 상 어딘가에 저장된 미디어 아이템들 등)를 가질 수 있다.
일부 구현들에 따르면, 트랜스코딩 관리기(250)는 미디어 스토어(220) 내에 업로드된 미디어 아이템들을 저장하고, 미디어 스토어(220) 내의 미디어 아이템들을 인덱스하고, 도 3 내지 도 5와 관련하여 아래에 설명되는 것과 같이 미디어 아이템들을 트랜스코드하고, 영상, 비디오 및 오디오 처리(예를 들어, 필터링, 앤티-얼라이러싱, 라인 검출, 장면 변화 검출, 특징 추출 등)를 수행할 수 있다. 트랜스코딩 관리기(250)의 구현은 도 3과 관련하여 아래에 상세히 설명된다.
트랜스코드 서버들(260-1 내지 260-N) 각각은 메모리 및 하나 이상의 프로세서를 포함하는 머신이고 네트워크(204)를 통해 서버 머신(215)로부터 하나 이상의 청크를 수신하고, 청크들을 하나의 이상의 인코딩으로 트랜스코드하고, 트랜스코드된 청크들을 네트워크(204)를 통해 서버 머신에 다시 송신할 수 있다. 일부 대안적 구현들에서, 트랜스코드 서버들(260-1 내지 260-N)은 네트워크(204) 이외의 네트워크(예를 들어, 근거리 네트워크, 개인 소유 대도시 지역 네트워크 또는 광역 네트워크 등)를 통해 서버 머신(215)에 접속될 수 있다는 점에 주목하여야 한다. 또 다른 구현들은 트랜스코드 서버들(260-1 내지 260-N) 대신에 동시 멀티-프로세서 머신을 이용할 수 있고, 일부 이러한 구현들은 서버 머신(215)의 기능들의 일부 또는 모두를 수행하기 위해 동시 멀티-프로세서 머신을 사용할 수 있다는 점에 더 주목하여야 한다.
도 3은 트랜스코딩 관리기의 한 구현의 블록도이다. 트랜스코딩 관리기(300)는 도 2의 트랜스코딩 관리기(250)와 동일할 수 있고 디먹서/먹서(302), 장면 변화 식별 엔진(304), 청크 경계 결정 엔진(306), 스플리터/어셈블러(308), 제어기(309), 및 데이터 스토어(310)를 포함할 수 있다. 소자들은 특정한 구현에 따라, 함께 조합될 수 있거나 추가 소자들에서 분리될 수 있다. 일부 구현들에서, 트랜스코딩 관리기(300)의 다양한 소자들은 별도의 머신들 상에서 실행할 수 있다는 점에 주목하여야 한다.
데이터 스토어(310)는 미디어 스토어(220), 또는 웹 페이지 스토어(230), 또는 둘 다와 동일할 수 있거나, (예를 들어, 미디어 스토어(220) 내에 저장될, 웹 페이지들 내에 매립될, 처리될 것 등의) 하나 이상의 미디어 아이템, 미디어 아이템들의 하나 이상의 청크, 미디어 스토어(220) 내의 미디어 아이템들을 인덱싱하기 위한 하나 이상의 데이터 구조, (예를 들어, 웹 페이지 스토어(230) 내에 저장될, 클라이언트들에 서브될 것 등의) 하나 이상의 웹 페이지, 웹 페이지 스토어(230) 내의 웹 페이지들을 인덱싱하기 위한 하나 이상의 데이터 구조, 또는 이들 데이터의 어떤 조합을 홀딩하기 위한 상이한 데이터 스토어(예를 들어, 임시 버퍼 또는 영구적 데이터 스토어)일 수 있다. 데이터 스토어(310)는 주 메모리, 자기 또는 광학 스토리지 기반 디스크들, 테이프들 또는 하드 드라이브들 등과 같은 하나 이상의 저장 디바이스에 의해 호스트될 수 있다.
디먹서/먹서(302)는 비디오 클립의 비디오와 오디오 부분들을 분리하고, 비디오 클립 내로 비디오 데이터와 오디오 데이터를 조합할 수 있다. 디먹서/먹서(302)의 일부 동작들은 도 4와 관련하여 아래에 보다 상세히 설명된다.
장면 변화 식별 엔진(304)은 (예를 들어, 페이드 인 또는 페이드 아웃과 같은 효과들의 추출을 통해, 프레임들 간의 화소 기반 차이들을 통해, 프레임들 간의 히스토그램 기반 차이들을 통해, 특징들의 통계학적 분석을 통해, 등) 비디오 클립에서 장면 변화들을 식별할 수 있다. 장면 변화 식별 엔진(304)의 일부 동작들은 도 5와 관련하여 아래에 보다 상세히 설명된다.
청크 경계 결정 엔진(306)은 비디오 클립을 연속하는 청크들로 나눌 비디오 클립의 프레임들을 결정할 수 있다. 한 양태에서, 청크 경계 결정 엔진(306)은 비디오 클립의 영상 콘텐츠, 최소 청크 크기, 및 최대 청크 크기에 기초하여 청크 경계 프레임들을 결정한다. 한 구현에서, 청크 경계 프레임들의 결정은 비디오 클립에서의 장면 변화들, 및 최소 및 최대 청크 크기들 외에 디폴트 청크 크기에 기초한다. 청크 경계 결정 엔진(306)의 일부 동작들은 도 4 및 도 5와 관련하여 아래에 보다 상세히 설명된다.
스플리터/어셈블러(308)는 청크 경계 프레임들의 세트에 따라 비디오 클립을 연속하는 청크들로 스플릿하고, 청크들을 비디오 클립 내로 조합할 수 있다. 제어기(309)는 청크들을 트랜스코드하기 위한 각자의 트랜스코드 서버들(260)에 제공하고 트랜스코드 서버들(260)로부터 트랜스코드된 청크들을 수신할 수 있다. 일부 구현들에서, 제어기(309)는 청크들을 특정한 트랜스코드 서버들에 할당하는 로직(예를 들어, 로드 밸런싱 로직 등)을 포함할 수 있다. 스플리터/어셈블러(308) 및 제어기(309)의 일부 동작들은 도 4 및 도 5와 관련하여 아래에 보다 상세히 설명된다.
도 4는 비디오 클립을 분산된 트랜스코딩을 위해 청크들로 나누는 방법의 양태들의 흐름도를 도시한다. 도 4는 비디오 클립들의 분산된 트랜스코딩을 위한 방법의 양태들의 흐름도를 도시한다. 방법은 하드웨어(회로, 전용 로직 등), 소프트웨어(범용 컴퓨터 시스템 또는 전용 머신 상에서 실행하는 것과 같은 것), 또는 둘 다의 조합을 포함할 수 있는 처리 로직에 의해 수행된다. 한 구현에서, 방법은 도 2의 서버 머신(215)에 의해 수행되는 반면, 일부 다른 구현들에서, 도 4의 하나 이상의 블록이 또 하나의 머신에 의해 수행될 수 있다.
설명의 간소화를 위해, 방법들이 일련의 동작들로서 도시되고 설명된다. 그러나, 본 개시내용에 따른 동작들은 다양한 순서들로 및/또는 동시에, 그리고 여기에 제시되지 않고 설명되지 않은 다른 동작들로 발생할 수 있다. 게다가, 모든 예시된 동작들이 개시된 주제에 따라 방법들을 구현하는 데 요구되지 않을 수 있다. 또한, 본 기술 분야의 통상의 기술자는 방법들이 상태도 또는 이벤트들을 통해 일련의 상호 관련된 상태들로서 대안적으로 나타내질 수 있다는 것을 이해하고 알 것이다. 부가적으로, 본 명세서에 개시된 방법들은 이러한 방법들을 컴퓨팅 디바이스들에 이송 및 전달하는 것을 용이하게 하기 위해 제조 물품 상에 저장될 수 있다는 것을 알아야 한다. 여기에 사용된 바와 같이, 제조 물품이라는 용어는 임의의 컴퓨터 판독가능 디바이스 또는 저장 매체로부터 액세스할 수 있는 컴퓨터 프로그램을 포함하는 것으로 의도된다.
블록 401에서, 사용자에 의해 업로드된 비디오 클립이 수신되고, 블록 402에서, 비디오 클립은 미디어 스토어(220) 내에 저장된다. 한 양태에 따르면, 블록들 401 및 402는 콘텐츠 서버(240)에 의해 수행된다.
블록 403에서, 비디오 클립의 비디오와 오디오 부분들이 분리된다. 한 양태에 따르면, 블록 403은 트랜스코딩 관리기(250)의 디먹서/먹서(302)에 의해 수행된다.
일부 구현들에서, 비디오 클립의 비디오 부분은 하나 이상의 목표 인코딩이 아래의 블록들 406 내지 408에서 획득될 수 있는 중간 "유니버설" 포맷으로 디코드될 수 있다. 일부 이러한 구현들에서 유니버설 포맷은 압축되지 않을 수 있는 반면, 일부 다른 구현들에서 유니버설 포맷은 압축될 수 있다. 일부 양태들에서 유니버설 포맷으로의 디코딩은 블록 403의 일부로서 수행될 수 있는 반면, 일부 다른 양태들에서 디코딩은 대신에 도 4의 방법의 어떤 다른 점에서(예를 들어, 블록들 404 내지 410 중 하나 등과 같은 또 하나의 블록의 부분으로서, 도 4에 도시되지 않은 별도의 블록에서), 또는 트랜스코드 서버들(260)에 의해 수행되고 아래에 설명되는, 도 5의 방법에서의 어떤 점에서 발생할 수 있다는 점에 주목하여야 한다.
블록 404에서, 비디오 부분을 청크들로 나누는 청크 경계 프레임들은 비디오 클립의 영상 콘텐츠, 최소 청크 크기, 및 최대 청크 크기에 기초하여 결정된다. 블록 404를 수행하는 방법의 구현은 도 5와 관련하여 아래에 상세히 설명된다.
블록 405에서, 비디오 클립은 블록 404에서 결정된 청크 경계 프레임들에 따라 연속하는 청크들로 스플릿된다. 한 양태에 따르면, 블록 405는 트랜스코딩 관리기(250)의 스플리터/어셈블러(308)에 의해 수행된다. 비디오 클립이 중간 "유니버설" 포맷으로 디코드되었을 때, 청크들은 유니버설-포맷 비디오를 유니버설-포맷 청크들로 스플릿함으로써 획득될 수 있다는 점에 주목하여야 한다.
블록 406에서, 청크들은 트랜스코드하기 위한 트랜스코드 서버들(260)에 제공된다(예를 들어, 제1 청크는 트랜스코드 서버(260-1)에 제공되고, 제2 청크는 트랜스코드 서버(260-2)에 제공되는 등). 한 양태에 따르면, 블록 406은 트랜스코딩 관리기(250)의 제어기(309)에 의해 수행된다. 일부 구현들에서, 제어기(309)는 청크들을 지능적 방식으로 특정한 트랜스코드 서버들에 할당하는 로직(예를 들어, 로드 밸런싱 로직 등)을 포함할 수 있다.
블록 407에서, 트랜스코드된 청크들은 트랜스코드 서버들(260)로부터 수신된다. 한 양태에 따르면, 블록 407은 제어기(309)에 의해 수행된다. 일부 구현들에 따르면, 청크들은 트랜스코드 서버들(260)에 의해 병렬로 트랜스코드되고, 각각의 트랜스코드 서버는 트랜스코딩의 완료 시에 그것의 트랜스코드된 청크(들)를 제어기(309)에 제공한다. 일부 구현들에서, 트랜스코드 서버들(260)은 각각의 청크를, 직접적으로 또는 중간 유니버설 포맷을 통해 복수의 상이한 인코딩들(예를 들어, H.264/MPEG-4, MPEG-2 등)로 트랜스코드하고, 복수의 트랜스코드된 청크들을 제어기(309)에 제공할 수 있다는 점에 주목하여야 한다. 일부 대안적 구현들에서, 트랜스코드 서버들(260)은 위에 설명된 바와 같이, 전체적인 비디오 클립이 청크들로 스플릿되기 전에 유니버설 포맷으로 디코드되기 보다는 청크들을 유니버설 포맷으로 디코드하는 것을 또한 담당할 수 있다는 점에 더 주목하여야 한다.
블록 408에서, 하나 이상의 트랜스코드된 비디오가 트랜스코드된 청크들로부터 발생된다. 보다 특정적으로, 청크들이 단일 인코딩으로 트랜스코드될 때, 단일 트랜스코드된 비디오가 트랜스코드된 청크들로부터 발생될 수 있고; 청크들이 복수의 인코딩들(예를 들어, 유니버설 포맷, MPEG-2, H.264/MPEG-4 등)로 트랜스코드될 때, 제1 트랜스코드된 비디오가 제1 인코딩으로 트랜스코드된 청크들을 어셀블함으로써 발생될 수 있고, 제2 트랜스코드된 비디오가 제2 인코딩으로 트랜스코드된 청크들을 어셈블함으로써 발생될 수 있는 등등이다. 한 양태에 따르면, 블록 408은 제어기(309)에 의해 수행된다.
블록 409에서, 각자의 비디오 클립이 블록 408에서 발생된 각각의 트랜스코드된 비디오로부터 그리고 블록 403에서 획득된 오디오로부터 발생된다. 바꾸어 말하면, 단일 인코딩의 경우에, 단일 트랜스코드된 비디오 클립이 오디오 및 블록 408에서 발생된 트랜스코드된 비디오로부터 발생되는 반면, 복수의 인코딩의 경우에, 제1 트랜스코드된 비디오 클립은 오디오 및 블록 408에서 발생된 제1 트랜스코드된 비디오로부터 발생되고 제2 트랜스코드된 비디오 클립은 오디오 및 블록 408에서 발생된 제2 트랜스코드된 비디오로부터 발생되는 등등이다. 한 양태에 따르면, 블록 409는 트랜스코딩 관리기(250)의 디먹서/먹서(302)에 의해 수행된다.
블록 410에서, 블록 409에서 발생된 하나 이상의 트랜스코드된 비디오 클립은 미디어 스토어(220) 내에 저장된다. 비디오 클립이 유니버설 포맷으로 디코드되었을 때, 비디오 클립의 이 버전은 또한 미디어 스토어(220) 내에 저장될 수 있다는 점에 주목하여야 한다. 일부 구현들에서, 유니버설-포맷 비디오 클립은 블록 410에서 미디어 스토어(220) 내에 저장될 수 있는 반면, 일부 다른 구현들에서 유니버설-포맷 비디오 클립은 방법의 앞선 점에서(예를 들어, 상기 블록 403에서의 유니버설 포맷으로 디코드하는 것 바로 다음에 등) 미디어 스토어(220) 내에 저장될 수 있다. 한 양태에 따르면, 블록 410은 제어기(309)에 의해 수행된다.
도 4의 흐름도에서 트랜스코드될 비디오 클립들은 사용자들에 의해 업로드되는 반면, 일부 다른 구현들에서 트랜스코드될 비디오 클립들은 일부 다른 방식으로 획득될 수 있거나, 미디어 스토어(220)(예를 들어, 미디어 회사에 의해 제공된 비디오 라이브러리 등) 내에 이미 저장되어 있을 수 있다는 점에 주목하여야 한다. 도 4의 흐름도에서 각각의 업로드된 비디오 클립은 그것이 서버 머신(215)에 의해 수신될 때 트랜스코드되는 반면, 일부 다른 구현들에서 업로드된 비디오 클립들의 트랜스코딩은 대신에 나중 시간에 발생할 수 있다(예를 들어, 일괄 작업은 밤마다 실행하는 등)는 점에 더 주목하여야 한다.
도 5는 비디오를 청크들로 나눌 경계 프레임들을 결정하는 방법의 양태들의 흐름도를 도시한다. 방법은 하드웨어(회로, 전용 로직 등), 소프트웨어(범용 컴퓨터 시스템 또는 전용 머신 상에서 실행하는 것과 같은 것), 또는 둘 다의 조합을 포함할 수 있는 처리 로직에 의해 수행된다. 한 구현에서, 방법은 도 2의 서버 머신(215)에 의해 수행되는 반면, 일부 다른 구현들에서, 도 5의 하나 이상의 블록이 또 하나의 머신에 의해 수행될 수 있다. 한 양태에 따르면, 블록 501은 제어기(309)에 의해 수행된다.
블록 501에서, 비디오에서 하나 이상의 장면 변화가 식별된다. 일부 구현들에서, 장면 변화 식별은 페이드 인 또는 페이드 아웃과 같은 효과들의 추출을 포함할 수 있는 반면, 일부 다른 구현들에서 장면 변화 식별은 연속하는 프레임들 간의 화소 값들의 차이를 계산하고 차이들의 함수(예를 들어, 모든 화소들에 걸치는 차이들의 합 등)를 임계값과 비교하는 것을 포함할 수 있는 반면, 일부 다른 구현들에서 장면 변화 식별은 프레임들 내에 화소 값들의 히스토그램들을 구성하고, 연속하는 프레임들에 대한 히스토그램들 간의 차이들을 계산하고, 차이들의 함수(예를 들어, 대응하는 히스토그램 빈들 간의 차이들의 합 등)를 임계값과 비교하는 것을 포함할 수 있는 반면, 또 다른 구현들에서 장면 변화 식별은 프레임들로부터 추출한 특징들의 통계학적 분석을 포함할 수 있는 반면, 또 다른 구현들에서 장면 변화들은 일부 다른 방식으로 식별될 수 있다. 한 양태에 따르면, 블록 501은 트랜스코딩 관리기(250)의 장면 변화 식별 엔진(304)에 의해 수행된다.
블록 502에서, 변수 S는 비어 있는 세트로 초기화되고, 불록 503에서, 변수 chunkStart는 제로로 초기화된다. 블록 504에서, 변수 chunkEnd의 값은 chunkStart와 디폴트 청크 크기, defaultChunkSize의 합으로 설정된다. 일부 구현들에서, 디폴트 청크 크기는 최소 청크 크기와 최대 청크 크기 사이일 수 있고, 최소 청크 크기와 최대 청크 크기를 포함한다(즉, 최소 청크 크기 이상이고 최대 청크 크기 이하이다).
블록 505에서, 변수 p는 chunkEnd를 선행하는 제1 장면 변화의 프레임의 인덱스로 설정되고, 변수 q는 chunkEnd 이후의 제1 장면 변화의 프레임의 인덱스로 설정된다. 블록 506은 (q-chunkStart)를 최대 청크 크기, maxChunkSize와 비교하고; (q-chunkStart)가 maxChunkSize 이하이면, 실행은 블록 507로 진행하고, 그렇지 않으면 실행은 블록 508로 이어진다.
블록 507에서, 변수 chunkEnd의 값은 변수 q의 값으로 설정된다. 블록 507이 수행된 후에, 실행은 블록 510으로 이어진다.
블록 508은 (p-chunkStart)를 최소 청크 크기, minChunksize와 비교하고; (p-chunkStart)가 minChunksize 이상이면, 실행은 블록 509로 진행하고, 그렇지 않으면 실행은 블록 510으로 이어진다.
블록 509에서, 변수 chunkEnd의 값은 변수 p의 값으로 설정된다. 블록 510에서, 청크 경계 프레임에 대응하는 chunkEnd의 값은 세트 S에 가산된다.
블록 511은 변수 chunkEnd가 비디오의 최종 프레임의 인덱스와 동일한지 여부에 기초하여 브랜치하고; 동일하지 않으면, 실행은 블록 512로 이어지고, 그 반대이면 실행은 블록 513으로 진행한다. 블록 512에서, 변수 chunkStart의 값은 chunkEnd + 1로 설정되고, 블록 512가 수행된 후에, 실행은 블록 504로 다시 이어진다. 블록 513에서, 청크 경계 프레임들의 인덱스들을 포함하는 세트 S가 복귀된다.
도 5의 구현에서 청크 경계 프레임들이 청크의 최종 프레임으로서 정의되는 반면, 일부 다른 구현들에서 청크 경계 프레임들은 도 5의 방법에 대해 이루어진 적절한 변화들로, 청크의 제1 프레임으로서 대신에 정의될 수 있다는 점에 주목하여야 한다. 더구나, 일부 다른 구현들에서 청크 경계 프레임들의 결정은 최소 및 최대 청크 크기들에 기초할 수 있지만, 최소 및 최대 크기들 외에 디폴트 청크 크기에 기초하지 않을 수 있다.
일부 다른 구현들에서, 도 5의 구현은 장면이 최대 청크 크기를 초과할 때의 경우들을 취급하도록 수정될 수 있다는 점에 더 주목하여야 한다. 일부 이러한 구현들에서, 청크 경계들에서의 장면의 스플리팅은 영상 콘텐츠에 기초할 수 있고; 예를 들어, 청크 경계는 장면의 개개의 프레임들의 휘도의 측정치에 기초하여(예를 들어, 휘도의 측정치가 최소 변화율을 갖는 프레임에서 장면을 스플릿하는 것 등), 또는 장면의 프레임들에 걸치는 움직임의 측정치에 기초하여(예를 들어, 움직임의 측정치가 최소 변화율을 갖는 프레임에서 장면을 스플릿하는 것 등), 또는 둘 다에 기초하여 결정될 수 있는 반면, 또 다른 실시예들에서 최대 크기를 초과하는 장면의 청크 경계는 장면에서의 프레임들의 화소 값들로부터 획득된 일부 다른 정보에 기초하여 결정될 수 있다.
도 4 및 도 5의 구현들이 비디오 클립들을 트랜스코드하는 맥락에서 개시되는 반면, 이들 구현에서 이용된 기술들은 다른 유형들의 미디어 아이템들(예를 들어, 오디오 클립들, 영상들 등)을 트랜스코드하는 데 용이하게 적응될 수 있다는 점에 더 주목하여야 한다. 예를 들어, 오디오 클립에서의 프레임들의 아날로그는 펄스 코드 변조된(PCM) 사운드 샘플들일 수 있고, 비디오에서의 장면 변화의 아날로그는 오디오 클립에서의 조용한 시간 간격일 수 있다.
도 6은 머신으로 하여금 여기에 논의된 방법들 중 어느 하나 이상을 수행하게 하는 명령어들의 세트가 실행될 수 있는 예시적인 컴퓨터 시스템을 도시한다. 대안적 구현들에서, 머신은 LAN, 인트라넷, 엑스트라넷, 또는 인터넷에서의 다른 머신들에 접속될(예를 들어, 네트워크될) 수 있다. 머신은 클라이언트-서버 네트워크 환경에서 서버 머신의 능력에서 동작할 수 있다. 머신은 퍼스널 컴퓨터(PC), 셋톱 박스(STB), 서버, 네트워크 라우터, 스위치 또는 브리지, 또는 그 머신에 의해 취해질 조치들을 특정하는 명령어들(순차적 또는 그 외)의 세트를 실행할 수 있는 임의의 머신일 수 있다. 또한, 단일 머신 만이 예시되지만, 용어 "머신"은 또한 여기에 논의된 방법들 중 어느 하나 이상을 수행하기 위해 명령어들의 세트(또는 다중 세트들)을 개별적으로 또는 함께 실행하는 머신들의 어떤 집합을 포함하도록 취해질 것이다.
예시적인 컴퓨터 시스템(600)은 버스(608)를 통해 서로 통신하는, 처리 시스템(프로세서)(602), 주 메모리(604)(예를 들어, 리드 온리 메모리(ROM), 플래시 메모리, 동기 DRAM(SDRAM)과 같은 다이내믹 랜덤 액세스 메모리(DRAM)), 스태틱 메모리(606)(예를 들어, 플래시 메모리, 스태틱 랜덤 액세스 메모리(SRAM)), 및 데이터 저장 디바이스(616)를 포함한다.
프로세서(602)는 마이크로프로세서, 중앙 처리 장치 등과 같은 하나 이상의 범용 처리 디바이스를 대표한다. 보다 특정적으로, 프로세서(602)는 복합 명령어 세트 컴퓨팅(CISC) 마이크로프로세서, 축약형 명령어 세트 컴퓨팅(RISC) 마이크로프로세서, 매우 긴 명령어 워드(VLIW) 마이크로프로세서, 또는 다른 명령어 세트들을 구현하는 프로세서 또는 명령어 세트들의 조합을 구현하는 프로세서들일 수 있다. 프로세서(602)는 또한 주문형 집적 회로(ASIC), 필드 프로그래머블 게이트 어레이(FPGA), 디지털 신호 프로세서(DSP), 네트워크 프로세서 등과 같은 하나 이상의 특수 목적 처리 디바이스일 수 있다. 프로세서(602)는 여기에 논의된 동작들 및 단계들을 수행하는 명령어들(626)을 실행하도록 구성된다.
컴퓨터 시스템(600)은 네트워크 인터페이스 디바이스(622)를 더 포함할 수 있다. 컴퓨터 시스템(600)은 또한 비디오 디스플레이 유닛(610)(예를 들어, 액정 디스플레이(LCD) 또는 음극선관(CRT)), 영숫자 입력 디바이스(612)(예를 들어, 키보드), 커서 제어 디바이스(614)(예를 들어, 마우스), 및 신호 발생 디바이스(620)(예를 들어, 스피커)를 포함할 수 있다.
데이터 저장 디바이스(616)는 여기에 설명된 방법들 또는 기능들 중 어느 하나 이상을 실시하는 명령어들(626)의 하나 이상의 세트(예를 들어, 트랜스코딩 관리기(225)에 의해 실행되는 명령어들 등)가 저장된 컴퓨터 판독가능 매체(624)를 포함할 수 있다. 명령어들(626)은 또한 주 메모리(604) 내에 및/또는 컴퓨터 판독가능 매체를 또한 구성하는 컴퓨터 시스템(600), 주 메모리(604) 및 프로세서(602)에 의한 그것의 실행 중에 프로세서(602) 내에 완전히 또는 적어도 부분적으로 상주할 수 있다. 명령어들(626)은 또한 네트워크 인터페이스 디바이스(622)를 통해 네트워크를 거쳐 송신 또는 수신될 수 있다.
컴퓨터 판독가능 저장 매체(624)가 예시적인 실시예에서 단일 매체로 도시되지만, 용어 "컴퓨터 판독가능 저장 매체"는 명령어들의 하나 이상의 세트를 저장하는 단일 매체 또는 다중 매체(예를 들어, 집중화된 또는 분산된 데이터베이스, 및/또는 관련된 캐시들 및 서버들)을 포함하도록 취해져야 한다. 용어 "컴퓨터 판독가능 저장 매체"는 또한 머신에 의해 실행하기 위한 명령어들의 세트를 저장, 인코딩 또는 전달할 수 있고 머신으로 하여금 본 개시내용의 방법들 중 어느 하나 이상을 수행하게 하는 임의의 매체를 포함하도록 취해질 것이다. 용어 "컴퓨터 판독가능 저장 매체"는 그에 따라 고상 메모리들, 광학 매체, 및 자기 매체를 포함하지만, 이들로 제한되지 않도록 취해질 것이다.
상기 설명에서, 많은 상세들이 기술된다. 그러나, 본 개시내용의 이득을 갖는 본 기술 분야의 통상의 기술자에게, 실시예들은 이들 특정한 상세 없이도 실시될 수 있다는 것이 명백할 것이다. 일부 예들에서, 널리 공지된 구조들 및 디바이스들은 설명을 불명하게 하는 것을 피하기 위해, 상세하게 보다는 블록도 형태로 도시된다.
상세한 설명의 일부 부분들은 컴퓨터 메모리 내의 데이터 비트들에 대한 알고리즘들 및 동작들의 상징적 표현들로 제시된다. 이들 알고리즘적 설명들 및 표현들은 본 기술 분야의 다른 통상의 기술자에게 그들의 연구의 핵심을 가장 효과적으로 전달하기 위해 데이터 처리 분야들의 통상의 기술자에 의해 사용된 수단이다. 알고리즘은 여기서, 그리고 일반적으로, 원하는 결과에 이르는 단계들의 일관성있는 순차로 이해된다. 단계들은 물리적 양들의 물리적 조작들을 요구하는 것들이다. 일반적으로, 반드시 그런 것은 아니지만, 이들 양은 저장, 전달, 조합, 비교, 및 그렇지 않으면 조작될 수 있는 전기적 및 자기적 신호들의 형태를 취한다. 비트들, 값들, 요소들, 심볼들, 특징들, 용어들, 수들 등과 같은 이들 신호를 참조하기 위해, 때로는, 주로 공통 사용의 이유들로 편리한 것으로 입증되었다.
그러나, 이들 및 유사한 용어들의 모두는 적절한 물리적 양들과 관련되고 단지 이들 양에 적용된 편리한 라벨들이라는 것을 유념하여야 한다. 상기 논의로부터 명백한 것과 같이 달리 구체적으로 표명하지 않는다면, 설명 전체에 걸쳐, "결정", "제공", "발생" 등과 같은 용어들을 이용하는 논의들은 컴퓨터 시스템의 레지스터들 및 메모리들 내의 물리적(예를 들어, 전자적) 양들로서 표현된 데이터를 조작하여 컴퓨터 시스템 메모리들 또는 레지스터들 또는 다른 그러한 정보 저장, 송신 또는 디스플레이 디바이스들 내의 물리적 양들로서 유사하게 표현된 다른 데이터로 변환하는 컴퓨터 시스템, 또는 유사한 전자 컴퓨팅 디바이스의 동작들 및 프로세스들을 참조한다는 것을 알 것이다.
본 개시내용의 양태들 및 구현들은 또한 여기의 동작들을 수행하는 장치에 관한 것이다. 이 장치는 요구된 목적들을 위해 특별히 구성될 수 있거나, 컴퓨터 내에 저장된 컴퓨터 프로그램에 의해 선택적으로 작동 또는 재구성되는 범용 컴퓨터를 포함할 수 있다. 이러한 컴퓨터 프로그램은 플로피 디스크들, 광학 디스크들, CD-ROM들, 및 자기-광학 디스크들을 포함하는 임의 유형의 디스크, 리드 온리 메모리들(ROM들), 랜덤 액세스 메모리들(RAM들), EPROM들, EEPROM들, 자기 또는 광학 카드들, 또는 전자 명령어들을 저장하기에 적합한 임의 유형의 매체와 같지만, 이들로 제한되지 않는 컴퓨터 판독가능 저장 매체 내에 저장될 수 있다.
여기에 제시된 알고리즘들 및 디스플레이들은 어떤 특정한 컴퓨터 또는 다른 장치에 본질적으로 관련되지 않는다. 다양한 범용 시스템들이 여기의 교시들에 따라 프로그램으로 사용될 수 있거나, 요구된 방법 단계들을 수행하기 위해 보다 전문화된 장치를 구성하는 것이 편리한 것으로 입증될 수 있다. 다양한 이들 시스템을 위한 요구된 구조는 아래의 설명으로부터 분명할 것이다. 또한, 본 개시내용은 어떤 특정한 프로그래밍 언어를 참조하여 설명되지 않는다. 다양한 프로그래밍 언어들이 여기에 설명된 개시내용의 교시들을 구현하기 위해 사용될 수 있다는 것을 알 것이다.
상기 설명은 예시적이고, 제한적인 것이 아닌 것으로 의도된 것이라는 것을 이해하여야 한다. 많은 다른 실시예들이 상기 설명을 읽고 이해한다면 본 기술 분야의 통상의 기술자에게 분명할 것이다. 더구나, 위에 설명된 기술들은 미디어 클립들(예를 들어, 영상들, 오디오 클립들, 텍스트 문서들, 웹 페이지들 등) 대신에 또는 그에 부가하여 다른 유형들의 데이터에 적용될 수 있다. 그러므로, 본 개시내용의 범위는 첨부된 청구범위를 참조하여, 이러한 청구범위가 될만한 균등물들의 완전한 범위를 따라 결정되어야 한다.

Claims (21)

  1. 비디오 클립(video clip)을 트랜스코드(transcode)하는 방법으로서,
    컴퓨터 시스템에 의해, 상기 비디오 클립을 N+1개의 연속하는 청크들로 나눌 상기 비디오 클립의 N개의 프레임들을 결정하는 단계 - N은 양의 정수이고, 상기 결정은 상기 비디오 클립의 영상 콘텐츠, 최소 청크 크기, 및 최대 청크 크기에 기초함 -;
    상기 N+1개의 청크들 각각을 트랜스코드하기 위한 각자의 프로세서에 제공하는 단계; 및
    상기 트랜스코드된 N+1개의 청크들로부터 트랜스코드된 비디오 클립을 발생하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서, 상기 N개의 프레임들의 상기 결정은 상기 최소 청크 크기 이상이고 상기 최대 청크 크기 이하인 디폴트 청크 크기에 더 기초하는 방법.
  3. 제1항에 있어서, 상기 N개의 프레임들 중 적어도 하나는 상기 비디오 클립에서의 장면 변화(scene change)에 기초하여 결정되는 방법.
  4. 제3항에 있어서, 상기 비디오 클립에서 하나 이상의 장면 변화를 식별하는 단계를 더 포함하는 방법.
  5. 제1항에 있어서, 상기 각자의 프로세서들 각각은 각자의 컴퓨터 시스템과 관련되는 방법.
  6. 제1항에 있어서, 상기 비디오 클립은 상기 최대 청크 크기를 초과하는 장면을 포함하고, 상기 장면 내의 프레임이 상기 장면의 적어도 2개의 프레임에 대한 휘도의 측정치에 기초하여 결정되는 방법.
  7. 제6항에 있어서, 상기 프레임은 상기 휘도의 측정치가 최소 변화율(minimum rate of change)을 갖는 상기 장면 내의 점에서 발생하는 방법.
  8. 비디오 클립을 저장하는 메모리; 및
    상기 비디오 클립을 N+1개의 연속하는 청크들로 나눌 상기 비디오 클립의 N개의 프레임들을 결정하고 - N은 양의 정수이고, 상기 결정은 상기 비디오 클립의 영상 콘텐츠, 최소 청크 크기, 및 최대 청크 크기에 기초함 -,
    상기 N+1개의 청크들 각각을 제1 인코딩으로 및 제2 인코딩으로 트랜스코드하기 위한 각자의 프로세서에 제공하고,
    상기 제1 인코딩으로 트랜스코드된 상기 N+1개의 청크들로부터 제1 비디오 클립을 발생하고,
    상기 제2 인코딩으로 트랜스코드된 상기 N+1개의 청크들로부터 제2 비디오 클립을 발생하는
    프로세서
    를 포함하는 장치.
  9. 제8항에 있어서, 상기 N+1개의 청크들은 상기 각자의 프로세서들에 의해 병렬로 트랜스코드되는 장치.
  10. 제8항에 있어서, 상기 N개의 프레임들 중 적어도 하나는 상기 비디오 클립에서의 장면 변화에 기초하여 결정되는 장치.
  11. 제10항에 있어서, 상기 프로세서는 또한 상기 비디오 클립에서 하나 이상의 장면 변화를 식별하는 장치.
  12. 제8항에 있어서, 상기 N개의 프레임들의 상기 결정은 상기 최소 청크 크기 이상이고 상기 최대 청크 크기 이하인 디폴트 청크 크기에 더 기초하는 장치.
  13. 제8항에 있어서, 상기 비디오 클립은 상기 최대 청크 크기를 초과하는 장면을 포함하고, 상기 장면 내의 프레임이 상기 장면의 적어도 2개의 프레임에 대한 움직임의 측정치(measure of motion)에 기초하여 결정되는 장치.
  14. 제13항에 있어서, 상기 프레임은 상기 움직임의 측정치가 최소 변화율을 갖는 상기 장면 내의 점에서 발생하는 장치.
  15. 실행될 때, 컴퓨터 시스템으로 하여금,
    상기 컴퓨터 시스템에 의해, 비디오 클립을 N+1개의 연속하는 청크들로 나눌 상기 비디오 클립의 N개의 프레임들을 결정하고 - N은 양의 정수이고, 상기 결정은 상기 비디오 클립의 영상 콘텐츠, 최소 청크 크기, 및 최대 청크 크기에 기초함 -;
    상기 N+1개의 청크들 각각을 트랜스코드하기 위한 각자의 프로세서에 제공하고;
    상기 트랜스코드된 N+1개의 청크들로부터 트랜스코드된 비디오 클립을 발생하는 것
    을 포함하는 동작들을 수행하게 하는 명령어들이 그 안에 저장되어 있는 비일시적 컴퓨터 판독가능 저장 매체.
  16. 제15항에 있어서, 상기 N개의 프레임들 중 적어도 하나는 상기 비디오 클립에서의 장면 변화에 기초하여 결정되는 비일시적 컴퓨터 판독가능 저장 매체.
  17. 제16항에 있어서, 상기 동작들은 상기 비디오 클립에서 하나 이상의 장면 변화를 식별하는 것을 더 포함하는 비일시적 컴퓨터 판독가능 저장 매체.
  18. 제15항에 있어서, 상기 비디오 클립은 상기 최대 청크 크기를 초과하는 장면을 포함하고, 상기 장면 내의 프레임이 상기 장면의 적어도 2개의 프레임에 대한 휘도의 측정치에 기초하여 결정되는 비일시적 컴퓨터 판독가능 저장 매체.
  19. 제18항에 있어서, 상기 프레임은 상기 휘도의 측정치가 최소 변화율을 갖는 상기 장면 내의 점에서 발생하는 비일시적 컴퓨터 판독가능 저장 매체.
  20. 제15항에 있어서, 상기 비디오 클립은 상기 최대 청크 크기를 초과하는 장면을 포함하고, 상기 장면 내의 프레임이 상기 장면의 적어도 2개의 프레임에 대한 움직임의 측정치에 기초하여 결정되는 비일시적 컴퓨터 판독가능 저장 매체.
  21. 제20항에 있어서, 상기 프레임은 상기 움직임의 측정치가 최소 변화율을 갖는 상기 장면 내의 점에서 발생하는 비일시적 컴퓨터 판독가능 저장 매체.
KR1020167020591A 2013-12-30 2014-12-30 분산된 트랜스코딩을 위한 콘텐츠-적응 청킹 KR20160104035A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/144,331 US20150189222A1 (en) 2013-12-30 2013-12-30 Content-adaptive chunking for distributed transcoding
US14/144,331 2013-12-30
PCT/US2014/072724 WO2015103247A1 (en) 2013-12-30 2014-12-30 Content-adaptive chunking for distributed transcoding

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020187006647A Division KR20180029100A (ko) 2013-12-30 2014-12-30 분산된 트랜스코딩을 위한 콘텐츠-적응 청킹

Publications (1)

Publication Number Publication Date
KR20160104035A true KR20160104035A (ko) 2016-09-02

Family

ID=52345597

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020167020591A KR20160104035A (ko) 2013-12-30 2014-12-30 분산된 트랜스코딩을 위한 콘텐츠-적응 청킹
KR1020187006647A KR20180029100A (ko) 2013-12-30 2014-12-30 분산된 트랜스코딩을 위한 콘텐츠-적응 청킹

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020187006647A KR20180029100A (ko) 2013-12-30 2014-12-30 분산된 트랜스코딩을 위한 콘텐츠-적응 청킹

Country Status (8)

Country Link
US (1) US20150189222A1 (ko)
EP (1) EP3090569A1 (ko)
JP (1) JP6250822B2 (ko)
KR (2) KR20160104035A (ko)
CN (1) CN105874813A (ko)
AU (1) AU2014373838B2 (ko)
CA (1) CA2935260A1 (ko)
WO (1) WO2015103247A1 (ko)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105338371B (zh) * 2015-10-29 2019-05-17 四川奇迹云科技有限公司 一种多媒体转码调度方法和装置
EP3188016A1 (en) * 2015-12-29 2017-07-05 Harmonic Inc. Scheduler of computer processes for optimized offline video processing
CN105704124A (zh) * 2016-01-15 2016-06-22 北京天马网视科技有限公司 一种基于互联网的视频价值再生系统及方法
CN109074655B (zh) * 2016-04-22 2022-07-29 松下知识产权经营株式会社 运动视频分割方法、运动视频分割装置以及运动视频处理系统
US11037302B2 (en) * 2016-04-28 2021-06-15 Panasonic Intellectual Property Management Co., Ltd. Motion video segmenting method, motion video segmenting device, and motion video processing system
US10873781B2 (en) * 2017-06-13 2020-12-22 Comcast Cable Communications, Llc Video fragment file processing
US11232076B2 (en) 2017-10-30 2022-01-25 AtomBeam Technologies, Inc System and methods for bandwidth-efficient cryptographic data transfer
US10509771B2 (en) * 2017-10-30 2019-12-17 AtomBeam Technologies Inc. System and method for data storage, transfer, synchronization, and security using recursive encoding
US11366790B2 (en) 2017-10-30 2022-06-21 AtomBeam Technologies Inc. System and method for random-access manipulation of compacted data files
US10798393B2 (en) * 2018-07-09 2020-10-06 Hulu, LLC Two pass chunk parallel transcoding process
WO2020264522A1 (en) * 2019-06-27 2020-12-30 Atombeam Technologies, Inc. Data storage, transfer, synchronization, and security using recursive encoding
US11470327B2 (en) 2020-03-30 2022-10-11 Alibaba Group Holding Limited Scene aware video content encoding
US12015794B2 (en) * 2021-11-30 2024-06-18 Comcast Cable Communications, Llc Method and apparatus for content-driven transcoder coordination
US20230266902A1 (en) * 2022-02-23 2023-08-24 Samsung Electronics Co., Ltd. Video stream encoding for computational storage device
CN115942070B (zh) * 2022-12-26 2023-09-12 北京柏睿数据技术股份有限公司 一种视频数据文件转码处理的动态优化方法及系统

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3969649B2 (ja) * 2002-11-06 2007-09-05 株式会社エヌ・ティ・ティ・データ 映像データ処理システム
US20050111835A1 (en) * 2003-11-26 2005-05-26 Friel Joseph T. Digital video recorder with background transcoder
US8879856B2 (en) * 2005-09-27 2014-11-04 Qualcomm Incorporated Content driven transcoder that orchestrates multimedia transcoding using content information
US8654848B2 (en) * 2005-10-17 2014-02-18 Qualcomm Incorporated Method and apparatus for shot detection in video streaming
WO2009141011A1 (en) * 2008-05-22 2009-11-26 Telefonaktiebolaget L M Ericsson (Publ) Content adaptive video encoder and coding method
US8270473B2 (en) * 2009-06-12 2012-09-18 Microsoft Corporation Motion based dynamic resolution multiple bit rate video encoding
CN102163201A (zh) * 2010-02-24 2011-08-24 腾讯科技(深圳)有限公司 一种多媒体文件切割方法、装置及转码器
US8705616B2 (en) * 2010-06-11 2014-04-22 Microsoft Corporation Parallel multiple bitrate video encoding to reduce latency and dependences between groups of pictures
US20130104177A1 (en) * 2011-10-19 2013-04-25 Google Inc. Distributed real-time video processing
US9432704B2 (en) * 2011-11-06 2016-08-30 Akamai Technologies Inc. Segmented parallel encoding with frame-aware, variable-size chunking
US9071842B2 (en) * 2012-04-19 2015-06-30 Vixs Systems Inc. Detection of video feature based on variance metric
WO2014145011A2 (en) * 2013-03-15 2014-09-18 General Instrument Corporation Method and apparatus for streaming video

Also Published As

Publication number Publication date
AU2014373838A1 (en) 2016-06-16
AU2014373838B2 (en) 2018-01-18
CA2935260A1 (en) 2015-07-09
EP3090569A1 (en) 2016-11-09
WO2015103247A1 (en) 2015-07-09
CN105874813A (zh) 2016-08-17
JP2017507533A (ja) 2017-03-16
JP6250822B2 (ja) 2017-12-20
US20150189222A1 (en) 2015-07-02
KR20180029100A (ko) 2018-03-19

Similar Documents

Publication Publication Date Title
JP6250822B2 (ja) 分散トランスコーディングのためのコンテンツ適応的なチャンキング
US9235313B2 (en) Efficient motion estimation for remote desktop sharing
TWI692245B (zh) 視訊解碼裝置、視訊編碼方法及裝置與電腦可讀儲存媒體
KR102316968B1 (ko) 복잡도 적응형 단일 패스 대 2-패스 트랜스코딩
US9609338B2 (en) Layered video encoding and decoding
US11153526B2 (en) Detection of photosensitive triggers in video content
US20150156557A1 (en) Display apparatus, method of displaying image thereof, and computer-readable recording medium
Haynes et al. Vss: A storage system for video analytics
US10623735B2 (en) Method and system for layer based view optimization encoding of 360-degree video
US11356739B2 (en) Video playback method, terminal apparatus, and storage medium
JP2019514111A (ja) ビデオマッチングシステムのサービス品質向上のための画像マッチングシステムの使用
US20150117515A1 (en) Layered Encoding Using Spatial and Temporal Analysis
US20120141039A1 (en) Virtualization server for presentation virtualization and image data encoding method
CN101185339B (zh) 图像解码设备和图像数据解码方法、图像编码设备及方法
US10942914B2 (en) Latency optimization for digital asset compression
US10264273B2 (en) Computed information for metadata extraction applied to transcoding
US20120023148A1 (en) Applying Transcodings In A Determined Order To Produce Output Files From A Source File
CN111669595A (zh) 一种屏幕内容编码方法、装置、设备和介质
KR102232899B1 (ko) 클라우드 스트리밍 서비스 시스템, 이미지 타입에 따른 클라우드 스트리밍 서비스 방법 및 이를 위한 장치
CN106664439B (zh) 云流服务器
US20180122340A1 (en) Electronic apparatus, image compression method thereof, and non-transitory computer readable recording medium
US20150063435A1 (en) Techniques for reference based transcoding
KR20160131827A (ko) 클라우드 스트리밍 서비스 시스템, 알파 레벨을 이용한 이미지 클라우드 스트리밍 서비스 방법 및 이를 위한 장치
US20180189143A1 (en) Simultaneous compression of multiple stored videos
US20150149578A1 (en) Storage device and method of distributed processing of multimedia data

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
A107 Divisional application of patent
J201 Request for trial against refusal decision
J301 Trial decision

Free format text: TRIAL NUMBER: 2018101001022; TRIAL DECISION FOR APPEAL AGAINST DECISION TO DECLINE REFUSAL REQUESTED 20180307

Effective date: 20191030

S901 Examination by remand of revocation
GRNO Decision to grant (after opposition)