Transcoder API๋ฅผ ์ฌ์ฉํ์ฌ ๋์์ ํธ๋์ค์ฝ๋ฉ
์ด ํ์ด์ง์์๋ Transcoder API ๋ฐ curl
, Windows PowerShell ๋๋ ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ธฐ๋ณธ ์ค์ ์ ์ฌ์ฉํ์ฌ ๊ธฐ๋ณธ ๋์์ ํธ๋์ค์ฝ๋ฉ ์์
์ ๋ง๋๋ ๋ฐฉ๋ฒ์ ์ค๋ช
ํฉ๋๋ค.
๋ค์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ์ค ํ๋๋ฅผ ์ฌ์ฉํ์ฌ Google Cloud ์ฝ์์์ ์ด ๋น ๋ฅธ ์์์ ์ง์ ์ํํ ์๋ ์์ต๋๋ค.
์์ํ๊ธฐ ์ ์
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
Install the Google Cloud CLI.
-
์ธ๋ถ ID ๊ณต๊ธ์ ์ฒด(IdP)๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋จผ์ ์ ํด ID๋ก gcloud CLI์ ๋ก๊ทธ์ธํด์ผ ํฉ๋๋ค.
-
gcloud CLI๋ฅผ ์ด๊ธฐํํ๋ ค๋ฉด, ๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
gcloud init
-
Create or select a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM roleโyou can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Transcoder API:
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles.gcloud services enable transcoder.googleapis.com
-
Create local authentication credentials for your user account:
gcloud auth application-default login
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
-
Grant roles to your user account. Run the following command once for each of the following IAM roles:
roles/transcoder.admin, roles/storage.admin
gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
Replace the following:
PROJECT_ID
: your project ID.USER_IDENTIFIER
: the identifier for your user accountโfor example,myemail@example.com
.ROLE
: the IAM role that you grant to your user account.
-
Install the Google Cloud CLI.
-
์ธ๋ถ ID ๊ณต๊ธ์ ์ฒด(IdP)๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋จผ์ ์ ํด ID๋ก gcloud CLI์ ๋ก๊ทธ์ธํด์ผ ํฉ๋๋ค.
-
gcloud CLI๋ฅผ ์ด๊ธฐํํ๋ ค๋ฉด, ๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
gcloud init
-
Create or select a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM roleโyou can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Transcoder API:
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles.gcloud services enable transcoder.googleapis.com
-
Create local authentication credentials for your user account:
gcloud auth application-default login
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
-
Grant roles to your user account. Run the following command once for each of the following IAM roles:
roles/transcoder.admin, roles/storage.admin
gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
Replace the following:
PROJECT_ID
: your project ID.USER_IDENTIFIER
: the identifier for your user accountโfor example,myemail@example.com
.ROLE
: the IAM role that you grant to your user account.
-
Create a Cloud Storage bucket and configure it as follows:
-
Set the storage class to
S
(ํ์ค). -
์คํ ๋ฆฌ์ง ์์น๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ์ค์ ํฉ๋๋ค.
US
(๋ฏธ๊ตญ) -
BUCKET_NAME
์ ๊ณ ์ ํ ๋ฒํท ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ๋๋ค. ๋ฒํท ๋ค์์คํ์ด์ค๋ ์ ์ญ์ ์ด๋ฉฐ ๊ณต๊ฐ๋ก ํ์๋๋ฏ๋ก ๋ฒํท ์ด๋ฆ์ ๋ฏผ๊ฐํ ์ ๋ณด๋ฅผ ํฌํจํด์๋ ์ ๋ฉ๋๋ค. - ํด๋ ๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํ๊ณ ์ด๋ฆ์ ์ ๋ ฅํ์ฌ ์ธ์ฝ๋ฉ๋ ๋์์ ์ถ๋ ฅ์ ์ ์ฅํ ํด๋๋ฅผ ๋ง๋ญ๋๋ค.
gcloud storage buckets create gs://BUCKET_NAME --default-storage-class STANDARD --location US
-
Set the storage class to
- Google Cloud ์ฝ์์์ Cloud Storage ๋ธ๋ผ์ฐ์ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
Cloud Storage ๋ธ๋ผ์ฐ์ ํ์ด์ง๋ก ์ด๋ - ๋ฒํท ์ด๋ฆ์ ํด๋ฆญํ์ฌ ์ฝ๋๋ค.
- ํ์ผ ์ ๋ก๋๋ฅผ ํด๋ฆญํฉ๋๋ค.
- ๋ก์ปฌ ๋จธ์ ์์ ์ ๋ก๋ํ ๋์์ ํ์ผ์ ์ ํํฉ๋๋ค.
PROJECT_ID
: IAM ์ค์ ์ ๋์ด๋ Google Cloud ํ๋ก์ ํธ ID์ ๋๋ค.LOCATION
: ์์ ์ด ์คํ๋ ์์น์ ๋๋ค. ์ง์๋๋ ๋ฆฌ์ ์ค ํ๋๋ฅผ ์ฌ์ฉํฉ๋๋ค.์์น ํ์us-central1
us-west1
us-west2
us-east1
us-east4
southamerica-east1
northamerica-northeast1
asia-east1
asia-northeast1
asia-northeast3
asia-south1
asia-southeast1
australia-southeast1
europe-west1
europe-west2
europe-west4
me-west1
me-central1
me-central2
STORAGE_BUCKET_NAME
: ๋ง๋ Cloud Storage ๋ฒํท์ ์ด๋ฆ์ ๋๋ค.STORAGE_INPUT_VIDEO
: Cloud Storage ๋ฒํท์ ์๋ ํธ๋์ค์ฝ๋ฉํ๋ ๋์์์ ์ด๋ฆ์ ๋๋ค(์:my-vid.mp4
). ์ด ํ๋๋ ๋ฒํท์์ ๋ง๋ ํด๋๋ฅผ ๊ณ ๋ คํด์ผ ํฉ๋๋ค(์:input/my-vid.mp4
).STORAGE_OUTPUT_FOLDER
: ์ธ์ฝ๋ฉ๋ ๋์์ ์ถ๋ ฅ์ ์ ์ฅํ Cloud Storage ํด๋ ์ด๋ฆ์ ๋๋ค.gcloud
๋ช ๋ น์ด๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ๋ฐ๊ฟ๋๋ค.- STORAGE_BUCKET_NAME: ๋ง๋ Cloud Storage ๋ฒํท์ ์ด๋ฆ์ ๋๋ค.
- STORAGE_INPUT_VIDEO: Cloud Storage ๋ฒํท์ ์๋ ํธ๋์ค์ฝ๋ฉํ๋ ๋์์์ ์ด๋ฆ์
๋๋ค(์:
my-vid.mp4
). ์ด ํ๋๋ ๋ฒํท์์ ๋ง๋ ํด๋๋ฅผ ๊ณ ๋ คํด์ผ ํฉ๋๋ค(์:input/my-vid.mp4
). - LOCATION: ์์
์ด ์คํ๋ ์์น์
๋๋ค. ์ง์๋๋ ๋ฆฌ์ ์ค ํ๋๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์์น ํ์
us-central1
us-west1
us-west2
us-east1
us-east4
southamerica-east1
northamerica-northeast1
asia-east1
asia-northeast1
asia-northeast3
asia-south1
asia-southeast1
australia-southeast1
europe-west1
europe-west2
europe-west4
me-west1
me-central1
me-central2
- STORAGE_OUTPUT_FOLDER: ์ธ์ฝ๋ฉ๋ ๋์์ ์ถ๋ ฅ์ ์ ์ฅํ Cloud Storage ํด๋ ์ด๋ฆ์ ๋๋ค.
- ๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
๋ค์๊ณผ ๋น์ทํ ์๋ต์ด ํ์๋ฉ๋๋ค.gcloud transcoder jobs create \ --input-uri="gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_VIDEO" \ --location=LOCATION \ --output-uri="gs://STORAGE_BUCKET_NAME/STORAGE_OUTPUT_FOLDER/"
{ "config": { ... }, "createTime": CREATE_TIME, "name": "projects/PROJECT_NUMBER/locations/LOCATION/jobs/JOB_ID", "state": "PENDING", "ttlAfterCompletionDays": 30 }
JOB_ID
: ๋ง๋ ์์ ์ ID์ ๋๋ค.PROJECT_ID
: Google Cloud ํ๋ก์ ํธ ID์ ๋๋ค.LOCATION
: ์์ ์์น์ ๋๋ค. ์ง์๋๋ ๋ฆฌ์ ์ค ํ๋๋ฅผ ์ฌ์ฉํฉ๋๋ค.์์น ํ์us-central1
us-west1
us-west2
us-east1
us-east4
southamerica-east1
northamerica-northeast1
asia-east1
asia-northeast1
asia-northeast3
asia-south1
asia-southeast1
australia-southeast1
europe-west1
europe-west2
europe-west4
me-west1
me-central1
me-central2
gcloud
๋ช ๋ น์ด๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ๋ฐ๊ฟ๋๋ค.- JOB_ID: ๋ง๋ ์์ ์ ID์ ๋๋ค.
- LOCATION: ์์
์์น์
๋๋ค. ์ง์๋๋ ๋ฆฌ์ ์ค ํ๋๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์์น ํ์
us-central1
us-west1
us-west2
us-east1
us-east4
southamerica-east1
northamerica-northeast1
asia-east1
asia-northeast1
asia-northeast3
asia-south1
asia-southeast1
australia-southeast1
europe-west1
europe-west2
europe-west4
me-west1
me-central1
me-central2
- ๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
๋ค์๊ณผ ๋น์ทํ ์๋ต์ด ํ์๋ฉ๋๋ค.gcloud transcoder jobs describe JOB_ID --location=LOCATION
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/jobs/JOB_ID", "config": { "inputs": [ { "key": "input0", "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_VIDEO" } ], "editList": [ { "key": "atom0", "inputs": [ "input0" ], "startTimeOffset": "0s" } ], "elementaryStreams": [ { "videoStream": { "h264": { "widthPixels": 640, "heightPixels": 360, "frameRate": 30, "bitrateBps": 550000, "pixelFormat": "yuv420p", "rateControlMode": "vbr", "crfLevel": 21, "gopDuration": "3s", "vbvSizeBits": 550000, "vbvFullnessBits": 495000, "entropyCoder": "cabac", "bFrameCount": 3, "aqStrength": 1, "profile": "high", "preset": "veryfast" } }, "key": "video-stream0" }, { "videoStream": { "h264": { "widthPixels": 1280, "heightPixels": 720, "frameRate": 30, "bitrateBps": 2500000, "pixelFormat": "yuv420p", "rateControlMode": "vbr", "crfLevel": 21, "gopDuration": "3s", "vbvSizeBits": 2500000, "vbvFullnessBits": 2250000, "entropyCoder": "cabac", "bFrameCount": 3, "aqStrength": 1, "profile": "high", "preset": "veryfast" } }, "key": "video-stream1" }, { "audioStream": { "codec": "aac", "bitrateBps": 64000, "channelCount": 2, "channelLayout": [ "fl", "fr" ], "sampleRateHertz": 48000 }, "key": "audio-stream0" } ], "muxStreams": [ { "key": "sd", "fileName": "sd.mp4", "container": "mp4", "elementaryStreams": [ "video-stream0", "audio-stream0" ] }, { "key": "hd", "fileName": "hd.mp4", "container": "mp4", "elementaryStreams": [ "video-stream1", "audio-stream0" ] }, { "key": "media-sd", "fileName": "media-sd.ts", "container": "ts", "elementaryStreams": [ "video-stream0", "audio-stream0" ] }, { "key": "media-hd", "fileName": "media-hd.ts", "container": "ts", "elementaryStreams": [ "video-stream1", "audio-stream0" ] }, { "key": "video-only-sd", "fileName": "video-only-sd.m4s", "container": "fmp4", "elementaryStreams": [ "video-stream0" ] }, { "key": "video-only-hd", "fileName": "video-only-hd.m4s", "container": "fmp4", "elementaryStreams": [ "video-stream1" ] }, { "key": "audio-only", "fileName": "audio-only.m4s", "container": "fmp4", "elementaryStreams": [ "audio-stream0" ] } ], "manifests": [ { "fileName": "manifest.m3u8", "type": "HLS", "muxStreams": [ "media-sd", "media-hd" ] }, { "fileName": "manifest.mpd", "type": "DASH", "muxStreams": [ "video-only-sd", "video-only-hd", "audio-only" ] } ], "output": { "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_OUTPUT_FOLDER/" } }, "state": "PENDING", "createTime": CREATE_TIME, "ttlAfterCompletionDays": 30 }
- ๋ง๋ Cloud Storage ๋ฒํท์ ๊ณต๊ฐ์ ์ผ๋ก ์ฝ์ ์ ์๋๋ก ํฉ๋๋ค.
- Cloud Storage ๋ฒํท์์ ๊ต์ฐจ ์ถ์ฒ ๋ฆฌ์์ค ๊ณต์ (CORS)๋ฅผ ์ฌ์ฉ ์ค์ ํ๋ ค๋ฉด ๋ค์์ ์ํํฉ๋๋ค.
- ๋ค์์ ํฌํจํ๋ JSON ํ์ผ์ ๋ง๋ญ๋๋ค.
[ { "origin": ["https://shaka-player-demo.appspot.com/"], "responseHeader": ["Content-Type", "Range"], "method": ["GET", "HEAD"], "maxAgeSeconds": 3600 } ]
-
JSON_FILE_NAME์ ์ด์ ๋จ๊ณ์์ ๋ง๋ JSON ํ์ผ ์ด๋ฆ์ผ๋ก ๋ฐ๊พผ ํ ๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
gcloud storage buckets update gs://STORAGE_BUCKET_NAME --cors-file=JSON_FILE_NAME.json
- ๋ค์์ ํฌํจํ๋ JSON ํ์ผ์ ๋ง๋ญ๋๋ค.
- Cloud Storage ๋ฒํท์์ ํธ๋์ค์ฝ๋ฉ ์์ ์ผ๋ก ์์ฑ๋ MP4 ๋๋ ๋งค๋ํ์คํธ ํ์ผ ์ค ํ๋๋ฅผ ์ ํํฉ๋๋ค. ํ์ผ์ ๊ณต๊ฐ ์ก์ธ์ค ์ด์์ URL ๋ณต์ฌ๋ฅผ ํด๋ฆญํฉ๋๋ค.
- ์จ๋ผ์ธ ์ค์๊ฐ ์คํธ๋ฆผ ํ๋ ์ด์ด์ธ Shaka Player๋ก ์ด๋ํฉ๋๋ค.
- ์๋จ ํ์ ๋ฉ๋ด์์ ์ปค์คํ ์ฝํ ์ธ ๋ฅผ ํด๋ฆญํฉ๋๋ค.
- + ๋ฒํผ์ ํด๋ฆญํฉ๋๋ค.
ํ์ผ์ ๊ณต๊ฐ URL์ ๋งค๋ํ์คํธ URL ์์์ ๋ถ์ฌ๋ฃ์ต๋๋ค.
์ด๋ฆ ์์์ ์ด๋ฆ์ ์ ๋ ฅํฉ๋๋ค.
์ ์ฅ์ ํด๋ฆญํฉ๋๋ค.
์ฌ์์ ํด๋ฆญํฉ๋๋ค.
Google Cloud ์ฝ์์์ Cloud Storage ๋ธ๋ผ์ฐ์ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
๋ง๋ ๋ฒํท ์์ ์๋ ํ์ธ๋์ ์ ํํฉ๋๋ค.
์ญ์ ๋ฅผ ํด๋ฆญํฉ๋๋ค.
๋ํ๋๋ ํ์ ์ฐฝ์์ ์ญ์ ๋ฅผ ํด๋ฆญํ์ฌ ๋ฒํท๊ณผ ์ฝํ ์ธ ๋ฅผ ์๊ตฌ ์ญ์ ํฉ๋๋ค.
JOB_ID
: ๋ง๋ ์์ ์ ID์ ๋๋ค.PROJECT_ID
: Google Cloud ํ๋ก์ ํธ ID์ ๋๋ค.LOCATION
: ์์ ์์น์ ๋๋ค. ์ง์๋๋ ๋ฆฌ์ ์ค ํ๋๋ฅผ ์ฌ์ฉํฉ๋๋ค.์์น ํ์us-central1
us-west1
us-west2
us-east1
us-east4
southamerica-east1
northamerica-northeast1
asia-east1
asia-northeast1
asia-northeast3
asia-south1
asia-southeast1
australia-southeast1
europe-west1
europe-west2
europe-west4
me-west1
me-central1
me-central2
gcloud
๋ช ๋ น์ด๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ๋ฐ๊ฟ๋๋ค.- JOB_ID: ๋ง๋ ์์ ์ ID์ ๋๋ค.
- LOCATION: ์์
์์น์
๋๋ค. ์ง์๋๋ ๋ฆฌ์ ์ค ํ๋๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์์น ํ์
us-central1
us-west1
us-west2
us-east1
us-east4
southamerica-east1
northamerica-northeast1
asia-east1
asia-northeast1
asia-northeast3
asia-south1
asia-southeast1
australia-southeast1
europe-west1
europe-west2
europe-west4
me-west1
me-central1
me-central2
- ๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
๋ค์๊ณผ ๋น์ทํ ์๋ต์ด ํ์๋ฉ๋๋ค.gcloud transcoder jobs delete JOB_ID --location=LOCATION
Deleted job [projects/PROJECT_ID/locations/LOCATION/jobs/JOB_ID].
-
Optional: Revoke the authentication credentials that you created, and delete the local credential file.
gcloud auth application-default revoke
-
Optional: Revoke credentials from the gcloud CLI.
gcloud auth revoke
- Transcoder API ๊ฐ์๋ฅผ ์ฝ์ด๋ด ๋๋ค.
Cloud Storage ๋ฒํท ๋ง๋ค๊ธฐ
Transcoder API๋ฅผ ์ฌ์ฉํ์ฌ ๋์์ ํธ๋์ค์ฝ๋ฉ
๋ค์ ๋จ๊ณ๋ฅผ ์ํํ๋ ค๋ฉด ๋ก์ปฌ ๋จธ์ ์์ ๊ธธ์ด๊ฐ 5์ด ์ด์์ธ ๋์์์ด ํ์ํฉ๋๋ค(์ํ ๋์์). ์ง์๋๋ ์ ๋ ฅ ๋ฐ ์ถ๋ ฅ ํ์ ๋ชฉ๋ก์ ์ฐธ์กฐํ์ธ์.
Cloud Storage ๋ฒํท์ ๋์์ ์ ๋ก๋
๋์์์ด ์ด์ Cloud Storage ๋ฒํท์ ์ ์ฅ๋ฉ๋๋ค.
ํธ๋์ค์ฝ๋ฉ ์์ ๋ง๋ค๊ธฐ
๊ธฐ๋ณธ์ ์ผ๋ก Transcoder API๋ H.264 ์ธ์ฝ๋ฉ ๋ฐ MP4, HLS, MPEG-DASH ํจํค์ง์ ์ฌ์ฉํ์ฌ ๋์์์ ํธ๋์ค์ฝ๋ฉํฉ๋๋ค. ์ ๋ ฅ ๋์์๋ง๋ค ๊ณ ํ์ง(1280x720ํฝ์ ) ๋ฐ ํ์ค ํ์ง(640x360 ํฝ์ )๋ก ๋ณํ๋ ์ถ๋ ฅ์ ์ ๊ณตํฉ๋๋ค.
์์
์ ๋ง๋ค๋ ค๋ฉด projects.locations.jobs.create
๋ฉ์๋๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ค์ ์ฝ๋ ์ํ์ ์ฌ์ ์ค์ ์ ์ฌ์ฉํ์ฌ ๊ธฐ๋ณธ ํธ๋์ค์ฝ๋ฉ ์์
์ ๋ง๋ญ๋๋ค.
REST
์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
์์ฒญ์ ๋ณด๋ด๋ ค๋ฉด ๋ค์ ์ต์ ์ค ํ๋๋ฅผ ํผ์นฉ๋๋ค.
์ด ํน์ REST ์์์์๋ ์ ํ์ ์ธ fields
์ฟผ๋ฆฌ ๋งค๊ฐ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ์์ฑ๋ ๋ฆฌ์์ค ์ด๋ฆ๋ง ์๋ต์ ํ์ํฉ๋๋ค.
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/jobs/JOB_ID" }
gcloud
C#
์ด ์ํ์ ์ฌ์ฉํด ๋ณด๊ธฐ ์ ์ Transcoder API ๋น ๋ฅธ ์์: ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ์ C# ์ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์. ์์ธํ ๋ด์ฉ์ Transcoder API C# API ์ฐธ๊ณ ๋ฌธ์๋ฅผ ํ์ธํ์ธ์.
Transcoder API์ ์ธ์ฆํ๋ ค๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ค์ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ธ์ฆ ์ค์ ์ ์ฐธ์กฐํ์ธ์.
Go
์ด ์ํ์ ์ฌ์ฉํด ๋ณด๊ธฐ ์ ์ Transcoder API ๋น ๋ฅธ ์์: ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ์ Go ์ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์. ์์ธํ ๋ด์ฉ์ Transcoder API Go API ์ฐธ๊ณ ๋ฌธ์๋ฅผ ํ์ธํ์ธ์.
Transcoder API์ ์ธ์ฆํ๋ ค๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ค์ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ธ์ฆ ์ค์ ์ ์ฐธ์กฐํ์ธ์.
Java
์ด ์ํ์ ์ฌ์ฉํด ๋ณด๊ธฐ ์ ์ Transcoder API ๋น ๋ฅธ ์์: ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ์ Java ์ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์. ์์ธํ ๋ด์ฉ์ Transcoder API Java API ์ฐธ๊ณ ๋ฌธ์๋ฅผ ํ์ธํ์ธ์.
Transcoder API์ ์ธ์ฆํ๋ ค๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ค์ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ธ์ฆ ์ค์ ์ ์ฐธ์กฐํ์ธ์.
Node.js
์ด ์ํ์ ์ฌ์ฉํด ๋ณด๊ธฐ ์ ์ Transcoder API ๋น ๋ฅธ ์์: ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ์ Node.js ์ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์. ์์ธํ ๋ด์ฉ์ Transcoder API Node.js API ์ฐธ๊ณ ๋ฌธ์๋ฅผ ํ์ธํ์ธ์.
Transcoder API์ ์ธ์ฆํ๋ ค๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ค์ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ธ์ฆ ์ค์ ์ ์ฐธ์กฐํ์ธ์.
PHP
์ด ์ํ์ ์ฌ์ฉํด ๋ณด๊ธฐ ์ ์ Transcoder API ๋น ๋ฅธ ์์: ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ์ PHP ์ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์. ์์ธํ ๋ด์ฉ์ Transcoder API PHP API ์ฐธ๊ณ ๋ฌธ์๋ฅผ ํ์ธํ์ธ์.
Transcoder API์ ์ธ์ฆํ๋ ค๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ค์ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ธ์ฆ ์ค์ ์ ์ฐธ์กฐํ์ธ์.
Python
์ด ์ํ์ ์ฌ์ฉํด ๋ณด๊ธฐ ์ ์ Transcoder API ๋น ๋ฅธ ์์: ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ์ Python ์ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์. ์์ธํ ๋ด์ฉ์ Transcoder API Python API ์ฐธ๊ณ ๋ฌธ์๋ฅผ ํ์ธํ์ธ์.
Transcoder API์ ์ธ์ฆํ๋ ค๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ค์ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ธ์ฆ ์ค์ ์ ์ฐธ์กฐํ์ธ์.
Ruby
์ด ์ํ์ ์ฌ์ฉํด ๋ณด๊ธฐ ์ ์ Transcoder API ๋น ๋ฅธ ์์: ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ์ Ruby ์ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์. ์์ธํ ๋ด์ฉ์ Transcoder API Ruby API ์ฐธ๊ณ ๋ฌธ์๋ฅผ ํ์ธํ์ธ์.
Transcoder API์ ์ธ์ฆํ๋ ค๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ค์ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ธ์ฆ ์ค์ ์ ์ฐธ์กฐํ์ธ์.
๋ฐํ๋ JOB_ID๋ฅผ ๋ณต์ฌํฉ๋๋ค. ์์ ์ํ๋ฅผ ๊ฐ์ ธ์ค๋ ๋ฐ ํ์ํฉ๋๋ค.
ํธ๋์ค์ฝ๋ฉ ์์ ์ํ ํ์ธ
์์
์ํ๋ฅผ ํ์ธํ๋ ค๋ฉด projects.locations.jobs.get
๋ฉ์๋๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ค์ ์ฝ๋ ์ํ์ ์์
์ธ๋ถ์ ๋ณด๋ฅผ ๊ฐ์ ธ์จ ํ ์์
์ํ๋ฅผ ํ์ํฉ๋๋ค.
REST
์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
์์ฒญ์ ๋ณด๋ด๋ ค๋ฉด ๋ค์ ์ต์ ์ค ํ๋๋ฅผ ํผ์นฉ๋๋ค.
๋ค์๊ณผ ๋น์ทํ JSON ์๋ต์ด ํ์๋ฉ๋๋ค.
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/jobs/JOB_ID", "config": { "inputs": [ { "key": "input0", "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_VIDEO" } ], "editList": [ { "key": "atom0", "inputs": [ "input0" ], "startTimeOffset": "0s" } ], "elementaryStreams": [ { "videoStream": { "h264": { "widthPixels": 640, "heightPixels": 360, "frameRate": 30, "bitrateBps": 550000, "pixelFormat": "yuv420p", "rateControlMode": "vbr", "crfLevel": 21, "gopDuration": "3s", "vbvSizeBits": 550000, "vbvFullnessBits": 495000, "entropyCoder": "cabac", "bFrameCount": 3, "aqStrength": 1, "profile": "high", "preset": "veryfast" } }, "key": "video-stream0" }, { "videoStream": { "h264": { "widthPixels": 1280, "heightPixels": 720, "frameRate": 30, "bitrateBps": 2500000, "pixelFormat": "yuv420p", "rateControlMode": "vbr", "crfLevel": 21, "gopDuration": "3s", "vbvSizeBits": 2500000, "vbvFullnessBits": 2250000, "entropyCoder": "cabac", "bFrameCount": 3, "aqStrength": 1, "profile": "high", "preset": "veryfast" } }, "key": "video-stream1" }, { "audioStream": { "codec": "aac", "bitrateBps": 64000, "channelCount": 2, "channelLayout": [ "fl", "fr" ], "sampleRateHertz": 48000 }, "key": "audio-stream0" } ], "muxStreams": [ { "key": "sd", "fileName": "sd.mp4", "container": "mp4", "elementaryStreams": [ "video-stream0", "audio-stream0" ] }, { "key": "hd", "fileName": "hd.mp4", "container": "mp4", "elementaryStreams": [ "video-stream1", "audio-stream0" ] }, { "key": "media-sd", "fileName": "media-sd.ts", "container": "ts", "elementaryStreams": [ "video-stream0", "audio-stream0" ] }, { "key": "media-hd", "fileName": "media-hd.ts", "container": "ts", "elementaryStreams": [ "video-stream1", "audio-stream0" ] }, { "key": "video-only-sd", "fileName": "video-only-sd.m4s", "container": "fmp4", "elementaryStreams": [ "video-stream0" ] }, { "key": "video-only-hd", "fileName": "video-only-hd.m4s", "container": "fmp4", "elementaryStreams": [ "video-stream1" ] }, { "key": "audio-only", "fileName": "audio-only.m4s", "container": "fmp4", "elementaryStreams": [ "audio-stream0" ] } ], "manifests": [ { "fileName": "manifest.m3u8", "type": "HLS", "muxStreams": [ "media-sd", "media-hd" ] }, { "fileName": "manifest.mpd", "type": "DASH", "muxStreams": [ "video-only-sd", "video-only-hd", "audio-only" ] } ], "output": { "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_OUTPUT_FOLDER/" } }, "state": "PENDING", "createTime": CREATE_TIME, "ttlAfterCompletionDays": 30 }
gcloud
C#
์ด ์ํ์ ์ฌ์ฉํด ๋ณด๊ธฐ ์ ์ Transcoder API ๋น ๋ฅธ ์์: ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ์ C# ์ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์. ์์ธํ ๋ด์ฉ์ Transcoder API C# API ์ฐธ๊ณ ๋ฌธ์๋ฅผ ํ์ธํ์ธ์.
Transcoder API์ ์ธ์ฆํ๋ ค๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ค์ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ธ์ฆ ์ค์ ์ ์ฐธ์กฐํ์ธ์.
Go
์ด ์ํ์ ์ฌ์ฉํด ๋ณด๊ธฐ ์ ์ Transcoder API ๋น ๋ฅธ ์์: ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ์ Go ์ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์. ์์ธํ ๋ด์ฉ์ Transcoder API Go API ์ฐธ๊ณ ๋ฌธ์๋ฅผ ํ์ธํ์ธ์.
Transcoder API์ ์ธ์ฆํ๋ ค๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ค์ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ธ์ฆ ์ค์ ์ ์ฐธ์กฐํ์ธ์.
Java
์ด ์ํ์ ์ฌ์ฉํด ๋ณด๊ธฐ ์ ์ Transcoder API ๋น ๋ฅธ ์์: ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ์ Java ์ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์. ์์ธํ ๋ด์ฉ์ Transcoder API Java API ์ฐธ๊ณ ๋ฌธ์๋ฅผ ํ์ธํ์ธ์.
Transcoder API์ ์ธ์ฆํ๋ ค๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ค์ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ธ์ฆ ์ค์ ์ ์ฐธ์กฐํ์ธ์.
Node.js
์ด ์ํ์ ์ฌ์ฉํด ๋ณด๊ธฐ ์ ์ Transcoder API ๋น ๋ฅธ ์์: ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ์ Node.js ์ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์. ์์ธํ ๋ด์ฉ์ Transcoder API Node.js API ์ฐธ๊ณ ๋ฌธ์๋ฅผ ํ์ธํ์ธ์.
Transcoder API์ ์ธ์ฆํ๋ ค๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ค์ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ธ์ฆ ์ค์ ์ ์ฐธ์กฐํ์ธ์.
PHP
์ด ์ํ์ ์ฌ์ฉํด ๋ณด๊ธฐ ์ ์ Transcoder API ๋น ๋ฅธ ์์: ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ์ PHP ์ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์. ์์ธํ ๋ด์ฉ์ Transcoder API PHP API ์ฐธ๊ณ ๋ฌธ์๋ฅผ ํ์ธํ์ธ์.
Transcoder API์ ์ธ์ฆํ๋ ค๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ค์ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ธ์ฆ ์ค์ ์ ์ฐธ์กฐํ์ธ์.
Python
์ด ์ํ์ ์ฌ์ฉํด ๋ณด๊ธฐ ์ ์ Transcoder API ๋น ๋ฅธ ์์: ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ์ Python ์ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์. ์์ธํ ๋ด์ฉ์ Transcoder API Python API ์ฐธ๊ณ ๋ฌธ์๋ฅผ ํ์ธํ์ธ์.
Transcoder API์ ์ธ์ฆํ๋ ค๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ค์ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ธ์ฆ ์ค์ ์ ์ฐธ์กฐํ์ธ์.
Ruby
์ด ์ํ์ ์ฌ์ฉํด ๋ณด๊ธฐ ์ ์ Transcoder API ๋น ๋ฅธ ์์: ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ์ Ruby ์ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์. ์์ธํ ๋ด์ฉ์ Transcoder API Ruby API ์ฐธ๊ณ ๋ฌธ์๋ฅผ ํ์ธํ์ธ์.
Transcoder API์ ์ธ์ฆํ๋ ค๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ค์ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ธ์ฆ ์ค์ ์ ์ฐธ์กฐํ์ธ์.
state
๊ฐ SUCCEEDED
์ด๋ฉด ์์
์ด ์๋ฃ๋๊ณ ์ด์ Cloud Storage ๋ฒํท์ ์ธ์ฝ๋ฉ๋ ํ์ผ ๋ชฉ๋ก์ ๋์์ ์ถ๋ ฅ์ด ์ ๊ณต๋ฉ๋๋ค.
๋์์ ์ฌ์
์์ฑ๋ ๋ฏธ๋์ด ํ์ผ์ Shaka Player์์ ์ฌ์ํ๋ ค๋ฉด ๋ค์ ๋จ๊ณ๋ฅผ ์๋ฃํฉ๋๋ค.
์ญ์
์ด ํ์ด์ง์์ ์ฌ์ฉํ ๋ฆฌ์์ค ๋น์ฉ์ด Google Cloud ๊ณ์ ์ ์ฒญ๊ตฌ๋์ง ์๋๋ก ํ๋ ค๋ฉด ๋ฆฌ์์ค๊ฐ ํฌํจ๋ Google Cloud ํ๋ก์ ํธ๋ฅผ ์ญ์ ํฉ๋๋ค.
๋ฒํท ์ญ์
์์ ์ญ์
REST
์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
์์ฒญ์ ๋ณด๋ด๋ ค๋ฉด ๋ค์ ์ต์ ์ค ํ๋๋ฅผ ํผ์นฉ๋๋ค.
๋ค์๊ณผ ๋น์ทํ JSON ์๋ต์ด ํ์๋ฉ๋๋ค.
{}
gcloud
C#
์ด ์ํ์ ์ฌ์ฉํด ๋ณด๊ธฐ ์ ์ Transcoder API ๋น ๋ฅธ ์์: ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ์ C# ์ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์. ์์ธํ ๋ด์ฉ์ Transcoder API C# API ์ฐธ๊ณ ๋ฌธ์๋ฅผ ํ์ธํ์ธ์.
Transcoder API์ ์ธ์ฆํ๋ ค๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ค์ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ธ์ฆ ์ค์ ์ ์ฐธ์กฐํ์ธ์.
Go
์ด ์ํ์ ์ฌ์ฉํด ๋ณด๊ธฐ ์ ์ Transcoder API ๋น ๋ฅธ ์์: ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ์ Go ์ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์. ์์ธํ ๋ด์ฉ์ Transcoder API Go API ์ฐธ๊ณ ๋ฌธ์๋ฅผ ํ์ธํ์ธ์.
Transcoder API์ ์ธ์ฆํ๋ ค๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ค์ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ธ์ฆ ์ค์ ์ ์ฐธ์กฐํ์ธ์.
Java
์ด ์ํ์ ์ฌ์ฉํด ๋ณด๊ธฐ ์ ์ Transcoder API ๋น ๋ฅธ ์์: ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ์ Java ์ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์. ์์ธํ ๋ด์ฉ์ Transcoder API Java API ์ฐธ๊ณ ๋ฌธ์๋ฅผ ํ์ธํ์ธ์.
Transcoder API์ ์ธ์ฆํ๋ ค๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ค์ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ธ์ฆ ์ค์ ์ ์ฐธ์กฐํ์ธ์.
Node.js
์ด ์ํ์ ์ฌ์ฉํด ๋ณด๊ธฐ ์ ์ Transcoder API ๋น ๋ฅธ ์์: ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ์ Node.js ์ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์. ์์ธํ ๋ด์ฉ์ Transcoder API Node.js API ์ฐธ๊ณ ๋ฌธ์๋ฅผ ํ์ธํ์ธ์.
Transcoder API์ ์ธ์ฆํ๋ ค๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ค์ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ธ์ฆ ์ค์ ์ ์ฐธ์กฐํ์ธ์.
PHP
์ด ์ํ์ ์ฌ์ฉํด ๋ณด๊ธฐ ์ ์ Transcoder API ๋น ๋ฅธ ์์: ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ์ PHP ์ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์. ์์ธํ ๋ด์ฉ์ Transcoder API PHP API ์ฐธ๊ณ ๋ฌธ์๋ฅผ ํ์ธํ์ธ์.
Transcoder API์ ์ธ์ฆํ๋ ค๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ค์ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ธ์ฆ ์ค์ ์ ์ฐธ์กฐํ์ธ์.
Python
์ด ์ํ์ ์ฌ์ฉํด ๋ณด๊ธฐ ์ ์ Transcoder API ๋น ๋ฅธ ์์: ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ์ Python ์ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์. ์์ธํ ๋ด์ฉ์ Transcoder API Python API ์ฐธ๊ณ ๋ฌธ์๋ฅผ ํ์ธํ์ธ์.
Transcoder API์ ์ธ์ฆํ๋ ค๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ค์ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ธ์ฆ ์ค์ ์ ์ฐธ์กฐํ์ธ์.
Ruby
์ด ์ํ์ ์ฌ์ฉํด ๋ณด๊ธฐ ์ ์ Transcoder API ๋น ๋ฅธ ์์: ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ์ Ruby ์ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์. ์์ธํ ๋ด์ฉ์ Transcoder API Ruby API ์ฐธ๊ณ ๋ฌธ์๋ฅผ ํ์ธํ์ธ์.
Transcoder API์ ์ธ์ฆํ๋ ค๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ค์ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ธ์ฆ ์ค์ ์ ์ฐธ์กฐํ์ธ์.