KR20230053210A - 분산형 병렬 트랜스코딩 방법 및 장치 - Google Patents

분산형 병렬 트랜스코딩 방법 및 장치 Download PDF

Info

Publication number
KR20230053210A
KR20230053210A KR1020210136485A KR20210136485A KR20230053210A KR 20230053210 A KR20230053210 A KR 20230053210A KR 1020210136485 A KR1020210136485 A KR 1020210136485A KR 20210136485 A KR20210136485 A KR 20210136485A KR 20230053210 A KR20230053210 A KR 20230053210A
Authority
KR
South Korea
Prior art keywords
video content
transcoding
transcoded
frame
data chunk
Prior art date
Application number
KR1020210136485A
Other languages
English (en)
Inventor
박성수
김재일
문정미
박용현
황태승
Original Assignee
에스케이텔레콤 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 에스케이텔레콤 주식회사 filed Critical 에스케이텔레콤 주식회사
Priority to KR1020210136485A priority Critical patent/KR20230053210A/ko
Publication of KR20230053210A publication Critical patent/KR20230053210A/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
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; 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/173Transcoding, i.e. converting between two coded representations avoiding cascaded coding-decoding
    • 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/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/24Monitoring of processes or resources, e.g. monitoring of server load, available bandwidth, upstream requests
    • H04N21/2407Monitoring of transmitted content, e.g. distribution time, number of downloads
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/25Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
    • H04N21/262Content or additional data distribution scheduling, e.g. sending additional data at off-peak times, updating software modules, calculating the carousel transmission frequency, delaying a video stream transmission, generating play-lists
    • H04N21/26208Content or additional data distribution scheduling, e.g. sending additional data at off-peak times, updating software modules, calculating the carousel transmission frequency, delaying a video stream transmission, generating play-lists the scheduling operation being performed under constraints
    • H04N21/26233Content or additional data distribution scheduling, e.g. sending additional data at off-peak times, updating software modules, calculating the carousel transmission frequency, delaying a video stream transmission, generating play-lists the scheduling operation being performed under constraints involving content or additional data duration or size, e.g. length of a movie, size of an executable file

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • Acoustics & Sound (AREA)
  • Databases & Information Systems (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

분산형 병렬 트랜스코딩 방법 및 장치를 개시한다.
본 발명의 일 측면에 의하면, 적어도 하나의 컴퓨팅 장치에 의해 구현되며, 비디오 콘텐츠를 병렬적으로 트랜스코딩(transcoding)하기 위한 방법에 있어서, 비디오 콘텐츠를 시간에 따라 복수의 데이터 청크(chunk)로 분할하는 과정, 상기 복수의 데이터 청크를 복수의 트랜스코더에 할당함으로써, 상기 복수의 데이터 청크를 병렬적으로 트랜스코딩하는 과정, 상기 비디오 콘텐츠에 기초하여 각 트랜스코딩된 데이터 청크의 품질을 평가하는 과정, 상기 각 트랜스코딩된 데이터 청크의 품질에 따라 상기 각 트랜스코딩된 데이터 청크에 대응되는 데이터 청크를 다시 트랜스코딩하는 과정, 및 복수의 트랜스코딩된 데이터 청크를 병합함으로써, 트랜스코딩된 비디오 콘텐츠를 생성하는 과정을 포함하는 방법을 제공한다.

Description

분산형 병렬 트랜스코딩 방법 및 장치{Device and Method for Performing Distributed Parallel-Transcoding}
본 발명의 실시예들은 분산 트랜스코딩 방법 및 장치에 관한 것이다.
이 부분에 기술된 내용은 단순히 본 발명에 대한 배경 정보를 제공할 뿐 종래기술을 구성하는 것은 아니다.
최근 주문형 비디오(Video On Demand, VOD) 시스템 및 실시간 스트리밍 서비스와 같은 미디어 서비스가 확대되고 있다.
미디어 서비스를 제공하는 시스템에서 서버는 사용자의 요청에 따라 미디어 콘텐츠를 압축하고, 압축된 미디어 콘텐츠를 사용자 단말에 제공한다. 사용자 단말은 압축된 미디어 콘텐츠로부터 원본 미디어 콘텐츠를 복원한다.
일반적으로, 미디어 콘텐츠를 관리하는 서버 외에 별도의 인코딩 서버를 두어 MPEG2 또는 H.264와 같은 압축 알고리즘을 미디어 콘텐츠에 적용하고 있다. 특히, 미디어 콘텐츠 중 비디오 콘텐츠에 관한 인코딩 및 디코딩은 많은 연산 자원을 소모하므로, 종래에는 고성능을 갖춘 하나의 전용 서버에 하나의 미디어 콘텐츠를 할당하여 인코딩하였다.
하지만, 트랜스코딩을 수행하는 전용 서버와 콘텐츠를 1:1로 매핑하는 시스템에서는 고화질의 VOD 서비스나 실시간 스트리밍 서비스를 제공하는 데 한계가 있다. 즉, 종래의 시스템에서는 인코딩 및 디코딩을 수행하는 데 소요되는 시간의 증가로 원활한 서비스를 제공하지 못하는 문제점이 있다.
나아가, 다양한 환경에 있는 사용자들에게 일관된 품질의 미디어 서비스에 대한 수요가 증가하고 있다. 이러한 수요를 충족시키기 위해서는, 각 사용자의 환경을 고려하여 원본 미디어 콘텐츠를 압축할 필요가 있다. 즉, 사용자 단말의 성능, 디스플레이 정보, 네트워크 상태, 서비스 시나리오 등 다양한 환경을 고려하여 미디어 콘텐츠를 트랜스코딩(transcoding)할 필요가 있다.
여기서, 트랜스코딩은 원본 미디어 콘텐츠를 사용자의 환경에 맞도록 다른 포맷(format)으로 변환하거나, 원본 미디어 콘텐츠의 해상도, 프레임 레이트(frame rate), 비트레이트(bitrate) 등을 변경하는 것을 의미한다. 즉, 트랜스코딩은 제작자에 의해 만들어진 비디오 데이터와 오디오 데이터를 사용자가 시청할 수 있는 형태로 변환하는 과정을 의미한다.
이처럼, 트랜스코딩을 수행하는 전용 서버와 콘텐츠를 1:1로 매핑하는 시스템에서는 사용자들의 다양한 환경과 고품질의 미디어 서비스를 제공하는 데 한계가 있다.
본 발명의 실시예들은, 비디오 콘텐츠를 복수의 데이터 청크(chunk)로 분할하고 복수의 트랜스코더에 할당하여 분할된 비디오 콘텐츠를 병렬적으로 트랜스코딩하기 위한 방법 및 장치를 제공하는 데 주된 목적이 있다.
본 발명의 다른 실시예들은, 각 트랜스코더에 의해 인코딩된 데이터 청크들의 품질에 따라 인코딩 파라미터를 수정하여 다시 인코딩함으로써, 비디오 콘텐츠의 품질을 보장하기 위한 방법 및 장치를 제공하는 데 일 목적이 있다.
본 발명의 다른 실시예들은, 비디오 콘텐츠를 복수의 트랜스코더에 할당하기 전에 비디오 콘텐츠에 대한 오류를 검사하고, 트랜스코딩된 비디오 콘텐츠에 대한 무결성을 검증하기 위한 방법 및 장치를 제공하는 데 일 목적이 있다.
본 발명의 일 측면에 의하면, 적어도 하나의 컴퓨팅 장치에 의해 구현되며, 비디오 콘텐츠를 병렬적으로 트랜스코딩(transcoding)하기 위한 방법에 있어서, 비디오 콘텐츠를 시간에 따라 복수의 데이터 청크(chunk)로 분할하는 과정, 상기 복수의 데이터 청크를 복수의 트랜스코더에 할당함으로써, 상기 복수의 데이터 청크를 병렬적으로 트랜스코딩하는 과정, 상기 비디오 콘텐츠에 기초하여 각 트랜스코딩된 데이터 청크의 품질을 평가하는 과정, 상기 각 트랜스코딩된 데이터 청크의 품질에 따라 상기 각 트랜스코딩된 데이터 청크에 대응되는 데이터 청크를 다시 트랜스코딩하는 과정, 및 복수의 트랜스코딩된 데이터 청크를 병합함으로써, 트랜스코딩된 비디오 콘텐츠를 생성하는 과정을 포함하는 방법을 제공한다.
본 실시예의 다른 측면에 의하면, 명령어들을 저장하는 메모리 및 적어도 하나의 프로세서를 포함하되, 상기 적어도 하나의 프로세서는 상기 명령어들을 실행함으로써, 비디오 콘텐츠를 시간에 따라 복수의 데이터 청크(chunk)로 분할하고, 상기 복수의 데이터 청크를 복수의 트랜스코더에 할당함으로써, 상기 복수의 데이터 청크를 병렬적으로 트랜스코딩하고, 상기 비디오 콘텐츠에 기초하여 각 트랜스코딩된 데이터 청크의 품질을 평가하고, 상기 각 트랜스코딩된 데이터 청크의 품질에 따라 상기 각 트랜스코딩된 데이터 청크에 대응되는 데이터 청크를 다시 트랜스코딩하고, 복수의 트랜스코딩된 데이터 청크를 병합함으로써, 트랜스코딩된 비디오 콘텐츠를 생성하는 장치를 제공한다.
이상에서 설명한 바와 같이 본 발명의 일 실시예에 의하면, 비디오 콘텐츠를 복수의 데이터 청크로 분할하고 복수의 트랜스코더에 할당하여 분할된 비디오 콘텐츠를 병렬적으로 트랜스코딩함으로써, 트랜스코딩에 소요되는 시간을 줄일 수 있다.
본 발명의 다른 실시예에 의하면, 사용자의 비디오 재생 환경, 사용자 단말과 서버 간 네트워크 상태 등 다양한 환경을 고려하여 비디오 콘텐츠를 트랜스코딩함으로써, 사용자에게 최적의 미디어 서비스를 제공할 수 있다.
본 발명의 다른 실시예에 의하면, 각 트랜스코더에 의해 인코딩된 데이터 청크들의 품질에 따라 인코딩 파라미터를 수정하여 다시 인코딩함으로써, 비디오 콘텐츠의 품질을 보장할 수 있다.
본 발명의 다른 실시예에 의하면, 비디오 콘텐츠를 복수의 트랜스코더에 할당하기 전에 비디오 콘텐츠에 대한 오류를 검사하고, 트랜스코딩된 비디오 콘텐츠에 대한 무결성을 검증할 수 있다
도 1은 본 발명의 일 실시예에 따른 트랜스코딩 과정을 나타낸 도면이다.
도 2는 본 발명의 일 실시예에 따른 트랜스코딩 시스템의 구성을 나타낸 도면이다.
도 3은 본 발명의 일 실시예에 따른 분산형 병렬 트랜스코딩 시스템을 나타낸 구성도다.
도 4는 본 발명의 일 실시예에 따른 병렬 트랜스코딩 과정을 도시한 순서도다.
도 5는 본 발명의 일 실시예에 따른 분석부의 동작 과정을 나타낸 순서도다.
도 6은 본 발명의 일 실시예에 따른 트랜스코딩부의 동작 과정을 나타낸 순서도다.
도 7은 본 발명의 일 실시예에 따른 병합부의 동작 과정을 나타낸 순서도다.
도 8은 본 발명의 일 실시예에 따른 제어부의 동작 과정을 나타낸 순서도다.
도 9는 비디오 콘텐츠의 프레임 단위 구성을 나타낸 도면이다.
도 10은 비디오 콘텐츠의 프레임 그룹의 구성을 나타낸 도면이다.
도 11a 및 도 11b는 프레임들의 트랜스코딩 구간을 나타낸 도면이다.
도 12는 본 발명의 일 실시예에 따른 프레임들의 트랜스코딩 구간을 나타낸 도면이다.
도 13은 본 발명의 일 실시예에 따른 병렬 트랜스코딩 과정을 나타낸 순서도다.
이하, 본 발명의 일부 실시예들을 예시적인 도면을 통해 상세하게 설명한다. 각 도면의 구성요소들에 참조부호를 부가함에 있어서, 동일한 구성요소들에 대해서는 비록 다른 도면 상에 표시되더라도 가능한 한 동일한 부호를 가지도록 하고 있음에 유의해야 한다. 또한, 본 발명을 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략한다.
또한, 본 발명의 구성 요소를 설명하는 데 있어서, 제 1, 제 2, A, B, (a), (b) 등의 용어를 사용할 수 있다. 이러한 용어는 그 구성 요소를 다른 구성 요소와 구별하기 위한 것일 뿐, 그 용어에 의해 해당 구성 요소의 본질이나 차례 또는 순서 등이 한정되지 않는다. 명세서 전체에서, 어떤 부분이 어떤 구성요소를 '포함', '구비'한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다. 또한, 명세서에 기재된 '~부', '모듈' 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어나 소프트웨어 또는 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다.
도 1은 본 발명의 일 실시예에 따른 트랜스코딩 과정을 나타낸 도면이다.
도 1을 참조하면, 디멀티플렉서(de-multiplexer, 100), 비디오 트랜스코더(110), 오디오 트랜스코더(120) 및 멀티플렉서(multiplexer, 130)가 도시되어 있다. 도 1에 도시된 구성들은 클라우드 컴퓨팅 환경인 클라우드 서버에 포함될 수 있다.
입력 영상은 비디오 콘텐츠 및 오디오 콘텐츠를 포함하는 데이터이며, 인코딩된 상태로 수신된다. 입력 영상은 디멀티플렉서(100)에 입력되어 비디오 콘텐츠와 오디오 콘텐츠로 나뉘어진다. 비디오 콘텐츠는 비디오 트랜스코더(110)에 입력되고, 오디오 콘텐츠는 오디오 트랜스코더(120)에 입력된다.
입력된 비디오 콘텐츠는 인코딩된 상태이므로, 비디오 트랜스코더(110)는 디코더를 이용하여 인코딩된 비디오 콘텐츠를 디코딩한다. 비디오 트랜스코더(110)는 디코딩된 비디오 콘텐츠를 사용자 단말의 환경 및 네트워크 상태를 고려하여 인코딩 파라미터들을 설정한다. 예를 들면, 사용자 단말의 성능, 디스플레이 환경, 네트워크 상태, 서비스 시나리오 등을 고려하여, 비디오 트랜스코더(110)는 입력 영상의 코덱을 다른 종류의 코덱으로 변환하거나 해상도, 입력 영상의 프레임 레이트(frame rate), 비트레이트(bitrate), 파일 포맷, 미디어 컨테이너 등을 변경하여 인코딩 파라미터들을 설정할 수 있다. 여기서, 프레임은 비디오 콘텐츠를 구성하는 이미지 또는 이미지의 표현으로서, 픽처(picture)와 혼용될 수 있다. 비디오 트랜스코더(110)는 설정된 인코딩 파라미터들 및 인코더를 이용하여 디코딩된 비디오 콘텐츠를 인코딩한다.
비디오 콘텐츠와 마찬가지로, 오디오 콘텐츠는 오디오 트랜스코더(120)에 의해 디코딩 된 후 다시 인코딩된다.
인코딩된 비디오 콘텐츠 및 인코딩된 오디오 콘텐츠는 멀티플렉서(130)에 입력되어 하나의 출력 영상으로 병합된다.
사용자 단말은 서버에 입력되는 입력 영상을 그대로 수신하는 것이 아니라, 사용자 단말의 환경 및 네트워크 상태 등을 고려하여 트랜스코딩된 출력 영상을 수신한다. 이를 통해, 사용자는 사용자 단말에 적합하도록 트랜스코딩된 출력 영상을 시청할 수 있다.
도 2는 본 발명의 일 실시예에 따른 트랜스코딩 시스템의 구성을 나타낸 도면이다.
도 2를 참조하면, 서버(200), 비디오 콘텐츠(202), 서버 비디오 코덱(204), 오디오 콘텐츠(206), 서버 오디오 코덱(208), 컨테이너(210), 사용자 단말(220), 단말 비디오 코덱(212), 단말 오디오 코덱(214), 및 출력 영상(230)이 도시되어 있다.
비디오 콘텐츠(202)는 카메라에 의해 촬영된 비디오 데이터이고, 오디오 콘텐츠(2206)는 마이크에 의해 수집된 오디오 데이터이다. 이하에서, 미디어 콘텐츠는 비디오 콘텐츠(202)와 오디오 콘텐츠(206) 모두를 포함하는 구성으로 지칭된다.
서버(200)는 비디오 콘텐츠(202)를 미리 저장해 놓거나, 네트워크를 통해 실시간으로 수신할 수 있다. 서버(200)는 비디오 코덱(204)을 이용하여 비디오 콘텐츠(202)를 디코딩 및 인코딩한다. 서버(200)는 비디오 콘텐츠(202)를 압축하여 인코딩한다.
여기서, 코덱 종류의 예시로써, 비디오 콘텐츠(202)를 압축하는 데 이용되는 코덱 포맷(format)은 MPEG(Moving Picture Experts Group)에서 표준화한 MPEG-1, MPEG-2, MPEG-4, MPEG-7, MPEG-21 등이 있다. 이러한 코덱 포맷은 2차원 공간 상에서 중복되는 픽셀을 제거함으로써, 비디오 콘텐츠(202)를 압축한다. 이를 위해, 시간 축의 화상 신호를 주파수 축으로 변환하는 이산 코사인 변환(Discrete Cosine Transform, DCT)이 적용된다. 또한, 프레임 단위의 압축뿐만 아니라 프레임 간의 연관성을 이용한 압축 방법이 적용된다. 이때, 비디오 시퀀스(sequence)가 갖는 시간 축 상의 중복을 없애기 위해 움직임 보상 방법이 더 적용될 수 있다. 움직임 보상 방법은 2 장의 프레임 메모리를 이용하여 쌍방향 예측을 수행하는 것을 의미한다. 또한, 임의 접근(Random access)를 가능하도록 하기 위해 픽처 그룹(Group of Pictures, GOP) 구조를 이용하여 압축한다.
서버(200)는 오디오 콘텐츠(206)를 미리 저장해 놓거나, 네트워크를 통해 실시간으로 수신할 수 있다. 서버(200)는 오디오 코덱(208)을 이용하여 오디오 콘텐츠(206)를 디코딩 및 인코딩한다. 서버(200)는 오디오 콘텐츠(206)를 압축하여 인코딩한다.
여기서, 오디오 코덱은 오디오 콘텐츠의 트랜스코딩을 위해 수정 이산 코사인 변환(Modified Discrete Cosine Transform, MDCT)을 이용할 수 있다. 이때, 맨 앞의 펄스 부호 변조(Pulse-code modulation, PCM) 샘플을 정상적으로 디코딩시키기 위해, 일정 길이의 묶음 샘플을 추가해 인코딩할 수 있다. 즉, 오디오 콘텐츠는 비디오 콘텐츠와 연동되어 인코딩될 수 있다.
서버(200)는 인코딩된 비디오 콘텐츠와 인코딩된 오디오 콘텐츠를 합쳐 컨테이너(210)를 생성한다.
컨테이너(210)는 비디오 콘텐츠(202) 또는 오디오 콘텐츠(206)에 관한 콘텐츠 정보 및 세부 정보를 포함한다. 콘텐츠 정보는 비디오 콘텐츠(202)의 영상 데이터 또는 오디오 콘텐츠(206)의 음성 데이터를 포함한다. 세부 정보는 코덱(codec) 정보, 비트레이트, 프레임 레이트, 오디오 트랙, 오디오 채널 정보, 촬영 날짜, 촬영 위치, 스트림의 개수, 미디어 콘텐츠의 재생 시간의 길이, 스트림 위치 정보, 또는 그 외 메타 데이터 등을 포함한다.
컨테이너(210)는 인코딩된 미디어 콘텐츠를 스트림 형태로 포함하며, 서버(200)로부터 사용자 단말(220)에게 전송된다.
사용자 단말(220)은 컨테이너(210)를 수신하고, 단말 비디오 코덱(222) 및 단말 오디오 코덱(224)을 이용하여 인코딩된 미디어 콘텐츠를 디코딩한다. 사용자 단말(220)은 디코딩을 통해 디코딩된 비디오 콘텐츠 및 디코딩된 오디오 콘텐츠를 획득한다. 사용자 단말(220)은 디코딩된 비디오 콘텐츠 및 디코딩된 오디오 콘텐츠로부터 사용자가 시청할 수 있는 출력 영상(230)을 생성하고, 사용자에게 제공한다.
한편, 서버(200)가 단일 서버인 경우, 서버(200)가 비디오 콘텐츠(202) 및 오디오 콘텐츠(206)를 트랜스코딩하는 데 많은 시간이 소요된다. 특히, 서버(200)는 고해상도의 콘텐츠, HDR(High Dynamic Range)과 같은 영상 기술을 처리하는 데 많은 시간을 소모한다.
본 발명의 일 실시예에 의하면, 많은 연산량이 필요한 코덱이 비디오 콘텐츠에 적용되거나 고품질의 비디오 콘텐츠에 대해, 비디오 콘텐츠를 분할하고 복수의 트랜스코더들에 할당하여 병렬 트랜스코딩함으로써, 트랜스코딩에 소요되는 시간을 줄일 수 있다.
도 3은 본 발명의 일 실시예에 따른 분산형 병렬 트랜스코딩 시스템을 나타낸 구성도다.
도 3을 참조하면, 트랜스코딩 시스템(30), 저장부(310), 제어부(320), 분석부(330), 트랜스코딩부(340) 및 병합부(350)가 도시되어 있다.
트랜스코딩 시스템(30)은 복수의 트랜스코더를 위해 병렬 처리 전용 하드웨어 장치, 또는 복수의 소프트웨어 기반 인코더 장치를 구비할 수 있다.
트랜스코딩 시스템(30) 내 구성요소들은 독자적인 메모리와 적어도 하나의 프로세서를 포함할 수 있다. 즉, 트랜스코딩 시스템(30) 내 구성요소들은 개별적인 컴퓨팅 장치일 수 있다.
트랜스코딩 시스템(30) 내 구성요소들은 네트워크를 통해 연결된다. 트랜스코딩 시스템(30) 내 구성요소들은 미디어 데이터, 미디어 데이터에 관한 세부 정보, 또는 제어 신호를 IP(Internet Protocol) 패킷 형태로 전송하거나 수신한다. 이를 위해, 각 구성요소들은 통신 모듈을 포함할 수 있다.
한편, 사용자 단말은 트랜스코딩 시스템(30)으로부터 인코딩된 비디오 콘텐츠를 수신한다. 사용자 단말은 디코더를 구비한 전자 기기일 수 있다. 예를 들면, 사용자 단말은 스마트폰(smart phone), 휴대폰, 내비게이션, 컴퓨터, 노트북, 디지털방송용 단말, PDA(Personal Digital Assistants), PMP(Portable Multimedia Player), 태블릿 PC, 게임 콘솔(game console), 웨어러블 디바이스(wearable device), IoT(internet of things) 디바이스, VR(virtual reality) 디바이스, AR(augmented reality) 디바이스 등에 해당할 수 있다.
여기서, 미디어 데이터는 비디오 콘텐츠를 포함하고, 오디오 콘텐츠를 더 포함할 수 있다. 이하에서는, 비디오 콘텐츠를 기준으로 설명하나, 오디오 콘텐츠는 비디오 콘텐츠와 동일하게 처리될 수 있다.
또한, 미디어 데이터에 관한 세부 정보는 비디오 콘텐츠에 관한 세부 정보 또는 오디오 콘텐츠에 관한 세부 정보를 포함한다. 비디오에 관한 세부 정보는 비디오 콘텐츠의 오프셋 정보, 비디오 코덱 정보, 비디오 비트레이트, 비디오 프레임 레이트(Frame Per Second, FPS), GOP 정보, 전체 재생시간, 해상도, 화면 비율, 평균 비트레이트, 스트림의 개수, 스트림의 위치 정보, 또는 메타 데이터 등을 포함한다. 오디오 콘텐츠에 관한 세부 정보는 오디오 코덱 정보, 오디오 트랙 정보, 오디오 채널 정보, 오디오 비트레이트, 전체 재생시간, 오디오 콘텐츠의 오프셋 정보, 샘플링 레이트, 언어 정보 또는 메타 데이터 등을 포함한다. 제어 신호는 제어부(320)가 트랜스코딩 시스템(30)의 제어를 위해 각 구성요소에 전송하는 신호다.
트랜스코딩 시스템(30)이 수신하는 비디오 콘텐츠는 인코딩된 상태일 수 있다.
이하에서, 비디오 콘텐츠는 복수의 데이터 청크(chunk)로 분할 될 수 있으며, 비디오 콘텐츠의 분할은 물리적 분할이 아니라 논리적 분할을 의미한다. 구체적으로, 트랜스코딩 시스템(30)은 비디오 콘텐츠의 재생 시간을 복수의 시간 구간들로 분할하고, 각 시간 구간의 시작 지점과 종료 지점을 저장한다. 분할된 시간 구간들은 동일한 크기를 가질 수 있다. 트랜스코딩 시스템(30) 내 구성요소들은 비디오 콘텐츠 전부를 로드하는 것이 아니라, 각 시간 구간의 시작 지점과 종료 지점을 이용하여 시간 구간에 해당하는 비디오 콘텐츠 일부를 로드할 수 있다. 이처럼, 비디오 콘텐츠에 대해 각 데이터 청크의 오프셋 정보를 설정하는 것을 논리적 분할이라 하고, 시간 구간별로 분할된 데이터를 데이터 청크라 한다.
저장부(310)는 비디오 콘텐츠 및 비디오 콘텐츠의 병렬 트랜스코딩에 필요한 정보를 저장하도록 구성된다.
구체적으로, 저장부(310)는 비디오 콘텐츠, 비디오 콘텐츠의 세부 정보, 비디오 콘텐츠의 오프셋 정보, 또는 인코딩된 비디오 콘텐츠 등을 저장한다. 또한, 저장부(310)는 오디오 콘텐츠, 오디오 콘텐츠의 세부 정보, 오디오 콘텐츠의 오프셋 정보, 또는 인코딩된 오디오 콘텐츠 등을 저장할 수 있다.
저장부(310)는 비디오 콘텐츠가 업로드되면, 제어부(320)에게 비디오 콘텐츠의 업로드 완료를 통지하거나, 업로드 완료에 따른 이벤트를 통지할 수 있다.
제어부(320)는 병렬 트랜스코딩을 위해 제어 신호를 생성하고, 제어 신호를 각 구성요소들에 전송하도록 구성된다.
제어부(320)는 비디오 콘텐츠에 관한 트랜스코딩 요청을 수신하면, 분석부(330)에 비디오 콘텐츠에 관한 분석 요청을 전송한다. 이때, 분석부(330)는 비디오 콘텐츠를 시간에 따라 복수의 데이터 청크로 분할하기 위한 시간 구간의 경계값인 오프셋 정보를 생성한다.
제어부(320)는 분석 결과에 따라 트랜스코딩 파라미터들을 설정하고, 트랜스코딩부9340)에 트랜스코딩 파라미터들 및 오프셋 정보를 전송한다. 여기서, 트랜스코딩 파라미터들은 디코딩 파라미터들 및 인코딩 파라미터들을 포함한다. 디코딩 파라미터들은 세부 정보에 포함된 정보 중 비디오 콘텐츠의 디코딩에 필요한 파라미터들을 의미한다. 인코딩 파라미터들은 세부 정보에 포함된 정보 중 비디오 콘텐츠의 인코딩에 필요한 파라미터들을 의미한다. 예를 들어, 인코딩 파라미터들은 비디오 코덱 정보, 비디오 비트레이트, 비디오 프레임 레이트(Frame Per Second, FPS), 평균 비트레이트, 스트림의 개수, 스트림의 위치 정보 등을 포함한다.
본 발명의 일 실시예에 의하면, 트랜스코딩 파라미터들은 사용자 단말의 재생 환경 또는 네트워크 상태 중 적어도 하나를 고려하여 설정된다. 이를 위해, 사용자 단말의 재생 환경에 관한 정보를 수신하는 구성 또는 네트워크 상태를 측정하는 구성이 더 이용될 수 있다.
본 발명의 다른 실시예에 의하면, 트랜스코딩 파라미터들은 트랜스코딩된 비디오 콘텐츠에서 키 프레임들 간 시간 간격을 포함한다. 각 트랜스코더들은 인코딩 과정에서 트랜스코딩된 비디오 콘텐츠 내 키 프레임들 간 시간 간격을 고려하여, 키 프레임을 생성한다. 키 프레임들은 영상 재생, 역재생, 건너뛰기 등 재생의 기준점이 된다.
한편, 비디오 콘텐츠는 오프셋 정보에 따라 복수의 데이터 청크로 분할되고, 데이터 청크별로 트랜스코딩된다.
이후, 제어부(320)는 병합부(350)에 트랜스코딩된 데이터 청크들에 대해 병합을 요청한다. 제어부(320)는 트랜스코딩된 비디오 콘텐츠를 저장부(310)에 저장한다.
분석부(330)는 저장부(310)에 저장된 비디오 콘텐츠를 로딩하고, 비디오 콘텐츠에 관한 세부 정보 및 오프셋 정보를 획득하도록 구성된다.
여기서, 오프셋 정보는 비디오 콘텐츠의 재생 시간을 복수의 시간 구간들로 분할하였을 때, 각 시간 구간의 시작 지점과 종료 지점에 관한 정보를 나타낸다. 즉, 오프셋 정보는 비디오 콘텐츠로부터 분할된 복수의 데이터 청크의 경계값이다. 예를 들면, 오프셋 정보는 재생 시간이 30초인 비디오 콘텐츠를 0.5 ms 단위의 시간 구간들로 분할하였을 때, 각 시간 구간의 시작 지점과 종료 지점을 나타낼 수 있다.
본 발명의 일 실시예에 의하면, 분석부(330)는 비디오 콘텐츠를 디코딩하여 디코딩 가능 여부를 확인하고, 비디오 콘텐츠의 세부 정보와 비디오 콘텐츠의 디코딩 결과를 비교함으로써, 비디오 콘텐츠의 오류를 확인한다. 도 4에서 자세히 설명한다.
트랜스코딩부(340)는 복수의 비디오 트랜스코더를 생성하고, 비디오 콘텐츠로부터 분할된 복수의 데이터 청크를 트랜스코더들에 할당하여 병렬 트랜스코딩을 수행한다. 여기서, 복수의 비디오 트랜스코더는 독립적인 프로세서로 구성될 수 있다.
구체적으로, 트랜스코딩부(340)는 비디오 콘텐츠의 재생 시간과 주어진 시간 간격에 따라 분할된 데이터 청크의 개수만큼 비디오 트랜스코더들을 생성한다. 트랜스코딩부(340)는 트랜스코딩 파라미터들과 오프셋 정보를 수신하고, 복수의 비디오 트랜스코더에게 트랜스코딩 파라미터들과 오프셋 정보를 할당한다.
각 비디오 트랜스코더는 할당된 오프셋 정보를 기반으로 비디오 콘텐츠 중 오프셋 정보에 해당하는 시간 구간만큼 데이터 청크를 로드한다. 각 비디오 트랜스코더는 비디오 콘텐츠의 세부 정보에 기초하여 데이터 청크를 디코딩한다. 이후, 각 비디오 트랜스코더는 트랜스코딩 파라미터들을 이용하여 디코딩된 데이터 청크를 인코딩한다.
본 발명의 일 실시예에 의하면, 트랜스코딩부(340)는 트랜스코딩된 데이터 청크의 품질을 평가하고, 트랜스코딩된 데이터 청크의 품질에 따라 디코딩된 데이터 청크에 대한 트랜스코딩 파라미터들을 조정하여 다시 인코딩할 수 있다. 특히, 인코딩 파라미터들을 조정하여 다시 인코딩할 수 있다. 이는 도 6에서 자세히 설명한다.
본 발명의 다른 실시예에 의하면, 트랜스코딩 파라미터들은 트랜스코딩된 비디오 콘텐츠에서 키 프레임들(key frames) 간 시간 간격을 포함한다. 즉, 최종적으로 트랜스코딩된 비디오 콘텐츠가 일정 간격마다 키 프레임을 포함하도록, 각 비디오 트랜스코더는 인코딩을 수행한다. 일정 간격의 키 프레임들은 사용자가 미디어 콘텐츠 시청 중 건너뛰기, 2배속 재생 등의 기능을 가능하게 한다.
한편, 트랜스코딩부(340)는 복수의 오디오 트랜스코더를 이용하여 오디오 콘텐츠를 트랜스코딩할 수 있다. 오디오 콘텐츠의 트랜스코딩은 연산량이 적게 소요되므로, 트랜스코딩부(340)는 오디오 콘텐츠를 전체로서 트랜스코딩하거나 분산형 병렬 트랜스코딩할 수 있다.
트랜스코딩부(340)는 복수의 트랜스코딩된 데이터 청크를 저장부(310)에 저장한다.
병합부(350)는 복수의 트랜스코딩된 데이터 청크를 병합하여 트랜스코딩된 비디오 콘텐츠를 생성하도록 구성된다. 병합부(350)는 오프셋 정보에 기초하여 복수의 트랜스코딩된 데이터 청크의 순서를 판단하고, 복수의 트랜스코딩된 데이터 청크를 순서대로 병합한다. 이때, 각 트랜스코딩된 데이터 청크의 시작 위치에는 키 프레임이 위치한다.
본 발명의 일 실시예에 의하면, 병합부(350)는 트랜스코딩된 비디오 콘텐츠의 길이 정보와 트랜스코딩된 오디오 콘텐츠의 길이 정보를 비교하여, 트랜스코딩된 비디오 콘텐츠의 무결성을 검증할 수 있다. 즉, 두 길이 정보가 일치하지 않는 경우, 병합부(350)는 프레임 손실이나 중복을 탐지할 수 있다. 이는 도 7에서 자세히 설명한다.
도 4는 본 발명의 일 실시예에 따른 병렬 트랜스코딩 과정을 도시한 순서도다.
도 4를 참조하면, 저장부는 비디오 콘텐츠를 입력 받는다(S400).
저장부는 입력 받은 비디오 콘텐츠를 미리 저장해두거나 실시간으로 입력 받을 수 있다.
저장부는 비디오 콘텐츠의 저장이 완료되면, 제어부에게 비디오 콘텐츠 업로드를 통지한다(S402).
저장부는 제어부에게 업로드 통지와 함께 업로드된 비디오 콘텐츠의 식별 정보(identification, ID)를 전송한다. 이 외에, 저장부는 비디오 콘텐츠의 저장이 완료되면 트랜스코딩 요청 이벤트를 생성하여 제어부에게 전송할 수도 있다.
제어부는 비디오 콘텐츠의 업로드 통지에 따라 분석부에게 비디오 콘텐츠에 대한 분석을 요청한다(S404).
제어부는 분석부에게 비디오 콘텐츠의 ID와 분석 요청을 전송한다.
분석부는 비디오 콘텐츠의 ID를 이용하여 저장부로부터 비디오 콘텐츠를 로컬 저장소에 로드한다(S406).
분석부는 비디오 콘텐츠의 ID를 포함하는 URL(Uniform Resource Locator) 정보를 이용하여 저장부 내 비디오 콘텐츠의 위치를 식별할 수 있다. 분석부는 인코딩된 상태의 비디오 콘텐츠를 로컬 저장소로 불러온다.
분석부는 로드된 비디오 콘텐츠에 대해 오류 검사를 수행하고, 비디오 콘텐츠를 복수의 데이터 청크로 분할한다(S408).
분석부는 비디오 콘텐츠의 재생 시간을 기 설정된 시간 간격으로 분할하여 비디오 콘텐츠를 복수의 데이터 청크로 분할할 수 있다. 분석부는 각 시간 간격에 대한 시작 지점과 종료 지점을 해당 데이터 청크의 오프셋 정보로 저장한다. 또한, 분석부는 비디오 콘텐츠의 세부 정보를 추출할 수 있다.
분석부는 비디오 콘텐츠의 세부 정보, 오류 검사 결과 및 오프셋 정보와 함께 제어부에게 비디오 콘텐츠에 대한 분석 완료를 통지한다(S408).
제어부는 데이터 청크의 수에 따라 트랜스코더들의 식별 정보(identification, ID)를 생성한다(S412).
제어부는 트랜스코딩부에게 트랜스코딩을 요청한다(S414).
제어부는 복수의 데이터 청크에 대한 오프셋 정보와 트랜스코딩 파라미터들을 트랜스코딩부에게 전송한다.
트랜스코딩부는 트랜스코딩 요청에 따라 저장부로부터 데이터 청크들을 로드한다(S416).
트랜스코딩부는 복수의 데이터 청크들의 수에 따라 트랜스코더들을 생성하고, 트랜스코더들에 연산 자원을 할당하며, 트랜스코더들, 오프셋 정보 및 트랜스코딩 파라미터들을 이용하여 복수의 데이터 청크들을 병렬 트랜스코딩한다(S418). 각 트랜스코더는 할당된 오프셋 정보에 해당하는 데이터 청크를 트랜스코딩한다.
본 발명의 일 실시예에 의하면, 각 트랜스코더는 할당된 데이터 청크를 트랜스코딩하되, 트랜스코딩된 데이터 청크의 품질을 평가하고, 품질 기준에 못 미치는 데이터 청크에 대해서는 다시 인코딩을 수행한다. 이때, 인코딩 파라미터를 변경하여 인코딩을 수행할 수 있다.
트랜스코딩부는 데이터 청크들에 대한 트랜스코딩 완료 후 제어부에게 트랜스코딩 완료를 통지한다(S420).
트랜스코딩부는 트랜스코딩된 데이터 청크들을 저장부에 저장한다(S422).
제어부는 트랜스코딩된 데이터 청크들을 병합하도록 병합부에게 병합을 요청한다(S424).
병합부는 병합 요청에 따라 저장부로부터 트랜스코딩된 데이터 청크들을 로드한다(S426).
병합부는 트랜스코딩된 데이터 청크들을 메모리로 로드하고, 병합한다(S428).
구체적으로, 병합부는 트랜스코딩된 데이터 청크들의 키 프레임을 이용하여 순서대로 병합함으로써, 트랜스코딩된 비디오 콘텐츠를 생성할 수 있다.
병합부는 제어부에게 병합 완료를 통지한다(S430).
병합부는 저장부에 트랜스코딩된 비디오 콘텐츠를 저장한다(S432).
한편, 트랜스코딩 시스템은 비디오 콘텐츠에 대한 트랜스코딩 과정을 오디오 콘텐츠에 동일하게 적용할 수 있다. 다만, 오디오 콘텐츠의 트랜스코딩 연산량은 비디오 콘텐츠보다 적으므로, 트랜스코딩 시스템은 오디오 콘텐츠를 한번에 트랜스코딩할 수도 있고, 비디오 콘텐츠에 대한 데이터 청크의 크기의 정수배만큼 분할하여 병렬 트랜스코딩할 수도 있다.
도 5는 본 발명의 일 실시예에 따른 분석부의 동작 과정을 나타낸 순서도다.
도 5를 참조하면, 분석부는 제어부로부터 비디오 콘텐츠에 대한 분석 요청을 수신한다(S500).
분석 요청은 분석 대상이 되는 비디오 콘텐츠의 ID를 URL 형식으로 포함할 수 있다. 분석부는 URL을 이용하여 저장부에 저장된 비디오 콘텐츠에 접근할 수 있다.
분석부는 저장부에서 비디오 콘텐츠를 분석부 내 로컬 저장소에 복사한다(S502).
분석부는 비디오 콘텐츠의 세부 정보를 추출하고, 데이터 청크들의 오프셋 정보를 생성한다(S504).
구체적으로, 분석부는 비디오 콘텐츠의 오류 검사 및 제어부의 인코딩 파라미터 설정을 위해 비디오 콘텐츠의 세부 정보를 추출할 수 있다.
분석부는 비디오 콘텐츠를 시간에 따라 복수의 데이터 청크로 분할할 수 있다. 분석부는 비디오 콘텐츠의 재생 시간을 기 설정된 시간 간격으로 분할하여 비디오 콘텐츠를 복수의 데이터 청크로 분할할 수 있다. 반면, 분석부는 비디오 콘텐츠의 복잡도 등을 고려하여 시간 간격을 가변적으로 설정할 수도 있다.
분석부는 각 시간 간격에 대한 시작 지점과 종료 지점을 해당 데이터 청크의 오프셋 정보로 저장한다. 즉, 각 시간 간격에 대한 시작 지점과 종료 지점은 데이터 청크의 시작 지점과 종료 지점일 수 있다. 구체적으로, 분석부는 비디오 콘텐츠에 포함된 프레임들을 디코딩한다. 디코딩 중인 현재 프레임이 다음 데이터 청크의 시작 지점에 가장 인접한 프레임일 경우, 분석부는 현재 프레임을 다음 데이터 청크의 시작 지점으로 설정하고, 현재 프레임을 현재 데이터 청크의 종료 지점으로 설정한다.
분석부는 비디오 콘텐츠를 프레임 단위로 디코딩한다(S506).
저장부에 저장된 비디오 콘텐츠는 인코딩된 상태로 저장되므로, 분석부는 비디오 콘텐츠의 키 프레임을 탐색하고, 키 프레임을 기준으로 프레임 단위로 디코딩한다.
분석부는 디코딩 중 프레임의 오류 여부를 판단한다(S508).
구체적으로, 본 발명의 일 실시예에 의하면, 분석부는 비디오 콘텐츠에 대한 디코딩을 시도하고, 디코딩 가능 여부를 확인함으로써, 비디오 콘텐츠에 대한 제1 오류를 검사한다. 한편, 분석부는 비디오 콘텐츠의 세부 정보와 디코딩된 비디오 콘텐츠가 일치하는지 여부를 통해 비디오 콘텐츠에 대한 제2 오류를 검사한다. 이 외에도, 분석부는 비디오 콘텐츠의 신택스(syntax) 오류를 검사함으로써, 제3 오류를 검사할 수 있다.
비디오 콘텐츠의 프레임이 오류를 포함하는 것으로 판단한 경우, 분석부는 비디오 콘텐츠에 대한 오류를 제어부에게 통지한다(S510).
비디오 콘텐츠의 프레임이 오류를 포함하지 않은 것으로 판단한 경우, 분석부는 비디오 콘텐츠의 마지막 프레임인지 여부를 판단한다(S512).
현재 프레임이 비디오 콘텐츠의 마지막 프레임이 아닌 경우, 분석부는 비디오 콘텐츠의 현재 재생 시간이 데이터 청크의 오프셋 경계값 여부인지 여부를 판단한다(S514).
디코딩 중인 현재 프레임이 다음 데이터 청크의 시작 지점에 가장 인접한 프레임일 경우, 분석부는 현재 프레임을 다음 데이터 청크의 시작 지점으로 설정하고, 현재 프레임을 현재 데이터 청크의 종료 지점으로 설정한다(S516).
디코딩 중인 현재 프레임이 다음 데이터 청크의 시작 지점에 가장 인접한 프레임이 아닐 경우, 분석부는 다음 프레임을 디코딩한다.
한편, 현재 프레임이 비디오 콘텐츠의 마지막 프레임인 경우, 분석부는 현재 프레임을 데이터 청크의 종료 지점으로 기록한다(S518).
마지막으로, 분석부는 비디오 콘텐츠의 세부 정보 및 오프셋 정보들을 저장부에 전송한다(S520).
도 6은 본 발명의 일 실시예에 따른 트랜스코딩부의 동작 과정을 나타낸 순서도다.
도 6을 참조하면, 트랜스코딩부는 트랜스코딩 요청을 수신하고, 분석부에 의해 계산된 데이터 청크 수에 따라 트랜스코더를 생성한다(S600).
트랜스코딩 요청은 트랜스코딩 파라미터들과 데이터 청크별 오프셋 정보를 포함한다. 한편, 데이터 청크 수는 비디오 콘텐츠의 재생 시간을 특정 크기의 시간 간격으로 나눔으로써 계산된다.
트랜스코딩부는 트랜스코더마다 오프셋 정보에 따른 데이터 청크를 로딩한다(S602).
구체적으로, 트랜스코딩부는 복수의 데이터 청크를 복수의 트랜스코더에 할당한다. 각 트랜스코더는 할당된 오프셋 정보에 해당되는 비디오 콘텐츠의 일부인 데이터 청크를 로드한다.
트랜스코딩부는 트랜스코딩 요청에 포함된 트랜스코딩 파라미터들을 이용하여 데이터 청크들을 트랜스코딩한다(S604).
데이터 청크들은 트랜스코딩됨으로써, 사용자의 환경 및 네트워크 상태에 적합한 데이터로 변환된다. 복수의 데이터 청크들은 병렬적으로 데이터 청크들을 트랜스코딩함으로써, 단일 트랜스코더 방식에 비해 트랜스코딩에 소요되는 시간을 줄일 수 있다.
트랜스코딩부는 각 트랜스코딩된 데이터 청크에 대해 품질을 평가한다(S606).
트랜스코딩부는 비디오 콘텐츠에 기초하여 각 트랜스코딩된 데이터 청크의 품질을 평가할 수 있다. 구체적으로, 트랜스코딩부는 VMAF(Video Multimethod Assessment Fusion)와 같은 영상 품질 측정 알고리즘을 이용하여 각 트랜스코딩된 데이터 청크의 품질을 평가할 수 있다.
트랜스코딩부는 각 트랜스코딩된 데이터 청크가 품질 기준을 통과하는지 여부를 판단한다(S608).
트랜스코딩된 데이터 청크가 품질 기준에 미달하는 경우, 트랜스코딩부는 데이터 청크의 트랜스코딩 파라미터를 변경한다(S610).
구체적으로, 트랜스코딩된 데이터 청크가 품질 기준에 미달하는 경우, 트랜스코딩부는 해당 트랜스코딩된 데이터 청크에 대응되는 데이터 청크를 타겟 데이터 청크로 식별한다. 즉, 타겟 데이터 청크는 트랜스코딩된 데이터 청크의 트랜스코딩되기 이전의 데이터이다.
트랜스코딩부는 타겟 데이터 청크가 목표하는 품질 기준을 만족하도록 트랜스코딩하기 위한 트랜스코딩 파라미터들의 값을 계산한다. 트랜스코딩부는 타겟 데이터 청크에 대한 트랜스코딩 파라미터를 변경한다. 트랜스코딩부는 타겟 데이터 청크의 트랜스코딩 파라미터를 고품질로 변경할 수 있다. 예를 들면, 트랜스코딩부는 비디오 콘텐츠의 압축 데이터의 분포를 파악하고, 평균 비트레이트를 유지하되, 각 데이터 청크별 인코딩 비트레이트를 조정할 수 있다. 다른 예로써, 트랜스코딩부는 트랜스코딩 파라미터들 중 CRF(Constant Rate Factor) 값을 조정함으로써, 목표 품질을 달성할 수 있다. 트랜스코딩부는 조정된 트랜스코딩 파라미터들을 이용하여 다시 타겟 데이터 청크를 트랜스코딩하고, 품질을 평가한다. 다시 트랜스코딩된 타겟 데이터 청크가 품질 기준을 만족하지 못하는 경우, 트랜스코딩부는 비디오 콘텐츠의 평균 비트레이트를 높여서 다시 트랜스코딩할 수 있다. 이처럼, 트랜스코딩부는 트랜스코딩된 데이터 청크의 품질을 평가하고, 품질에 따라 트랜스코딩 파라미터들을 변경하여 다시 트랜스코딩함으로써, 사용자가 시청하는 비디오 콘텐츠의 품질을 보장할 수 있다.
트랜코딩부는 현재 트랜스코딩된 데이터 청크가 마지막 데이터 청크인지 여부를 판단한다(S612).
현재 트랜스코딩된 데이터 청크가 마지막 데이터 청크가 아닌 경우, 트랜스코딩부는 다음 트랜스코딩된 데이터 청크에 대해 품질을 평가한다.
현재 트랜스코딩된 데이터 청크가 마지막 데이터 청크인 경우, 트랜스코딩부는 각 트랜스코딩된 데이터 청크 및 오프셋 정보를 저장한다(S614).
한편, 트랜스코딩부는 오디오 콘텐츠에 대해 비디오 콘텐츠와 동일한 과정을 수행할 수 있다. 트랜스코딩부는 오디오 콘텐츠를 일체로 트랜스코딩하거나, 복수의 오디오 데이터 청크로 분할하여 병렬 트랜스코딩할 수 있다. 이때, 각 오디오 데이터 청크의 크기는 비디오 데이터 청크의 정수배일 수 있다. 즉, 비디오 콘텐츠와 오디오 콘텐츠 모두 분산 인코딩할 수 있으나, 경우에 따라서는 오디오 콘텐츠는 단일 인코딩으로 처리하고 비디오 콘텐츠만 분산 인코딩으로 처리하는 것 또한 가능하다.
도 7은 본 발명의 일 실시예에 따른 병합부의 동작 과정을 나타낸 순서도다.
먼저, 병합부는 제어부로부터 복수의 트랜스코딩된 데이터 청크에 대한 병합 요청을 수신한다.
도 7을 참조하면, 병합부는 오프셋 정보를 이용하여 복수의 트랜스코딩된 데이터 청크들을 순차적으로 병합한다(S700).
복수의 트랜스코딩된 데이터 청크들이 오프셋 순서대로 병합됨으로써, 트랜스코딩된 비디오 콘텐츠가 생성된다.
병합부는 트랜스코딩된 오디오 콘텐츠를 로드한다(S702).
여기서, 트랜스코딩된 오디오 콘텐츠는 하나의 데이터로 존재할 수도 있고, 복수의 데이터 청크의 형태로 존재할 수도 있다.
병합부는 트랜스코딩된 비디오 콘텐츠의 길이 정보와 오디오 콘텐츠의 길이 정보가 일치하는지 여부를 판단한다(S704).
구체적으로, 병합부는 트랜스코딩된 비디오 콘텐츠의 전체 재생 시간과 트랜스코딩된 오디오 콘텐츠이 전체 재생 시간이 동일한지 판단한다.
트랜스코딩된 비디오 콘텐츠의 길이 정보와 오디오 콘텐츠의 길이 정보가 일치하는 경우, 병합부는 비디오 콘텐츠와 오디오 콘텐츠를 병합한다(S708).
병합부는 트랜스코딩된 비디오 콘텐츠와 트랜스코딩된 오디오 콘텐츠를 세그먼트별로 시간적으로 인터리빙(interleaving)하여 하나의 인코딩 파일로 만들 수 있다.
병합부는 병합된 미디어 콘텐츠를 저장한다(S710).
한편, 트랜스코딩된 비디오 콘텐츠의 길이 정보와 오디오 콘텐츠의 길이 정보가 일치하지 않는 경우, 병합부는 트랜스코딩 오류를 통지한다(S706).
병합부는 트랜스코딩된 비디오 콘텐츠의 트랜스코딩 과정에서 프레임 손실 또는 프레임 중복이 발생한 것으로 판단한다. 즉, 병합부는 트랜스코딩된 비디오 콘텐츠의 무결성이 검증되지 않은 것으로 판단한다. 비디오 콘텐츠의 트랜스코딩이 다시 시도될 수 있다.
도 8은 본 발명의 일 실시예에 따른 제어부의 동작 과정을 나타낸 순서도다.
먼저, 제어부는 저장부로부터 비디오 콘텐츠의 업로드 완료 통지 또는 트랜스코딩 요청 이벤트를 수신한다.
도 8을 참조하면, 제어부는 비디오 콘텐츠에 대한 세부 정보 추출 요청 및 데이터 청크 분할을 분석부에 요청한다(S800).
또한, 제어부는 분석부에 비디오 콘텐츠에 대한 오류 검사를 요청할 수 있다. 분석부의 분석이 완료된 후, 제어부는 분석부로부터 분석 완료를 통지 받는다.
제어부는 비디오 콘텐츠 및 오디오 콘텐츠에 대한 트랜스코딩을 트랜스코딩부에 요청한다(S802).
제어부는 트랜스코딩 요청과 함께 트랜스코딩 파라미터들 및 오프셋 정보를 함께 전송한다.
제어부는 트랜스코딩된 비디오 콘텐츠와 트랜스코딩된 오디오 콘텐츠의 병합을 병합부에 요청한다(S804).
제어부는 트랜스코딩된 미디어 콘텐츠를 스트리밍 서버에 전달한다(S806).
이 외에도, 제어부는 트랜스코딩된 미디어 콘텐츠를 저장용 서버에 전달할 수도 있다.
도 9는 비디오 콘텐츠의 프레임 단위 구성을 나타낸 도면이다.
영상(video)을 압축하기 위한 코덱은 수신 장치에서 프레임을 복원할 수 있는 정보를 프레임으로부터 추출하고, 추출된 정보를 수신 장치로 전송한다. 추출된 정보의 양은 프레임 자체의 정보량보다 적으므로, 코덱은 정보 추출을 통해 전송량을 줄일 수 있다.
코덱은 각 프레임마다 인코딩 데이터를 추출할 수 있지만, 더 많은 압축을 위해 두 프레임 간 변화가 있는 부분에 관한 정보를 이용할 수도 있다. 구체적으로, 코덱은 제1 프레임을 복원하기 위한 제1 정보를 제1 프레임으로부터 추출하고, 제1 프레임과 제2 프레임 간 차이에 관한 정보를 제2 정보로 추출하여 수신 장치로 전송한다. 수신 장치는 제1 정보로부터 제1 프레임을 복원하며, 제2 프레임을 제1 정보 및 제2 정보로부터 복원할 수 있다. 이를 움직임 보상이라 한다.
도 9를 참조하면, 영상 내 연속되는 프레임들이 도시되어 있다. 각 프레임은 정지영상을 나타낸다.
움직임 보상 방법에서 코덱은 세 가지 프레임들을 이용하여 영상을 압출할 수 있다. 세 가지 프레임들은 I-프레임(Infra frame), B-프레임(Bi-directional predicted frame) 및 P-프레임(Predicted frame)이다.
I-프레임은 키(key) 프레임 역할을 가지며, 다른 프레임 없이 단일 프레임만으로 독립적으로 인코딩 및 디코딩될 수 있다. I-프레임은 독립적으로 인코딩 및 디코딩될 수 있으므로, 랜덤 액세스(random access)의 기준점으로 사용될 수 있다. 예를 들면, 사용자가 영상 시청 중 임의의 프레임이 위치한 시점을 재생 시작 지점으로 지정하였을 때, 지정된 지점의 근처에 위치한 I-프레임부터 재생될 수 있다. 한편, I-프레임은 JPEG(joint photographic coding experts group) 압축 방법을 이용하여 압축될 수 있다.
P-프레임은 P-프레임의 이전에 위치한 I-프레임 또는 P-프레임 중 어느 하나를 이용하여 인코딩될 수 있다. 예를 들면, P-프레임과 P-프레임의 이전에 위치한 I-프레임 간 차이점을 변화 정보로 계산하고, 변화 정보를 DCT 변환하여 압축할 수 있다. 수신 장치는 I-프레임을 복원하고, 변화 정보를 이용하여 I-프레임으로부터 P-프레임을 예측할 수 있다.
B-프레임은 B-프레임의 이전에 위치한 I-프레임 또는 P-프레임 중 어느 하나와, B-프레임의 이후에 위치한 I-프레임 또는 P-프레임 중 어느 하나를 참조하여 쌍방향으로 예측되는 프레임이다.
이처럼, I-프레임은 독립적으로 인코딩 및 디코딩될 수 있으며, P-프레임 및 B-프레임은 다른 프레임을 참조하여 인코딩 및 디코딩될 수 있다.
P-프레임 및 B-프레임은 다른 프레임을 참조하는 대신, 프레임을 복원하는 데 필요한 정보량이 I-프레임에 비해 적다. P-프레임 크기는 I-프레임의 크기의 3 분의 1에 해당하며, B-프레임의 크기는 P-프레임의 크기의 3 분의 1에 해당한다.
전술한 압축 과정을 통해 압축된 프레임의 집합은 픽처 그룹(Group of Picture, GOP)로 지칭될 수 있다. 자세하게는, GOP는 하나의 I-프레임과 하나의 I-프레임의 이후에 위치한 I-프레임 간 간격을 의미하며, I-프레임의 주기를 나타낸다.
도 10은 비디오 콘텐츠의 프레임 그룹의 구성을 나타낸 도면이다.
비디오 콘텐츠의 프레임은 I-프레임들만으로 구성될 수도 있고, P-프레임 또는 B-프레임을 더 포함하여 구성될 수도 있다.
GOP의 수는 하나의 I-프레임과 다음 I-프레임 사이에 위치한 프레임 개수이다. 다시 말하면, GOP의 수는 하나의 I-프레임 주기 내에서 P-프레임과 B-프레임의 개수의 총합을 의미할 수 있다. GOP의 수가 증가할수록 압축률은 증하지만 화질이 저하된다. 반대로, GOP의 수가 감소할수록 압축률은 감소하지만 화질이 개선된다. GOP의 수는 임의의 값으로 설정될 수 있다.
하나의 GOP는 하나 이상의 I-프레임을 포함하며, I-프레임은 재생의 기준점이 된다. GOP의 수가 작을수록 I-프레임의 밀도가 높으며, GOP의 수가 클수록 I-프레임의 밀도가 낮다. GOP의 수가 작을수록 랜덤 액세스, 고속 재생, 및 역방향 재생에 적합하다.
한편, GOP의 수는 비디오 콘텐츠의 초당 프레임을 기반으로 약 0.5 초에 해당하는 프레임의 개수와 같을 수 있다. 약 0.5 초에 해당하는 프레임의 개수에 따라 생성된 GOP를 long GOP라 지칭한다. 반면, 6 개의 프레임 단위마다 생성된 GOP를 short GOP라 지칭한다.
한편, 방송 소스를 녹화한 파일인 트랜스포트 스트림(transport stream, TS) 파일은 GOP의 수와 연속된 B-프레임의 수를 포함한다.
도 10을 참조하면, GOP 수(N) 및 연속된 B-프레임의 개수(N)가 예시되어 있다. 상단에 위치한 프레임들은 GOP 수가 12이고, 연속된 B-프레임의 개수가 3이다. 반면, 하단에 위치한 프레임들은 GOP 수가 15이고, 연속된 B-프레임의 개수가 5이다.
GOP 수 및 연속된 B-프레임 개수를 포함하는 GOP 정보는 시퀀스 헤더(sequence header) 뒤에서 비디오 스트림과 함께 전송될 수 있다. 여기서, 시퀀스 헤더는 화면 해상도 정보, 화면 비율 정보, 초당 프레임 개수, 비트레이트 또는 버퍼 크기 등의 정보를 더 포함할 수 있다.
전술한 구성들을 통해, 수신 장치는 영상 내 특정 위치를 랜덤 액세스하는 경우, 시퀀스 헤더의 위치를 확인하고, GOP 내 I-프레임을 참조하며 영상을 복원할 수 있다. 수신 장치는 복원된 I-프레임을 이용하여 P-프레임 및 B-프레임을 복원할 수 있다.
한편, 본 발명의 일 실시예에 의하면, 트랜스코딩 시스템은 비디오 콘텐츠를 시간에 따라 복수의 데이터 청크로 논리적 분할하고, 데이터 청크를 트랜스코더들에 할당함으로써, 병렬 트랜스코딩을 수행할 수 있다. 이를 위해, 트랜스코딩 시스템은 비디오 콘텐츠의 재생 시간을 복수의 시간 구간들로 분할할 수 있다. 각 트랜스코더는 할당된 시간 구간을 기준으로 디코딩 및 인코딩을 수행한다.
하지만, 비디오 콘텐츠는 복수의 프레임들로 구성되며, 비디오 콘텐츠는 I-프레임을 참조 포인트로 하여 디코딩될 수 있다. 즉, 비디오 콘텐츠는 GOP의 수에 따른 프레임 간격으로 배치된 I-프레임을 기준으로 디코딩된다.
따라서, 트랜스코딩 시스템의 각 트랜스코더는 할당된 시간 구간에 따른 데이터 청크를 디코딩할 때, 할당된 시간 구간의 시작 지점과 I-프레임의 위치 간 오차가 발생할 수 있다.
도 11a 및 도 11b는 프레임들의 트랜스코딩 구간을 나타낸 도면이다.
도 11a를 참조하면, 비디오 콘텐츠 내 프레임들이 도시되어 있다.
I-프레임들은 주어진 프레임 간격마다 배치된다. 주어진 프레임 간격은 비디오 콘텐츠의 재생 시간, GOP의 수, 초당 프레임 수 등에 의해 결정된다.
비디오 콘텐츠는 동일한 크기를 갖는 시간 구간들로 구분될 수 있다. 예를 들어, 각 시간 구간은 0.5 초의 크기를 가질 수 있다. 이때, T-1번째 시간 구간은 T-1번째 데이터 청크에 대응되며, T번째 시간 구간은 T번째 데이터 청크에 대응된다.
도 11a에서는 비디오 콘텐츠 내 I-프레임들 간 프레임 간격과 분할된 시간 구간들이 일치한다. 즉, 프레임 구간의 시작 지점과 시간 구간의 시작 지점이 일치한다.
T번째 트랜스코더는 T번째 시간 구간에 대응되는 데이터 청크를 로드하고, T번째 시간 구간의 디코딩 시작 지점에 위치한 I-프레임부터 디코딩을 수행할 수 있다.
T번째 트랜스코더는 디코딩된 데이터 청크를 인코딩 파라미터들에 따라 인코딩한다. 여기서, T번째 트랜스코더는 T번째 시간 구간의 디코딩 시작 지점에 위치한 프레임을 I-프레임으로 설정하여 인코딩할 수 있다.
예를 들면, 시간 구간의 크기가 4초로 지정되고, 비디오 콘텐츠의 초당 프레임 개수가 24인 경우, 프레임 구간의 시작 지점과 시간 구간의 시작 지점이 일치할 수 있다. 첫 번째 시간 구간은 96개의 프레임을 포함하고, 두 번째 시간 구간은 97번째 프레임부터 시작한다.
반면, 도 11b를 참조하면, 비디오 콘텐츠 내 I-프레임들 간 프레임 간격과 분할된 시간 구간들이 일치하지 않는다. T번째 프레임 구간의 시작 지점과 T번째 시간 구간의 시작 지점이 일치하지 않는다.
예를 들면, 시간 구간의 크기가 4초이고, 초당 프레임 개수가 23.96인 경우, 두 번째 시간 구간의 시작 지점은 96번째 프레임과 97번째 프레임 사이에 위치한다. 즉, 두 번째 시간 구간의 시작 지점은 두 번째 프레임 구간의 시작 지점과 다를 수 있다.
T번째 트랜스코더는 T번째 시간 구간의 시작 지점에 위치한 B-프레임을 기준으로 데이터 청크를 로드한다. 즉, T번째 트랜스코더가 로드한 데이터 청크의 첫 프레임은 B-프레임이다. 이 경우, T번째 트랜스코더는 T번째 시간 구간의 시작 지점에서 디코딩을 수행할 수 없게 된다.
T번째 트랜스코더는 로드한 데이터 청크 내에서 I-프레임을 탐색하고, 가장 앞에 위치한 I-프레임을 기준으로 디코딩을 시작한다.
따라서, T번째 시간 구간의 시작 지점과 T번째 시간 구간의 디코딩 시작 지점 사이에 위치한 프레임들은 트랜스코더에 로드되더라도, 트랜스코딩 과정에서 손실된다. 이는, 비디오 콘텐츠를 시청하는 사용자로 하여금 영상 품질을 저하시키는 요인이 된다.
트랜스코딩 시스템은 초당 프레임 수를 조정하여, 시간 구간의 시작점과 프레임 구간의 시작점을 일치시킬 수 있으나, 비디오 콘텐츠의 품질에 영향을 미칠 수 있으므로 효과적이지 않다.
도 12는 본 발명의 일 실시예에 따른 프레임들의 트랜스코딩 구간을 나타낸 도면이다.
도 12를 참조하면, 트랜스코딩 시스템은 주어진 프레임 구간마다 위치한 키 프레임들을의 위치를 구한다. 트랜스코딩 시스템은 비디오 콘텐츠를 복수의 시간 구간들로 분할한다.
이후, 트랜스코딩 시스템은 T번째 시간 구간의 시작 지점이 T번째 프레임 구간의 시작 지점과 일치하는지 판단한다.
트랜스코딩 시스템은 T번째 시간 구간의 시작 지점과 T번째 프레임 구간의 시작 지점이 일치하지 않는 경우, 키 프레임의 위치에 기초하여 T번째 시간 구간의 시작 지점을 조정한다.
트랜스코딩 시스템은 T번째 시간 구간의 시작 지점을 T번째 시간 구간의 시작 지점에 가장 가까운 키 프레임의 위치로 조정할 수 있다.
구체적으로, 트랜스코딩 시스템은 T번째 시간 구간의 시작 지점을 T번째 시간 구간의 시작 지점보다 이전에 위치한 키 프레임들 중 T번째 시간 구간의 시작 지점에 가장 가까운 키 프레임으로 조정할 수 있다.
마찬가지로, 트랜스코딩 시스템은 T번째 시간 구간의 종료 지점을 T번째 시간 구간의 종료 지점에 가장 가까운 키 프레임의 위치로 조정할 수 있다.
구체적으로, 트랜스코딩 시스템은 T번째 시간 구간의 종료 지점을 T번째 시간 구간의 종료 지점보다 이후에 위치한 키 프레임들 중 T번째 시간 구간의 종료 지점에 가장 가까운 키 프레임으로 조정할 수 있다.
한편, 트랜스코딩 시스템은 비디오 콘텐츠의 시작 지점과 종료 지점에 대해서는 조정하지 않고 그대로 이용할 수 있다.
트랜스코딩 시스템은 조정되지 않은 시간 구간 또는 조정된 시간 구간에 대한 정보들을 트랜스코더들에게 전송한다. 조정된 시간 구간을 수신한 트랜스코더는 비디오 콘텐츠 내에서 조정된 시간 구간에 대응되는 비디오 콘텐츠 파트를 로드하여 디코딩한다. 트랜스코더들이 할당 받은 시간 구간의 시작 지점에 키 프레임이 위치하므로, 트랜스코더들은 할당 받은 시간 구간에 대해 프레임 손실 없이 프레임들을 디코딩할 수 있다.
T번째 트랜스코더는 T번째 시간 구간의 디코딩 시작 지점부터 프레임들을 로드하여 디코딩을 수행한다. T번째 트랜스코더는 T번째 시간 구간의 조정된 종료 지점까지 디코딩을 수행한다.
이후, 트랜스코더는 조정된 시간 구간이 아니라, 조정되지 않은 시간 구간에 따라 인코딩을 수행한다. 조정된 시간 구간에 따라 디코딩된 비디오 콘텐츠 파트를 기존 시간 구간에 따라 인코딩하는 것이다.
T번째 트랜스코더는 T번째 시간 구간의 디코딩 시작 지점이 아니라, T번째 시간 구간의 시작 지점에 위치한 프레임부터 인코딩을 수행한다. 즉, T번째 시간 구간의 시작 지점에 위치한 프레임은 키 프레임으로 인코딩된다.
각 시간 구간에 대응되는 데이터 청크는 프레임 손실 없이 트랜스코딩된다.
이후, 트랜스코더는 주어진 시간 구간에 따라 트랜스코딩된 데이터 청크들을 저장한다. 트랜스코딩된 데이터 청크들은 병합되어 트랜스코딩된 비디오 콘텐츠가 된다.
도 13은 본 발명의 일 실시예에 따른 병렬 트랜스코딩 과정을 나타낸 순서도다.
본 발명의 일 실시예에 따른 병렬 트랜스코딩 방법은 주어진 프레임 간격마다 키 프레임을 포함하는 비디오 콘텐츠에 적용된다.
도 13을 참조하면, 병렬 트랜스코딩을 위한 연산 장치는 비디오 콘텐츠의 재생 시간을 복수의 시간 구간들로 분할한다(S1300).
본 발명의 일 실시예에 의하면, 연산 장치는 컴퓨팅 리소스, 사용자 단말의 재생 환경 또는 네트워크 상태 중 적어도 하나를 고려하여 시간 구간들의 크기를 결정할 수 있다.
또한, 연산 장치는 시간 구간들의 개수에 기초하여 복수의 트랜스코더를 생성한다.
연산 장치는 키 프레임의 위치에 기초하여, 복수의 시간 구간들 중 하나의 시간 구간의 시작 지점 또는 종료 지점 중 적어도 하나를 조정할 수 있다.
연산 장치는 하나의 시간 구간의 시작 지점을 시작 지점의 이전에 위치한 키 프레임들 중 시작 지점에 가장 가까운 키 프레임의 위치로 조정한다(S1302).
연산 장치는 하나의 시간 구간의 종료 지점을 종료 지점의 이후에 위치한 키 프레임들 중 종료 지점에 가장 가까운 키 프레임의 위치로 조정한다(S1304).
이 외에도, 연산 장치는 시작 지점을 시작 지점에 가장 가까운 키 프레임의 위치로 조정하거나, 종료 지점을 종료 지점에 가장 가까운 키 프레임의 위치로 조정할 수 있다.
연산 장치는 복수의 트랜스코더 중 하나의 트랜스코더를 이용하여 조정된 시간 구간에 대응하는 비디오 콘텐츠 파트를 디코딩한다(S1306).
연산 장치는 하나의 트랜스코더에게 조정된 시간 구간과 함께 트랜스코딩 파라미터들을 전송하여 비디오 콘텐츠 파트를 디코딩할 수 있다.
트랜스코더는 비디오 콘텐츠 내에서 조정된 시간 구간에 대응되는 비디오 콘텐츠 파트를 로드하여 디코딩한다. 조정된 시간 구간의 시작 지점에는 키 프레임이 위치하므로, 트랜스코더는 조정된 시간 구간의 시작 지점부터 디코딩을 수행할 수 있다. 또한, 조정된 시간 구간의 종료 지점은 다음 시간 구간의 시작 지점 및 다음 프레임 구간의 시작 지점에 해당하므로, 트랜스코더는 다음 시간 구간의 시작 지점까지 디코딩할 수 있다.
한편, 본 발명의 다른 실시예에 의하면, 트랜스코딩 파라미터들은 트랜스코딩된 비디오 콘텐츠에서 키 프레임들 간 시간 간격을 포함한다. 각 트랜스코더들은 인코딩 과정에서 트랜스코딩된 비디오 콘텐츠 내 키 프레임들 간 시간 간격을 고려하여, 키 프레임을 생성한다. 키 프레임들은 영상 재생, 역재생, 건너뛰기 등 재생의 기준점이 된다.
연산 장치는 트랜스코더를 이용함으로써 디코딩된 비디오 콘텐츠 파트를 상기 하나의 시간 구간의 범위에서 인코딩한다(S1308).
트랜스코더는 상기 하나의 시간 구간에 대응되는 범위 안에서 디코딩된 비디오 콘텐츠 파트를 인코딩한다. 인코딩된 비디오 콘텐츠 파트는 트랜스코딩된 데이터 청크가 된다.
최종적으로, 프레임 손실 없이, 각 시간 구간에 따라 트랜스코딩된 데이터 청크들이 생성된다. 트랜스코딩된 데이터 청크들은 병합됨으로써, 트랜스코딩된 비디오 콘텐츠가 되어 사용자 단말로 전송된다.
도 4 내지 8 및 도 13에서는 각 과정들을 순차적으로 실행하는 것으로 기재하고 있으나, 이는 본 발명의 일 실시예의 기술 사상을 예시적으로 설명한 것에 불과한 것이다. 다시 말해, 본 발명의 일 실시예가 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 일 실시예의 본질적인 특성에서 벗어나지 않는 범위에서 도 4 내지 8 및 도 13에 기재된 순서를 변경하여 실행하거나 각 과정들 중 하나 이상의 과정을 병렬적으로 실행하는 것으로 다양하게 수정 및 변형하여 적용 가능할 것이므로, 도 4 내지 8 및 도 13은 시계열적인 순서로 한정되는 것은 아니다.
한편, 도 4 내지 8 및 도 13에 도시된 과정들은 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 즉, 이러한 컴퓨터가 읽을 수 있는 기록매체는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광 데이터 저장장치 등의 비일시적인(non-transitory) 매체를 포함한다. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다.
또한, 본 발명의 구성 요소들은 메모리, 프로세서, 논리 회로, 룩-업 테이블(look-up table) 등과 같은 집적 회로 구조를 사용할 수 있다. 이러한 집적 회로 구조는 하나 이상의 마이크로 프로세서 또는 다른 제어 장치의 제어를 통해 본 명세서에 기술 된 각각의 기능을 실행한다. 또한, 본 발명의 구성 요소들은 특정 논리 기능을 수행하기 위한 하나 이상의 실행 가능한 명령을 포함하고 하나 이상의 마이크로 프로세서 또는 다른 제어 장치에 의해 실행되는 프로그램 또는 코드의 일부에 의해 구체적으로 구현될 수 있다. 또한, 본 발명의 구성 요소들은 각각의 기능을 수행하는 중앙 처리 장치(CPU), 마이크로 프로세서 등을 포함하거나 이에 의해 구현될 수 있다. 또한, 본 발명의 구성 요소들은 하나 이상의 프로세서에 의해 실행되는 명령어들을 하나 이상의 메모리에 저장할 수 있다.
이상의 설명은 본 실시예의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 실시예가 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 실시예의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 따라서, 본 실시예들은 본 실시예의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 실시예의 기술 사상의 범위가 한정되는 것은 아니다. 본 실시예의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 실시예의 권리범위에 포함되는 것으로 해석되어야 할 것이다.

