이 페이지에서는 기능, 용어, 유용한 개념을 포함하여 Transcoder API의 기술적 개요를 설명합니다. Transcoder API는 Google Cloud에서 트랜스코딩 작업을 제출, 모니터링, 관리할 수 있게 해주는 REST와 RPC API를 구현합니다. Transcoder API를 사용하여 작업을 제출하려면 먼저 미디어 애셋을 Cloud Storage에 업로드합니다. 작업이 처리되면 Transcoder API는 결과 미디어를 다시 Cloud Storage에 저장합니다.
특징
Transcoder API에서는 다음 기능이 지원됩니다.
- MPEG-4(MP4), HTTP 동적 적응형 스트리밍(DASH, MPEG-DASH라고도 함), HTTP 라이브 스트리밍(HLS) 등 다양한 컨테이너 형식의 출력
- 오디오 전용 출력을 포함하여 다양한 비트 전송률 및 해상도에서 출력
- High Dynamic Range(HDR) 형식으로 변환
- 다음을 포함하여 동영상 출력을 프로그래매틱 방식으로 향상시킵니다.
- 비트 전송률과 같은 하위 수준 인코딩 매개변수 구성
- 포괄적인 수정 목록을 사용하여 기존 미디어 콘텐츠 리믹스
- 작업 모드를 지연 시간이 짧은 대화형 모드 또는 일괄 모드로 설정
- 오디오 소리세기 표준화 지정
- 디지털 권한 관리 및 콘텐츠 보호를 지원하도록 출력 동영상의 암호화를 구성
- 동영상 플레이어 클라이언트가 광고를 삽입할 수 있도록 광고 키프레임 삽입
- 생성된 동영상 프레임의 스프라이트 시트에서 미리보기 이미지 만들기
- 작업 템플릿을 만들어 트랜스코딩 작업의 커스텀 구성이나 복잡한 구성을 저장 및 재사용
MP4 및 MPEG-DASH 표준에 대한 자세한 내용은 The Move Picture Expert Group 웹사이트를 참조하세요. HLS 표준에 대한 자세한 내용은 HTTP 라이브 스트리밍을 참조하세요.
콘텐츠 암호화에 지원되는 컨테이너
다음 표에서는 콘텐츠 암호화에 지원되는 컨테이너를 보여줍니다.
스트리밍 프로토콜 | 컨테이너 | DRM 시스템 | 암호화 스키마 |
---|---|---|---|
HLS | TS | ClearKey | aes128 |
HLS | TS | FairPlay | sampleAes |
HLS | fMP4 | FairPlay | mpegCenc cbcs만 해당 |
MPEG-DASH | fMP4 | Widevine | mpegCenc cenc 또는 cbcs |
MPEG-DASH | fMP4 | PlayReady | mpegCenc cenc 또는 cbcs |
액세스 제어
Transcoder API 액세스 제어 모델은 Google의 Identity and Access Management를 기반으로 합니다. IAM의 세분화된 권한을 통해 미디어 데이터로 수행할 수 있는 작업과 사용자를 제어할 수 있습니다.
한도
다음 표에서는 트랜스코딩 작업별 한도를 보여줍니다.
작업 한도 | |
---|---|
최대 입력 너비 | 4096px |
최대 입력 높이 | 4096px |
최대 출력 너비 | 4096px |
최대 출력 높이 | 2160px |
총 출력 크기 | 400GB |
최대 EditList 기간 | 24시간 |
최대 동영상 스트림 수 | 70 |
최대 오디오 스트림 수 | 50 |
최대 텍스트 스트림 수 | 50 |
최대 mux 스트림 수 | 100 |
최대 매니페스트 수 | 100 |
최대 스프라이트 시트 수 | 10 |
개념
이 섹션에서는 동영상 파일과 관련된 중요 개념과 Transcoder API에 사용되는 방법을 설명합니다.
동영상 파일의 구성요소
각 동영상 파일에는 전체 파일의 래퍼인 컨테이너가 있습니다. Transcoder API는 MuxStreams를 사용해서 컨테이너를 정의합니다. 각 컨테이너에는 파일에 대한 동영상, 오디오, 자막 텍스트 추적 인코딩을 정의하는 ElementaryStreams 집합이 포함되어 있습니다. 동영상 및 오디오는 코덱을 사용해서 압축됩니다.
다음 예시에서 동영상 압축에는 H.264가 사용되고 오디오 압축에는 AAC가 사용됩니다. 둘 다 MP4 컨테이너에 있습니다.
그림 1. 동영상 파일(왼쪽) 및 예시 MP4 파일(오른쪽)의 구성요소
스트리밍 프로토콜 구조
미디어 스트리밍을 위해 콘텐츠 제공업체는 동일한 콘텐츠를 여러 비트 전송률(초당 킬로비트 수 기준)로 인코딩합니다. 그런 후 제공업체는 서로 다른 비트 전송률을 가진 여러 파일로 연결되는 매니페스트 파일을 생성합니다. 스트리밍 미디어 플레이어는 이 매니페스트 파일을 사용해서 적합한 파일을 선택한 후 한 번에 몇 초 정도씩 동영상을 가져옵니다. 각 비트 전송은 플레이어에서 지원되는 기능에 따라 단일 파일 또는 여러 개의 짧은 파일일 수 있습니다.
일반적으로 미디어의 서로 다른 해상도는 여러 비트 전송률에 맞게 인코딩됩니다. 예를 들어 낮은 비트 전송률은 높은 화질(HD) 대신 표준 화질(SD)로 인코딩됩니다. 비트 전송률, 해상도, 코덱 집합을 적응형 비트 전송률(ABR) 래더라고 부릅니다. 스트리밍 콘텐츠 제공업체는 CDN 비용, 사용자 기기 유형, 리전 내 대역폭, 기타 요소에 따라 자신의 래더를 조정할 수 있습니다.
그림 2. 스트리밍 프로토콜 구조의 구성요소(상단)와 HTTP 라이브 스트리밍(HLS) 구현의 예시(하단)
용어
이 섹션에서는 Transcoder API 작업에 유용한 용어를 제공합니다.
광고 시점
광고 시점은 미디어 재생 전 또는 도중에 표시되는 짧은 광고입니다. Transcoder API는 작업 구성의 광고 시점 키프레임을 지원합니다. Transcoder API는 광고를 삽입 또는 재생하거나 미디어 재생을 중지하지 않으며 동영상 플레이어 클라이언트는 키프레임을 처리해야 합니다.
Atom
Atom은 동영상의 메타데이터와 위치를 정의할 수 있는 기본 데이터 구조입니다. 동영상은 오디오, 편집, 텍스트 Atom을 포함한 여러 가지 유형의 Atom에 대한 복잡하고 중첩된 계층 구조를 구성할 수 있습니다.
오디오 Atom
오디오 Atom은 기본 스트림의 오디오를 수정 목록에 매핑합니다.
코덱 유형 및 프로필
동영상 스트림의 코덱을 선택할 때 H.264와 같은 코덱 유형과 기본 high
프로필과 같은 프로필을 지정합니다.
컨테이너
컨테이너는 미디어 파일과 메타데이터를 비롯한 다중화 스트림의 다양한 구성요소 간의 관계를 설명하는 래퍼입니다. Transcoder API에서는 MP4, MPEG-DASH, HLS 컨테이너 형식을 지원합니다.
Atom 수정
편집 Atom은 수정 목록에 결합하려는 스트림의 개별 세그먼트에 대한 시작 및 종료 오프셋을 정의합니다.
목록 수정
수정 목록은 수정 시퀀스를 트랜스코딩 작업에서 결과 파일이나 매니페스트의 타임라인으로 정의합니다.
기초 스트림
기초 스트림은 오디오, 동영상 또는 자막 텍스트 트랙과 같은 입력 파일 인코딩입니다. 스트림을 다른 출력 형식에 매핑하고 공유하기 전에 기초 스트림을 패키징해야 합니다.
엔트로피 인코딩
엔트로피 인코딩은 Transcoder API에서 지원하는 무손실 압축의 한 형태입니다. 작업을 구성할 때 CAVLC(Context-Adaptive Variable-Length Coding) 또는 CABAC(Context-Adaptive Binary Arithmetic Coding) 엔트로피 코덱을 지정할 수 있습니다.
작업
작업은 Transcoder API를 사용하여 작업을 관리하는 기본 단위입니다. Transcoder API에 작업을 제출하면 리전이라고 하는 지리적 위치에서 비동기식으로 처리됩니다. 리전의 모든 작업을 나열하고 관리할 수 있습니다.
작업 수명 주기에는 준비, 트랜스코딩, 패키지 등 3가지 단계가 포함됩니다.
- 준비
- Cloud Storage에서 입력 다운로드
- 입력 분석
- 입력 검증
- 트랜스코드
- 입력에서 트랜스코딩 작업 실행
- 패키지
- 결합 입력
- 입력 다중화
- Cloud Storage로 출력 업로드
작업에 업데이트된 상태가 있습니다.
이 서비스는 error
필드를 사용하여 오류를 보고합니다.
작업 구성
작업 구성은 작업을 만들고 Transcoder API에 제출할 때 맞춤설정할 수 있는 다양한 설정을 나타냅니다. 편집 목록과 출력 매니페스트의 광고 시점 태그를 삽입할 위치와 같은 구성 설정을 지정할 수 있습니다. Google Cloud 리전에서 사용할 수 있도록 재사용 가능한 작업 구성을 작업 템플릿으로 만들 수 있습니다.
작업 모드
Transcoder API는 대화형 및 일괄이라는 두 가지 작업 모드를 지원합니다.
대화형 모드는 기본 작업 모드입니다. 작업 처리를 최대한 빨리 시작하거나 먼저 실행할 작업을 보다 세밀하게 제어하려면 이 모드를 사용합니다. 이 모드에서 동시 실행 작업 수 할당량은 동시에 실행되는 작업 수를 제어합니다. 이 할당량에 도달하면 시작하려는 모든 작업이 거부됩니다.
일괄 처리 모드를 사용하면 처리 지연 시간이 기본 대화형 모드로 제출된 작업만큼 중요하지 않은 많은 작업을 제출할 수 있습니다. 이 모드에서 작업의 작업 처리 우선순위를 지정할 수 있습니다. 일괄 모드에서 제출된 우선순위 값이 동일한 작업은 선입 선출 큐에 배치되고 실행 대기 중인 작업 상태는 PENDING
이 됩니다. 이 모드에서 일괄 대기 작업 수 할당량은 큐에 추가된 작업 수를 제어합니다. 이 할당량에 도달하면 시작하려는 모든 작업이 거부됩니다. 작업이 실행되면 작업이 RUNNING
상태로 전환됩니다. 일괄 동시 실행 작업 수 할당량은 동시에 실행되는 작업 수를 제어합니다.
두 모드를 동시에 사용할 수 있습니다. 한 모드가 다른 모드보다 우선되지 않습니다. 작업 모드 설정에 대한 자세한 내용은 일괄 모드에서 작업 만들기를 참조하세요.
작업 템플릿
기본적으로 Transcoder API는 작업 구성을 채울 수 있도록 preset/web-hd
라는 미리 설정된 템플릿을 적용합니다. 이 작업 구성은 다음 출력 파일을 생성합니다.
manifest.m3u8
: HLS 미디어 스트림의 기본 재생목록입니다. 이 파일에는 출력의 고화질(HD) 변형 및 출력의 표준 화질(SD) 변형에 대한 재생목록 참조가 포함됩니다.media-hd.m3u8
: 고화질 변형의 재생목록media-hd0000000000.ts
: 고화질 영상 세그먼트 파일
media-sd.m3u8
: 표준 화질 변형의 재생목록media-sd0000000000.ts
: 표준 화질 영상 세그먼트 파일
manifest.mpd
: MPEG-DASH 미디어 스트림의 재생목록입니다. 이 파일에는 동영상 전용 및 오디오 전용 세그먼트 파일에 대한 참조가 포함됩니다.audio-only0000000000.m4s
: 오디오 전용 세그먼트 파일video-only-hd0000000000.m4s
: 고화질 동영상 전용 세그먼트 파일video-only-sd0000000000.m4s
: 표준 화질 동영상 전용 세그먼트 파일
sd.mp4
: 독립형 표준 화질 동영상 파일hd.mp4
: 독립형 고화질 동영상 파일
자체 커스텀 작업 템플릿을 만들고 관리하며 작업을 만들 때 템플릿을 지정할 수 있습니다.
사전 처리
사전 처리는 기본 트랜스코딩 전에 수행되는 작업 단계입니다.
사전 처리 구성
사전 처리 구성은 작업의 트랜스코딩 단계 전에 동영상에 적용할 수 있는 설정을 나타냅니다. 이 구성의 일부로 자르기 또는 패딩을 적용할 수 있습니다.
속도 제어 모드
속도 제어 모드는 고정 속도 계수(CRF) 모드나 가변 비트 전송률(VBR) 모드를 사용하여 작업을 처리할지 여부를 나타냅니다. CRF는 처리된 미디어 애셋 전체에 일정한 품질을 보장합니다. VBR은 인코딩 프로세스를 최적화하여 처리된 미디어 애셋의 파일 크기를 줄입니다. 스트리밍 사용 사례의 경우 VBR 속도 제어 모드를 선택합니다. 보관용이라면 CRF 속도 제어 모드를 선택합니다.
매니페스트
매니페스트는 클라이언트에 제공되는 적응형 미디어 스트림의 콘텐츠와 메타데이터에 대한 설명입니다. Transcoder API에서는 파일 이름, 다중화 스트림 목록, HLS 또는 MPEG-DASH 중 하나여야 하는 매니페스트 유형으로 매니페스트를 출력하는 작업을 구성할 수 있습니다.
텍스트 Atom
텍스트 Atom은 기초 스트림의 텍스트를 수정 목록에 매핑합니다.
텍스트 스트림
텍스트 스트림은 자막과 같이 동영상과 연결된 텍스트 데이터를 인코딩합니다.
다음 단계
- 빠른 시작 사용해 보기
- 특정 Transcoder API 태스크를 완료하는 방법 알아보기