MediaConvert에서 트랜스코딩 작업 생성 및 관리 - AWS SDK for JavaScript

AWS SDK for JavaScript V3 API 참조 안내서는 AWS SDK for JavaScript 버전 3 (V3) 의 모든 API 작업을 자세히 설명합니다.

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

MediaConvert에서 트랜스코딩 작업 생성 및 관리

JavaScript code example that applies to Node.js execution

이 Node.js 코드 예제는 다음을 보여 줍니다.

  • MediaConvert에 사용할 리전별 엔드포인트를 지정하는 방법

  • MediaConvert에서 트랜스코딩 작업을 생성하는 방법

  • 트랜스코딩 작업을 취소하는 방법.

  • 완료된 트랜스코딩 작업에 대한 JSON을 검색하는 방법.

  • 최근에 생성된 최대 20개 작업에 대한 JSON 배열을 검색하는 방법.

시나리오

이 예에서는 Node.js 모듈을 사용하여 트랜스코딩 작업을 생성하고 관리할 MediaConvert를 직접적으로 호출합니다. 이 코드는 SDK for JavaScript에서 MediaConvert 클라이언트 클래스의 다음 메서드를 사용하여 이 작업을 수행합니다.

사전 필수 작업

이 예제를 설정하고 실행하려면 먼저 다음 작업을 완료합니다.

  • 이러한 노드 TypeScript 예를 실행하도록 프로젝트 환경을 설정하고 필수 AWS SDK for JavaScript 모듈과 타사 모듈을 설치합니다. GitHub의 지침을 따릅니다.

  • 사용자 자격 증명을 사용하여 공유 구성 파일을 생성합니다. 공유 보안 인증 파일 제공에 관한 자세한 내용은 AWS SDK 및 도구 참조 가이드Shared config and credentials files 단원을 참조하세요.

  • 작업 입력 파일 및 출력 파일을 위한 스토리지를 제공하는 Amazon S3 버킷을 생성하고 구성합니다. 자세한 내용은 AWS Elemental MediaConvert 사용 설명서Create storage for files 단원을 참조하세요.

  • 입력 스토리지를 위해 프로비저닝한 Amazon S3 버킷에 입력 비디오를 업로드합니다. 지원되는 입력 비디오 코덱 및 컨테이너 목록은 AWS Elemental MediaConvert 사용 설명서Supported input codecs and containers 단원을 참조하세요.

  • 출력 파일이 저장된 Amazon S3 버킷 및 입력 파일에 대한 액세스 권한을 MediaConvert에 부여하는 IAM 역할을 생성합니다. 자세한 내용은 AWS Elemental MediaConvert 사용 설명서Set up IAM permissions 단원을 참조하세요.

중요

이 예에서는 ECMAScript6(ES6)를 사용합니다. 따라서 Node.js 버전 13.x 이상이 필요합니다. 최신 버전의 Node.js를 다운로드하여 설치하려면 Node.js downloads를 참조하세요.

그러나 CommonJS 구문을 사용하려는 경우 JavaScript ES6/CommonJS 구문 단원을 참조하세요.

SDK 구성

필수 클라이언트 및 패키지 다운로드를 포함하여 앞서 나와 있는 것처럼 SDK를 구성합니다. MediaConvert는 각 계정에 사용자 지정 엔드포인트를 사용하므로 MediaConvert 클라이언트 클래스도 리전별 엔드포인트를 사용하도록 구성해야 합니다. 이렇게 하려면 mediaconvert(endpoint)에서 endpoint 파라미터를 설정합니다.

// Import required AWS-SDK clients and commands for Node.js import { CreateJobCommand } from "@aws-sdk/client-mediaconvert"; import { emcClient } from "./libs/emcClient.js";

단순 트랜스코딩 작업 정의

libs 디렉터리를 생성하고 파일 이름이 emcClient.js인 Node.js 모듈을 생성합니다. 이 모듈에 아래 코드를 복사하여 붙여 넣으면 MediaConvert 클라이언트 객체가 생성됩니다. REGION을 AWS 리전으로 바꿉니다. ENDPOINT를 MediaConvert 계정 엔드포인트로 바꿉니다. MediaConvert 콘솔의 계정 페이지에서 이 엔드포인트를 확인할 수 있습니다.

import { MediaConvertClient } from "@aws-sdk/client-mediaconvert"; // Set the account end point. const ENDPOINT = { endpoint: "https://ENDPOINT_UNIQUE_STRING.mediaconvert.REGION.amazonaws.com", }; // Set the MediaConvert Service Object const emcClient = new MediaConvertClient(ENDPOINT); export { emcClient };

이 코드 예는 여기 GitHub에서 찾을 수 있습니다.

파일 이름이 emc_createjob.js인 Node.js 모듈을 생성합니다. 필수 클라이언트 및 패키지 설치를 포함하여 앞서 나와 있는 것처럼 SDK를 구성해야 합니다. 트랜스코드 작업 파라미터를 정의하는 JSON을 생성합니다.