Claims (9)

  1. 적어도 하나의 컴퓨팅 장치에 의해 구현되며, 비디오 콘텐츠를 병렬적으로 트랜스코딩(transcoding)하기 위한 방법에 있어서,
    비디오 콘텐츠를 시간에 따라 복수의 데이터 청크(chunk)로 분할하는 과정;
    상기 복수의 데이터 청크를 복수의 트랜스코더에 할당함으로써, 상기 복수의 데이터 청크를 병렬적으로 트랜스코딩하는 과정;
    상기 비디오 콘텐츠에 기초하여 각 트랜스코딩된 데이터 청크의 품질을 평가하는 과정;
    상기 각 트랜스코딩된 데이터 청크의 품질에 따라 상기 각 트랜스코딩된 데이터 청크에 대응되는 데이터 청크를 다시 트랜스코딩하는 과정; 및
    복수의 트랜스코딩된 데이터 청크를 병합함으로써, 트랜스코딩된 비디오 콘텐츠를 생성하는 과정
    을 포함하는 방법.
  2. 제1항에 있어서,
    상기 비디오 콘텐츠의 디코딩 가능 여부를 확인하는 과정; 및
    상기 비디오 콘텐츠의 세부 정보와 상기 비디오 콘텐츠의 디코딩 결과를 비교하여 상기 비디오 콘텐츠의 오류를 확인하는 과정
    을 더 포함하는 방법.
  3. 제1항에 있어서,
    상기 분할하는 과정은,
    각 데이터 청크의 오프셋 정보를 설정하는 논리적인 분할을 통해 상기 비디오 콘텐츠를 분할하는 과정
    을 포함하는 방법.
  4. 제1항에 있어서,
    상기 복수의 데이터 청크를 병렬적으로 트랜스코딩하는 과정은,
    사용자 단말의 재생 환경 또는 네트워크 상태 중 적어도 하나를 고려하여 설정된 트랜스코딩 파라미터들을 상기 복수의 트랜스코더에 전송하는 과정
    을 포함하는 방법.
  5. 제4항에 있어서,
    상기 트랜스코딩 파라미터들은,
    상기 트랜스코딩된 비디오 콘텐츠에서 키 프레임들(key frames) 간 시간 간격을 포함하는 방법.
  6. 제1항에 있어서,
    상기 데이터 청크를 다시 트랜스코딩하는 과정은,
    상기 데이터 청크의 트랜스코딩에 이용된 트랜스코딩 파라미터들을 조정하는 과정
    을 포함하는 방법.
  7. 제1항에 있어서,
    상기 비디오 콘텐츠와 연관된 오디오 콘텐츠를 트랜스코딩하는 과정; 및
    상기 트랜스코딩된 비디오 콘텐츠의 길이 정보와 상기 트랜스코딩된 오디오 콘텐츠의 길이 정보를 비교함으로써, 상기 트랜스코딩된 비디오 콘텐츠의 무결성(integrity)을 검증하는 과정
    을 더 포함하는 방법.
  8. 명령어들을 저장하는 메모리; 및
    적어도 하나의 프로세서를 포함하되,
    상기 적어도 하나의 프로세서는 상기 명령어들을 실행함으로써,
    비디오 콘텐츠를 시간에 따라 복수의 데이터 청크(chunk)로 분할하고,
    상기 복수의 데이터 청크를 복수의 트랜스코더에 할당함으로써, 상기 복수의 데이터 청크를 병렬적으로 트랜스코딩하고,
    상기 비디오 콘텐츠에 기초하여 각 트랜스코딩된 데이터 청크의 품질을 평가하고,
    상기 각 트랜스코딩된 데이터 청크의 품질에 따라 상기 각 트랜스코딩된 데이터 청크에 대응되는 데이터 청크를 다시 트랜스코딩하고,
    복수의 트랜스코딩된 데이터 청크를 병합함으로써, 트랜스코딩된 비디오 콘텐츠를 생성하는, 장치.
  9. 제1항 내지 제7항 중 어느 한 항의 방법을 실행하기 위한 컴퓨터 프로그램을 기록한 컴퓨터로 판독 가능한 기록매체.
