Tutorial ini menjelaskan cara mentranskode video offline berprioritas rendah menggunakan tugas Cloud Run.
Menyiapkan permohonan pendaftaran
Untuk mengambil contoh kode agar dapat digunakan:
Clone repositori contoh ke komputer lokal Anda:
git clone https://github.com/GoogleCloudPlatform/cloud-run-samples
Ubah ke direktori yang memuat kode contoh Cloud Run:
cd cloud-run-samples/jobs-video-encoding
Membuat bucket Cloud Storage
Untuk menyimpan video yang akan diproses, dan untuk menyimpan hasil encoding, buat dua bucket Cloud Storage berikut:
Buat bucket untuk menyimpan video sebelum diproses:
gcloud storage buckets create gs://preprocessing-PROJECT_ID \ --location LOCATION
Ganti kode berikut:
- PROJECT_ID: project ID Anda.
- LOCATION: lokasi Cloud Storage.
Beri akun layanan akses untuk membaca dari bucket ini:
gcloud storage buckets add-iam-policy-binding gs://preprocessing-PROJECT_ID \ --member="serviceAccount:video-encoding@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/storage.objectViewer"
Ganti PROJECT_ID dengan project ID Anda.
Buat bucket untuk menyimpan video yang ditranskode setelah diproses:
gcloud storage buckets create gs://transcoded-PROJECT_ID \ --location LOCATION
Ganti kode berikut:
- PROJECT_ID: project ID Anda.
- LOCATION: lokasi Cloud Storage.
Beri akun layanan akses untuk membaca dari dan menulis ke bucket ini:
gcloud storage buckets add-iam-policy-binding gs://transcoded-PROJECT_ID \ --member="serviceAccount:video-encoding@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/storage.objectAdmin"
Ganti PROJECT_ID dengan project ID Anda.
Men-deploy tugas Cloud Run
Buat tugas Cloud Run dengan menggunakan Dockerfile di repositori contoh dan memasang bucket yang Anda buat:
Buka direktori contoh:
cd cloud-run-samples/jobs-video-encoding
Buat Artifact Registry jika registry Cloud Run default belum ada:
gcloud artifacts repositories create cloud-run-source-deploy \ --repository-format=docker \ --location LOCATION
Ganti LOCATION dengan nama lokasi registri.
Build image container:
gcloud builds submit \ --tag LOCATION-docker.pkg.dev/PROJECT_ID/cloud-run-source-deploy/IMAGE_NAME \ --machine-type E2-HIGHCPU-32
Ganti kode berikut:
- PROJECT_ID: project ID Anda.
- LOCATION:nama lokasi registri.
- IMAGE_NAME: nama untuk image container, misalnya:
ffmpeg-image
.
Cloud Run menggunakan jenis mesin yang lebih besar untuk mengurangi waktu build.
Deploy tugas:
gcloud beta run jobs create video-encoding-job \ --image LOCATION-docker.pkg.dev/PROJECT_ID/cloud-run-source-deploy/IMAGE_NAME \ --region REGION \ --memory 32Gi \ --cpu 8 \ --gpu 1 \ --gpu-type nvidia-l4 \ --no-gpu-zonal-redundancy \ --max-retries 1 \ --service-account video-encoding@PROJECT_ID.iam.gserviceaccount.com \ --add-volume=name=input-volume,type=cloud-storage,bucket=preprocessing-PROJECT_ID,readonly=true \ --add-volume-mount=volume=input-volume,mount-path=/inputs \ --add-volume=name=output-volume,type=cloud-storage,bucket=transcoded-PROJECT_ID \ --add-volume-mount=volume=output-volume,mount-path=/outputs
Ganti kode berikut:
- PROJECT_ID: project ID Anda.
- REGION: nama region. Catatan: Region ini harus sama dengan region yang memiliki kuota GPU untuk Anda.
- IMAGE_NAME: nama untuk image container, misalnya,
ffmpeg-image
.
Jika ini adalah pertama kalinya Anda men-deploy dari sumber di project ini, Cloud Run akan meminta Anda membuat repositori Artifact Registry default.
Menjalankan tugas
Untuk menjalankan tugas, ikuti langkah-langkah berikut:
Upload contoh video untuk dienkode:
gcloud storage cp gs://cloud-samples-data/video/cat.mp4 gs://preprocessing-PROJECT_ID
Jalankan tugas:
gcloud run jobs execute video-encoding-job \ --region REGION \ --wait \ --args="cat.mp4,encoded_cat.mp4,-vcodec,h264_nvenc,-cq,21,-movflags,+faststart"
File
entrypoint.sh
memerlukan file input, file output, dan argumen apa pun yang akan dikirim ke FFmpeg.Tinjau log Cloud Run untuk memastikan video ditranskode:
gcloud run jobs logs read video-encoding-job --region REGION
Download video yang di-transcoding:
gcloud storage cp gs://transcoded-PROJECT_ID/encoded_cat.mp4 .