이러한 파라미터는 매우 세부적입니다. AWS Elemental MediaConvert 콘솔을 사용하면 콘솔에서 작업 설정을 선택한 다음, 작업 섹션 하단에서 작업 JSON 표시를 선택하여 JSON 작업 파라미터를 생성할 수 있습니다. 이 예제는 단순 작업용 JSON을 보여줍니다.

참고

JOB_QUEUE_ARN을 MediaConvert 작업 대기열로 바꾸고, IAM_ROLE_ARN을 IAM 역할의 Amazon 리소스 이름(ARN)으로 바꾸며, OUTPUT_BUCKET_NAME을 대상 버킷 이름(예: "s3://OUTPUT_BUCKET_NAME/")으로 바꾸고, INPUT_BUCKET_AND_FILENAME을 입력 버킷 및 파일 이름(예: "s3://INPUT_BUCKET/FILE_NAME")으로 바꿉니다.

const params = { Queue: "JOB_QUEUE_ARN", //JOB_QUEUE_ARN UserMetadata: { Customer: "Amazon", }, Role: "IAM_ROLE_ARN", //IAM_ROLE_ARN Settings: { OutputGroups: [ { Name: "File Group", OutputGroupSettings: { Type: "FILE_GROUP_SETTINGS", FileGroupSettings: { Destination: "OUTPUT_BUCKET_NAME", //OUTPUT_BUCKET_NAME, e.g., "s3://BUCKET_NAME/" }, }, Outputs: [ { VideoDescription: { ScalingBehavior: "DEFAULT", TimecodeInsertion: "DISABLED", AntiAlias: "ENABLED", Sharpness: 50, CodecSettings: { Codec: "H_264", H264Settings: { InterlaceMode: "PROGRESSIVE", NumberReferenceFrames: 3, Syntax: "DEFAULT", Softness: 0, GopClosedCadence: 1, GopSize: 90, Slices: 1, GopBReference: "DISABLED", SlowPal: "DISABLED", SpatialAdaptiveQuantization: "ENABLED", TemporalAdaptiveQuantization: "ENABLED", FlickerAdaptiveQuantization: "DISABLED", EntropyEncoding: "CABAC", Bitrate: 5000000, FramerateControl: "SPECIFIED", RateControlMode: "CBR", CodecProfile: "MAIN", Telecine: "NONE", MinIInterval: 0, AdaptiveQuantization: "HIGH", CodecLevel: "AUTO", FieldEncoding: "PAFF", SceneChangeDetect: "ENABLED", QualityTuningLevel: "SINGLE_PASS", FramerateConversionAlgorithm: "DUPLICATE_DROP", UnregisteredSeiTimecode: "DISABLED", GopSizeUnits: "FRAMES", ParControl: "SPECIFIED", NumberBFramesBetweenReferenceFrames: 2, RepeatPps: "DISABLED", FramerateNumerator: 30, FramerateDenominator: 1, ParNumerator: 1, ParDenominator: 1, }, }, AfdSignaling: "NONE", DropFrameTimecode: "ENABLED", RespondToAfd: "NONE", ColorMetadata: "INSERT", }, AudioDescriptions: [ { AudioTypeControl: "FOLLOW_INPUT", CodecSettings: { Codec: "AAC", AacSettings: { AudioDescriptionBroadcasterMix: "NORMAL", RateControlMode: "CBR", CodecProfile: "LC", CodingMode: "CODING_MODE_2_0", RawFormat: "NONE", SampleRate: 48000, Specification: "MPEG4", Bitrate: 64000, }, }, LanguageCodeControl: "FOLLOW_INPUT", AudioSourceName: "Audio Selector 1", }, ], ContainerSettings: { Container: "MP4", Mp4Settings: { CslgAtom: "INCLUDE", FreeSpaceBox: "EXCLUDE", MoovPlacement: "PROGRESSIVE_DOWNLOAD", }, }, NameModifier: "_1", }, ], }, ], AdAvailOffset: 0, Inputs: [ { AudioSelectors: { "Audio Selector 1": { Offset: 0, DefaultSelection: "NOT_DEFAULT", ProgramSelection: 1, SelectorType: "TRACK", Tracks: [1], }, }, VideoSelector: { ColorSpace: "FOLLOW", }, FilterEnable: "AUTO", PsiControl: "USE_PSI", FilterStrength: 0, DeblockFilter: "DISABLED", DenoiseFilter: "DISABLED", TimecodeSource: "EMBEDDED", FileInput: "INPUT_BUCKET_AND_FILENAME", //INPUT_BUCKET_AND_FILENAME, e.g., "s3://BUCKET_NAME/FILE_NAME" }, ], TimecodeConfig: { Source: "EMBEDDED", }, }, };

트랜스코딩 작업 생성

작업 파라미터 JSON을 생성한 후 비동기 run 메서드를 직접적으로 호출하여 MediaConvert 클라이언트 서비스 객체를 간접적으로 호출해서 파라미터를 전달합니다. 생성된 작업의 ID는 응답 data에서 반환됩니다.

const run = async () => { try { const data = await emcClient.send(new CreateJobCommand(params)); console.log("Job created!", data); return data; } catch (err) { console.log("Error", err); } }; run();

예를 실행하려면 명령 프롬프트에서 다음을 입력합니다.

node emc_createjob.js

이 전체 코드 예는 여기 GitHub에서 찾을 수 있습니다.

트랜스코딩 작업 취소

libs 디렉터리를 생성하고 파일 이름이 emcClient.js인 Node.js 모듈을 생성합니다. 이 모듈에 아래 코드를 복사하여 붙여 넣으면 MediaConvert 클라이언트 객체가 생성됩니다. REGION을 AWS 리전으로 바꿉니다. ENDPOINT를 MediaConvert 계정 엔드포인트로 바꿉니다. MediaConvert 콘솔의 계정 페이지에서 이 엔드포인트를 확인할 수 있습니다.

import { MediaConvertClient } from "@aws-sdk/client-mediaconvert"; // Set the account end point. const ENDPOINT = { endpoint: "https://ENDPOINT_UNIQUE_STRING.mediaconvert.REGION.amazonaws.com", }; // Set the MediaConvert Service Object const emcClient = new MediaConvertClient(ENDPOINT); export { emcClient };

이 코드 예는 여기 GitHub에서 찾을 수 있습니다.

파일 이름이 emc_canceljob.js인 Node.js 모듈을 생성합니다. 필수 클라이언트 및 패키지 다운로드를 포함하여 앞서 나와 있는 것처럼 SDK를 구성해야 합니다. 취소할 작업의 ID가 포함된 JSON을 생성합니다. 그런 다음, 파라미터를 전달하는 MediaConvert 클라이언트 서비스 객체를 간접적으로 호출하기 위한 promise를 생성하여 CancelJobCommand 메서드를 직접적으로 호출합니다. promise 콜백에서 응답을 처리합니다.

참고

JOB_ID를 취소할 작업의 ID로 바꿉니다.

// Import required AWS-SDK clients and commands for Node.js import { CancelJobCommand } from "@aws-sdk/client-mediaconvert"; import { emcClient } from "./libs/emcClient.js"; // Set the parameters const params = { Id: "JOB_ID" }; //JOB_ID const run = async () => { try { const data = await emcClient.send(new CancelJobCommand(params)); console.log("Job " + params.Id + " is canceled"); return data; } catch (err) { console.log("Error", err); } }; run();

예를 실행하려면 명령 프롬프트에서 다음을 입력합니다.

node ec2_canceljob.js

이 코드 예는 여기 GitHub에서 찾을 수 있습니다.

최근 트랜스코딩 작업 나열

libs 디렉터리를 생성하고 파일 이름이 emcClient.js인 Node.js 모듈을 생성합니다. 이 모듈에 아래 코드를 복사하여 붙여 넣으면 MediaConvert 클라이언트 객체가 생성됩니다. REGION을 AWS 리전으로 바꿉니다. ENDPOINT를 MediaConvert 계정 엔드포인트로 바꿉니다. MediaConvert 콘솔의 계정 페이지에서 이 엔드포인트를 확인할 수 있습니다.

import { MediaConvertClient } from "@aws-sdk/client-mediaconvert"; // Set the account end point. const ENDPOINT = { endpoint: "https://ENDPOINT_UNIQUE_STRING.mediaconvert.REGION.amazonaws.com", }; // Set the MediaConvert Service Object const emcClient = new MediaConvertClient(ENDPOINT); export { emcClient };

이 코드 예는 여기 GitHub에서 찾을 수 있습니다.

파일 이름이 emc_listjobs.js인 Node.js 모듈을 생성합니다. 필수 클라이언트 및 패키지 설치를 포함하여 앞서 나와 있는 것처럼 SDK를 구성해야 합니다.

목록을 ASCENDING 또는 DESCENDING 순서로 정렬할지 여부, 확인할 작업 대기열의 Amazon 리소스 이름(ARN), 포함할 작업의 상태 등을 지정하는 값을 포함하여 파라미터 JSON을 생성합니다. 그런 다음, 파라미터를 전달하는 MediaConvert 클라이언트 서비스 객체를 간접적으로 호출하기 위한 promise를 생성하여 ListJobsCommand 메서드를 직접적으로 호출합니다.

참고

QUEUE_ARN을 확인할 작업 대기열의 Amazon 리소스 이름(ARN)으로 바꾸고 STATUS를 대기열의 상태로 바꿉니다.

// Import required AWS-SDK clients and commands for Node.js import { ListJobsCommand } from "@aws-sdk/client-mediaconvert"; import { emcClient } from "./libs/emcClient.js"; // Set the parameters const params = { MaxResults: 10, Order: "ASCENDING", Queue: "QUEUE_ARN", Status: "SUBMITTED", // e.g., "SUBMITTED" }; const run = async () => { try { const data = await emcClient.send(new ListJobsCommand(params)); console.log("Success. Jobs: ", data.Jobs); } catch (err) { console.log("Error", err); } }; run();

예를 실행하려면 명령 프롬프트에서 다음을 입력합니다.

node emc_listjobs.js

이 코드 예는 여기 GitHub에서 찾을 수 있습니다.