KR1020210136485A 2021-10-14 2021-10-14 분산형 병렬 트랜스코딩 방법 및 장치 KR20230053210A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020210136485A KR20230053210A (ko) 2021-10-14 2021-10-14 분산형 병렬 트랜스코딩 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210136485A KR20230053210A (ko) 2021-10-14 2021-10-14 분산형 병렬 트랜스코딩 방법 및 장치

Publications (1)

Publication Number Publication Date
KR20230053210A true KR20230053210A (ko) 2023-04-21

Family

ID=86098449

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210136485A KR20230053210A (ko) 2021-10-14 2021-10-14 분산형 병렬 트랜스코딩 방법 및 장치

Country Status (1)

Country Link
KR (1) KR20230053210A (ko)

Similar Documents

Publication Publication Date Title
US9800883B2 (en) Parallel video transcoding
US11641486B2 (en) Reducing latency in video encoding and decoding
JP4786114B2 (ja) 映像をコード化するための方法及び装置
MX2009001387A (es) Tecnicas para codificacion y descodificacion de resolucion variable de video digital.
CN112073737A (zh) 在直播视频流应用中重新编码预测的图像帧
US9877056B1 (en) Compressed media with still images selected from a video stream
KR20230053243A (ko) 분산형 병렬 인코딩 방법 및 장치
KR20230053210A (ko) 분산형 병렬 트랜스코딩 방법 및 장치
KR20230053229A (ko) 분산형 병렬 트랜스코딩 방법 및 장치
JP2022553964A (ja) ビデオ符号化の方法、装置およびコンピュータプログラム
Suchomski et al. RETAVIC: using meta-data for real-time video encoding in multimedia servers
KR20100010605A (ko) 부호화된 아날로그 영상신호 데이터의 네트워크 전송 장치및 이 장치를 위한 영상 구성 방법
Ni User friendly H. 264 for Realtime Editing