Transcoding merupakan subsistem komputasi-intensif dalam sistem audio dan video. Anda dapat membangun sistem pemrosesan audio dan video serverless yang elastis dan highly available menggunakan Function Compute dan Serverless Workflow. Topik ini membandingkan sistem pemrosesan audio dan video berbasis serverless dengan solusi tradisional dari aspek efisiensi rekayasa, operasi dan maintenance (O&M), kinerja, serta biaya. Topik ini juga menjelaskan cara menerapkan dan menguji sistem pemrosesan audio dan video berbasis serverless.
Informasi latar belakang
Anda dapat menggunakan layanan transcoding khusus Alibaba Cloud untuk transcoding audio dan video. Namun, Anda mungkin memilih untuk membangun layanan transcoding sendiri dalam skenario berikut.
Kebutuhan skalabilitas elastis
Anda memerlukan pemrosesan video yang lebih elastis.
Contohnya, Anda telah menerapkan layanan pemrosesan video pada mesin virtual atau kontainer menggunakan FFmpeg. Kini Anda ingin menambahkan elastisitas dan ketersediaan tinggi ke layanan yang sudah ada tersebut.
Kebutuhan efisiensi rekayasa
Anda perlu memproses beberapa file video secara paralel.
Anda perlu memproses video besar secara batch dengan cepat.
Contohnya, setiap Jumat, ratusan video 1080p berukuran lebih dari 4 GB dihasilkan. Anda harus memproses semuanya dalam beberapa jam.
Kebutuhan pemrosesan kustom
Anda memerlukan pemrosesan kustom tingkat lanjut.
Contohnya, setelah transcoding, Anda harus mencatat detailnya ke database atau secara otomatis melakukan prefetch video populer ke CDN untuk mengurangi beban server origin.
Anda perlu mengonversi format audio, menyesuaikan laju sampel, atau menerapkan penghilangan derau audio.
Anda perlu membaca file sumber secara langsung untuk diproses.
Contohnya, ketika file sumber video Anda berada di Apsara File Storage NAS atau disk cloud ECS, Anda memerlukan layanan kustom yang membacanya secara langsung—tanpa terlebih dahulu memindahkannya ke OSS.
Anda perlu mengonversi video ke format lain lalu menambahkan fitur baru di atasnya.
Contohnya, Anda melakukan transcoding video, menambahkan watermark, dan menghasilkan GIF untuk halaman utama video. Kemudian, Anda menambahkan fitur baru seperti menyesuaikan parameter transcoding atau merilis fungsionalitas baru tanpa memengaruhi layanan yang sedang berjalan.
Kebutuhan biaya
Anda memerlukan transcoding yang sederhana atau ringan.
Contohnya, Anda hanya perlu mengekstrak GIF dari beberapa frame pertama video OSS atau mendapatkan durasi file audio atau video. Dalam kasus ini, membangun solusi sendiri lebih murah.
Ada dua cara untuk membangun layanan transcoding sendiri: penerapan self-managed tradisional dan penerapan serverless. Topik ini membandingkan kedua pendekatan tersebut dan memandu Anda melalui langkah-langkah penerapan serverless.
Solusi
Penerapan self-managed tradisional
Seiring kematangan teknologi komputer dan jaringan, produk penyedia cloud menjadi semakin andal. Untuk membangun sistem pemrosesan audio dan video, Anda dapat langsung membeli Instance ECS di cloud dan menerapkan layanan Anda. Lalu gunakan OSS dan CDN untuk menyimpan file media dan mempercepat pemutaran.
Penerapan serverless
Sistem pemrosesan video sederhana
Jika Anda hanya memerlukan pemrosesan video dasar, gunakan arsitektur yang ditunjukkan di bawah ini.
Ketika pengguna mengunggah video ke OSS, pemicu OSS secara otomatis memanggil fungsi. Fungsi tersebut memanggil FFmpeg untuk melakukan transcoding video dan menyimpan hasilnya kembali ke OSS.
Untuk demo dan petunjuk langkah demi langkah sistem pemrosesan video sederhana, lihat Sistem pemrosesan video sederhana.
Sistem alur kerja pemrosesan video
Jika Anda memerlukan transcoding lebih cepat untuk video besar atau kombinasi operasi kompleks, orkestrasikan fungsi menggunakan Serverless Workflow untuk membangun sistem pemrosesan video yang tangguh. Arsitekturnya ditunjukkan di bawah ini.
Ketika pengguna mengunggah video MP4 ke OSS, pemicu OSS secara otomatis memanggil fungsi. Fungsi tersebut kemudian memanggil Serverless Workflow untuk melakukan transcoding video ke satu atau beberapa format. Pendekatan ini mendukung kasus penggunaan berikut:
Satu file video dapat ditranscode ke beberapa format dan diproses lebih lanjut—misalnya, menambahkan watermark atau memperbarui metadata di database setelah pemrosesan.
Ketika beberapa file diunggah ke OSS secara bersamaan, Function Compute melakukan scaling secara otomatis dan memprosesnya secara paralel. Setiap file ditranscode ke beberapa format sekaligus.
Gabungkan NAS dan segmentasi video untuk menangani video yang sangat besar. Untuk setiap video, pertama-tama bagi menjadi segmen, lalu transcode segmen secara paralel, dan akhirnya gabungkan kembali. Tetapkan durasi segmen yang wajar untuk mempercepat transcoding video besar.
CatatanSegmentasi video membagi aliran video menjadi serangkaian file segmen pada interval waktu tetap dan menghasilkan file manifest yang mencantumkan segmen-segmen tersebut.
Untuk demo dan petunjuk langkah demi langkah sistem alur kerja pemrosesan video, lihat Sistem alur kerja pemrosesan video.
Keunggulan pendekatan serverless
Tingkatkan efisiensi rekayasa
Item perbandingan | Pendekatan serverless | Pendekatan Swakelola Tradisional |
Infrastruktur | Tidak ada | Anda mengadakan dan mengelolanya sendiri. |
Efisiensi pengembangan | Fokus hanya pada logika bisnis. Gunakan Serverless Devs untuk mengatur dan menerapkan sumber daya. | Selain logika bisnis, Anda harus menyiapkan lingkungan produksi sendiri—termasuk menginstal perangkat lunak, mengonfigurasi layanan, dan menerapkan pembaruan keamanan. |
Pemrosesan video paralel dan terdistribusi | Gunakan Serverless Workflow untuk mengatur sumber daya guna pemrosesan paralel beberapa video dan pemrosesan terdistribusi video besar. Stabilitas dan pemantauan ditangani oleh platform cloud. | Anda memerlukan keterampilan pengembangan yang kuat dan sistem pemantauan yang andal untuk memastikan stabilitas. |
Kurva pembelajaran | Tulis fungsi dalam bahasa pilihan Anda dan pahami cara menggunakan FFmpeg. | Selain pengetahuan pemrograman dan FFmpeg, Anda mungkin memerlukan Kubernetes dan Elastic Computing Service (ECS). Anda harus mempelajari lebih banyak produk, istilah, dan makna parameter. |
Waktu hingga produksi | Sekitar 3 hari-orang (2 hari untuk pengembangan dan pengujian, 1 hari untuk uji stres dan pengamatan). | Membutuhkan waktu dan upaya signifikan di luar logika inti. Perkiraan konservatif: sekitar 30 hari-orang, termasuk pengadaan perangkat keras, penyiapan perangkat lunak dan lingkungan, pengembangan sistem, pengujian, pemantauan dan peringatan, serta rilis canary. |
Skalabilitas elastis dan tanpa O&M
Item | Pendekatan serverless | Pendekatan self-managed tradisional |
Elastis dan highly available | Function Compute melakukan scaling dalam hitungan milidetik. Kapasitas ditambahkan dengan cepat untuk menangani lonjakan traffic. Tidak diperlukan O&M, dan kinerja transcoding sangat baik. | Anda harus menerapkan Server Load Balancer (SLB) dan mengelola skalabilitas elastis. Scaling lebih lambat dibandingkan Function Compute. |
Pemantauan dan peringatan | Menyediakan detail eksekusi yang lebih granular untuk eksekusi Serverless workflow dan eksekusi fungsi, memungkinkan Anda mengkueri latensi dan log per eksekusi fungsi, serta menawarkan mekanisme pemantauan dan peringatan yang lebih komprehensif. | Metrik pada level skalabilitas elastis atau kontainer. |
Keunggulan kinerja transcoding
Asumsikan sebuah file video MOV berdurasi 89 detik. Layanan transcoding cloud standar membutuhkan 188 detik untuk mengonversi MOV ke MP4. Gunakan nilai ini sebagai waktu referensi T. Persentase akselerasi kinerja dihitung sebagai: Persentase akselerasi kinerja = T ÷ Waktu transcoding Function Compute.
Durasi segmen video (s) | Function ComputeWaktu transcoding (s) | Persentase akselerasi kinerja (%) |
45 | 160 | 117,5 |
25 | 100 | 188 |
15 | 70 | 268,6 |
10 | 45 | 417,8 |
5 | 35 | 537,1 |
Persentase akselerasi kinerja dalam tabel di atas hanya berlaku untuk instans CPU. Jika skenario Anda menggunakan instans yang dipercepat GPU, lihat Praktik terbaik untuk pemrosesan audio dan video.
Biaya lebih rendah
Dalam beberapa skenario dunia nyata, biaya Function Compute lebih rendah untuk pemrosesan video—bahkan dibandingkan dengan layanan transcoding video penyedia cloud.
Tabel berikut membandingkan biaya konversi antara MP4 dan FLV—dua format video on-demand paling umum. Memori fungsi diatur ke 3 GB. Hasil eksperimen menunjukkan biaya berikut.
Persentase pengurangan biaya dihitung sebagai: Persentase pengurangan biaya = (Biaya pemrosesan video vendor cloud − Biaya transcoding Function Compute) ÷ Biaya pemrosesan video vendor cloud.
Tabel 1. MP4 ke FLV
Resolusi | Rate | Frame rate | Function ComputeWaktu transcoding | Function ComputeBiaya transcoding | Biaya pemrosesan video vendor cloud | Persentase pengurangan biaya |
Definisi standar 640×480 | 889 KB/s | 24 | 11,2 s | 0,003732288 | 0,032 | 88,3% |
Definisi tinggi 1280×720 | 1963 KB/s | 24 | 20,5 s | 0,00683142 | 0,065 | 89,5% |
Ultra definisi tinggi 1920×1080 | 3689 KB/s | 24 | 40 s | 0,0133296 | 0,126 | 89,4% |
4K 3840×2160 | 11185 KB/s | 24 | 142 s | 0,04732008 | 0,556 | 91,5% |
Tabel 2. FLV ke MP4
Resolusi | Bitrate | Frame rate | Function ComputeWaktu transcoding | Function ComputeBiaya transcoding | Biaya pemrosesan video vendor cloud | Persentase pengurangan biaya |
Definisi standar 640×480 | 712 KB/s | 24 | 34,5 s | 0,01149678 | 0,032 | 64,1% |
Definisi tinggi 1280×720 | 1806 KB/s | 24 | 100,3 s | 0,033424 | 0,065 | 48,6% |
Resolusi Ultra HD 1920×1080 | 3911 KB/s | 24 | 226,4 s | 0,0754455 | 0,126 | 40,1% |
4K 3840×2160 | 15109 KB/s | 24 | 912 s | 0,30391488 | 0,556 | 45,3% |
Pemrosesan video vendor cloud menggunakan transcoding standar. Waktu transcoding di bawah satu menit dikenai tagihan satu menit. Di sini, penagihan menggunakan dua menit. Bahkan jika penagihan menggunakan 1,5 menit, pengurangan biaya akan berbeda kurang dari 10%.
Tabel di atas menunjukkan bahwa solusi berbasis Function Compute dan Serverless Workflow menawarkan keunggulan biaya yang kuat baik untuk transcoding FLV-ke-MP4 yang kompleks maupun transcoding MP4-ke-FLV yang sederhana. Pengalaman dunia nyata menunjukkan penghematan biaya yang lebih besar, karena dua alasan:
Video uji menggunakan bitrate tinggi. Sebagian besar skenario dunia nyata melibatkan video definisi standar atau definisi rendah dengan bitrate lebih rendah. Bitrate lebih rendah mengurangi waktu komputasi dan biaya untuk Function Compute, sedangkan biaya transcoding cloud generik tetap tidak berubah.
Layanan transcoding cloud generik sering kali membebankan biaya berlebih untuk resolusi non-standar. Misalnya, video beresolusi 856×480 atau 1368×768 ditagih pada tier berikutnya—definisi tinggi 1280×720 atau ultra definisi tinggi 1920×1080—menyebabkan lonjakan harga tajam. Peningkatan komputasi aktual mungkin di bawah 30%. Function Compute menagih secara tepat sesuai penggunaan.
Penerapan
Topik ini mencakup penerapan untuk dua skenario: sistem pemrosesan video sederhana dan sistem alur kerja pemrosesan video.
Sistem pemrosesan video sederhana
Prasyarat
Function Compute: Aktifkan Function Compute.
Object Storage ServiceOSS: Buat bucket di Konsol OSS.
Prosedur
Buat layanan.
Masuk ke Konsol Function Compute. Di panel navigasi kiri, klik Services & Functions.
Di bilah menu atas, pilih wilayah. Di halaman Services, klik Create Service.
Di panel Create Service, masukkan nama dan deskripsi layanan. Konfigurasikan opsi sesuai kebutuhan. Klik OK.
Topik ini mengatur peran layanan ke
AliyunFCDefaultRoledan menambahkan kebijakan izinAliyunOSSFullAccess.Untuk konfigurasi layanan terperinci, lihat Buat layanan.
Buat fungsi.
Di halaman Function Management, klik Create Function.
Di halaman Create Function, pilih metode pembuatan. Konfigurasikan opsi berikut. Klik Create.
Metode pembuatan: Create with built-in runtime.
Basic settings: Konfigurasikan informasi dasar fungsi, termasuk Function Name dan Handler Type. Atur Handler Type ke Event-driven handler.
Function code: Pilih Python 3.9 sebagai runtime. Pilih Use sample code sebagai metode unggah kode.
Advanced configuration: Karena pemrosesan video memakan waktu dan ukuran file bervariasi, topik ini memilih vCPU count = 4, Memory = 8 GB, Temporary disk size = 10 GB, dan Timeout = 7200 detik.
Gunakan nilai default untuk opsi lainnya. Untuk konfigurasi fungsi terperinci, lihat Buat fungsi.
Buat pemicu OSS.
Di halaman detail fungsi, klik tab Triggers. Dari daftar drop-down Version or alias, pilih versi atau alias untuk pemicu. Klik Create Trigger.
Di panel Create Trigger, masukkan informasi yang diperlukan. Klik OK.
Item konfigurasi
Tindakan
Contoh dalam topik ini
Trigger type
Pilih Object Storage OSS.
Object Storage OSS
Name
Masukkan nama pemicu kustom.
oss-trigger
Version or alias
Default-nya adalah LATEST. Untuk membuat pemicu untuk versi atau alias lain, pilih terlebih dahulu dari daftar drop-down Version or alias di halaman detail fungsi. Untuk informasi selengkapnya, lihat Kelola versi dan Kelola alias.
LATEST
Bucket name
Pilih bucket OSS yang sudah ada.
testbucket
Object prefix
Masukkan awalan untuk mencocokkan nama objek. Kami merekomendasikan menetapkan awalan dan akhiran untuk menghindari loop event bersarang dan biaya tambahan. Selain itu, untuk pemicu dalam bucket yang sama dengan jenis event identik, awalan dan akhiran tidak boleh tumpang tindih. Untuk detailnya, lihat Aturan pemicu OSS.
PentingJika awalan file dimulai dengan
/, pemicu OSS akan gagal memicu.source
File Extension
Masukkan akhiran untuk mencocokkan nama objek. Kami sangat merekomendasikan menetapkan awalan dan akhiran untuk menghindari loop event bersarang dan biaya tambahan. Selain itu, untuk pemicu dalam bucket yang sama dengan jenis event identik, awalan dan akhiran tidak boleh tumpang tindih. Untuk detailnya, lihat Aturan pemicu OSS.
mp4
Trigger events
Pilih satu atau beberapa event pemicu. Untuk informasi tentang jenis event untuk Object Storage Service (OSS), lihat Definisi event OSS.
oss:ObjectCreated:PutObject, oss:ObjectCreated:PostObject, oss:ObjectCreated:CompleteMultipartUpload
Role name
Pilih AliyunOSSEventNotificationRole.
CatatanJika ini adalah pemicu pertama Anda dari jenis ini, klik OK. Di kotak dialog, pilih Authorize now.
AliyunOSSEventNotificationRole
Tulis kode fungsi.
Di halaman detail fungsi, klik tab Function Code. Tulis kode di editor.
Fungsi ini mengonversi video MP4 ke format FLV dan menyimpan file FLV di direktori
destbucket OSS. Contoh ini menggunakan Python. Berikut kode contohnya.# -*- coding: utf-8 -*- import logging import oss2 import os import json import subprocess import shutil logging.getLogger("oss2.api").setLevel(logging.ERROR) logging.getLogger("oss2.auth").setLevel(logging.ERROR) LOGGER = logging.getLogger() def get_fileNameExt(filename): (_, tempfilename) = os.path.split(filename) (shortname, extension) = os.path.splitext(tempfilename) return shortname, extension def handler(event, context): LOGGER.info(event) evt = json.loads(event) evt = evt["events"] oss_bucket_name = evt[0]["oss"]["bucket"]["name"] object_key = evt[0]["oss"]["object"]["key"] output_dir = "dest" dst_format = "flv" shortname, _ = get_fileNameExt(object_key) creds = context.credentials auth = oss2.StsAuth(creds.accessKeyId, creds.accessKeySecret, creds.securityToken) oss_client = oss2.Bucket(auth, 'oss-%s-internal.aliyuncs.com' % context.region, oss_bucket_name) exist = oss_client.object_exists(object_key) if not exist: raise Exception("object {} is not exist".format(object_key)) input_path = oss_client.sign_url('GET', object_key, 6 * 3600) # penanganan khusus m3u8 rid = context.request_id if dst_format == "m3u8": return handle_m3u8(rid, oss_client, input_path, shortname, output_dir) else: return handle_common(rid, oss_client, input_path, shortname, output_dir, dst_format) def handle_m3u8(request_id, oss_client, input_path, shortname, output_dir): ts_dir = '/tmp/ts' if os.path.exists(ts_dir): shutil.rmtree(ts_dir) os.mkdir(ts_dir) transcoded_filepath = os.path.join('/tmp', shortname + '.ts') split_transcoded_filepath = os.path.join( ts_dir, shortname + '_%03d.ts') cmd1 = ['ffmpeg', '-y', '-i', input_path, '-c:v', 'libx264', transcoded_filepath] cmd2 = ['ffmpeg', '-y', '-i', transcoded_filepath, '-c', 'copy', '-map', '0', '-f', 'segment', '-segment_list', os.path.join(ts_dir, 'playlist.m3u8'), '-segment_time', '10', split_transcoded_filepath] try: subprocess.run( cmd1, stdout=subprocess.PIPE, stderr=subprocess.PIPE, check=True) subprocess.run( cmd2, stdout=subprocess.PIPE, stderr=subprocess.PIPE, check=True) for filename in os.listdir(ts_dir): filepath = os.path.join(ts_dir, filename) filekey = os.path.join(output_dir, shortname, filename) oss_client.put_object_from_file(filekey, filepath) os.remove(filepath) print("Uploaded {} to {}".format(filepath, filekey)) except subprocess.CalledProcessError as exc: # jika transcoding gagal, picu pemanggilan fungsi dest-fail raise Exception(request_id + " transcode failure, detail: " + str(exc)) finally: if os.path.exists(ts_dir): shutil.rmtree(ts_dir) # hapus file ts if os.path.exists(transcoded_filepath): os.remove(transcoded_filepath) return {} def handle_common(request_id, oss_client, input_path, shortname, output_dir, dst_format): transcoded_filepath = os.path.join('/tmp', shortname + '.' + dst_format) if os.path.exists(transcoded_filepath): os.remove(transcoded_filepath) cmd = ["ffmpeg", "-y", "-i", input_path, transcoded_filepath] try: subprocess.run( cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, check=True) oss_client.put_object_from_file( os.path.join(output_dir, shortname + '.' + dst_format), transcoded_filepath) except subprocess.CalledProcessError as exc: # jika transcoding gagal, picu pemanggilan fungsi dest-fail raise Exception(request_id + " transcode failure, detail: " + str(exc)) finally: if os.path.exists(transcoded_filepath): os.remove(transcoded_filepath) return {}Klik Deploy code.
Uji kode fungsi.
Anda dapat mensimulasikan parameter event OSS menggunakan parameter input fungsi untuk memverifikasi kebenarannya. Dalam praktiknya, fungsi akan dipicu secara otomatis ketika event OSS terjadi.
Di halaman detail fungsi, klik tab Function Code, lalu klik ikon
di sebelah kanan Test Function. Dari daftar drop-down, pilih Configure Test Parameters.Di panel Configure test parameters, pilih Create new test event atau Edit existing test event. Masukkan Event name dan konten event. Klik OK.
Konten event yang digunakan dalam topik ini ditunjukkan di bawah ini. Untuk detail parameter event, lihat Langkah 2: Konfigurasikan parameter input fungsi.
{ "events": [ { "eventName": "oss:ObjectCreated:CompleteMultipartUpload", "eventSource": "acs:oss", "eventTime": "2022-08-13T06:45:43.000Z", "eventVersion": "1.0", "oss": { "bucket": { "arn": "acs:oss:cn-hangzhou:123456789:testbucket", "name": "testbucket", "ownerIdentity": "164901546557****" }, "object": { "deltaSize": 122539, "eTag": "688A7BF4F233DC9C88A80BF985AB****", "key": "source/a.mp4", "size": 122539 }, "ossSchemaVersion": "1.0", "ruleId": "9adac8e253828f4f7c0466d941fa3db81161****" }, "region": "cn-hangzhou", "requestParameters": { "sourceIPAddress": "140.205.XX.XX" }, "responseElements": { "requestId": "58F9FF2D3DF792092E12044C" }, "userIdentity": { "principalId": "164901546557****" } } ] }Klik Test Function. Lihat hasilnya di tab Function Code.
Sistem alur kerja pemrosesan video
Prasyarat
Aktifkan layanan dan buat bucket
Function Compute: Aktifkan Function Compute.
Object Storage ServiceOSS: Buat bucket di Konsol OSS.
Serverless Workflow: Aktifkan Serverless Workflow.
File Storage NAS: Aktifkan Apsara File Storage NAS.
Virtual Private Cloud: Aktifkan Virtual Private Cloud.
Konfigurasikan peran layanan
AliyunFcDefaultRole: Tetapkan peran ini saat membuat layanan. Lampirkan izin
AliyunOSSFullAccess,AliyunFnFFullAccess, danAliyunFCInvocationAccessuntuk memanggil fungsi, mengelola alur kerja, dan mengelola OSS.AliyunOSSEventNotificationRole: OSS menggunakan peran ini secara default untuk mengirim notifikasi event.
fnf-execution-default-role: Diperlukan untuk membuat dan mengelola alur kerja. Lampirkan izin
AliyunFCInvocationAccessdanAliyunFnFFullAccess.
Instal dan konfigurasikan Serverless Devs
Prosedur
Solusi ini menggunakan Serverless Workflow untuk mengatur fungsi guna pemrosesan video. Ini melibatkan penulisan beberapa fungsi dan konfigurasi alur kerja. Topik ini menggunakan Serverless Devs untuk menerapkan sistem.
Jalankan perintah berikut untuk menginisialisasi aplikasi.
s init video-process-flow -d video-process-flowSaat inisialisasi, konfigurasikan item berikut. Sesuaikan nilai sesuai kebutuhan.
Item konfigurasi
Contoh
Wilayah
cn-hangzhou
Nama layanan
video-process-flow-demo
ARN peran RAM layanan Function Compute
acs:ram::10343546****:role/aliyunfcdefaultrole
Nama bucket OSS
testBucket
Prefix
source
Direktori untuk menyimpan video yang telah ditranskode
dest
ARN peran RAM pemicu OSS
acs:ram::10343546****:role/aliyunosseventnotificationrole
Durasi segmen untuk pemisahan video
30
Format video output
mp4, flv, avi
Nama alur kerja
video-process-flow
ARN peran RAM alur kerja
acs:ram::10343546****:role/fnf-execution-default-role
silakan pilih alias kredensial
default
Jalankan perintah berikut untuk masuk ke proyek dan menerapkannya.
cd video-process-flow && s deploy -yOutput penerapan berhasil:
[2023-08-31 13:22:21] [INFO] [S-CORE] - Project video-demo-flow successfully to execute fc-video-demo-split: region: cn-hangzhou service: name: video-process-flow-wg76 function: name: split runtime: python3 handler: index.handler memorySize: 3072 timeout: 600 fc-video-demo-transcode: region: cn-hangzhou service: name: video-process-flow-wg76 function: name: transcode runtime: python3 handler: index.handler memorySize: 3072 timeout: 600 fc-video-demo-merge: region: cn-hangzhou service: name: video-process-flow-wg76 function: name: merge runtime: python3 handler: index.handler memorySize: 3072 timeout: 600 fc-video-demo-after-process: region: cn-hangzhou service: name: video-process-flow-wg76 function: name: after-process runtime: python3 handler: index.handler memorySize: 512 timeout: 120 fc-oss-trigger-trigger-fnf: region: cn-hangzhou service: name: video-process-flow-wg76 function: name: trigger-fnf runtime: python3 handler: index.handler memorySize: 128 timeout: 120 triggers: - type: oss name: oss-t video-demo-flow: RegionId: cn-hangzhou Name: video-process-flowUji proyek.
Masuk ke Konsol OSS. Buka direktori source di testBucket. Unggah file video MP4.
Masuk ke Konsol Serverless Workflow. Di halaman Workflows, klik alur kerja target. Di tab Executions, klik nama eksekusi untuk melihat alur eksekusi dan statusnya.

Saat status eksekusi adalah Succeeded, buka direktori dest di testBucket untuk melihat file yang telah ditranscode.
Jika Anda melihat file yang telah ditranscode, sistem pemrosesan video berjalan dengan benar.
Referensi
FAQ
Jika saya sudah menjalankan layanan pemrosesan video berbasis FFmpeg di mesin virtual atau kontainer, apakah saya bisa meningkatkan elastisitas dan ketersediaannya?
Seperti dijelaskan dalam topik ini, layanan berbasis FFmpeg di platform mesin virtual atau kontainer dapat dengan mudah dimigrasikan ke Function Compute. Perintah FFmpeg dapat langsung dipindahkan ke Function Compute dengan biaya refactoring rendah, sekaligus mewarisi elastisitas dan ketersediaan tinggi dari Function Compute.
Bagaimana cara menangani pemrosesan konkuren banyak video?
Lihat Sistem alur kerja pemrosesan video. Ketika beberapa file diunggah ke OSS secara bersamaan, Function Compute melakukan scaling secara otomatis dan memprosesnya secara paralel. Untuk informasi selengkapnya, lihat Uji stres untuk sistem alur kerja pemrosesan video.
Saya perlu memproses batch banyak video besar dengan cepat—misalnya, ratusan video 1080p berukuran lebih dari 4 GB yang dihasilkan setiap Jumat. Saya harus menyelesaikan pemrosesan dalam beberapa jam. Bagaimana caranya?
Kontrol ukuran segmen agar setiap video besar mendapatkan sumber daya komputasi yang cukup untuk transcoding cepat. Lihat Uji stres untuk sistem alur kerja pemrosesan video.
Saya memiliki kebutuhan pemrosesan kustom tingkat lanjut—misalnya, mencatat detail transcoding di database atau melakukan prefetch video populer ke CDN untuk mengurangi beban origin. Bagaimana caranya?
Lihat Sistem alur kerja pemrosesan video. Anda dapat menambahkan langkah kustom selama pemrosesan atau memperluas alur kerja—misalnya, menambahkan langkah post-processing atau pra-pemrosesan.
Pemrosesan video kustom saya mencakup beberapa langkah—seperti transcoding, watermarking, dan menghasilkan GIF untuk halaman utama video. Bagaimana cara menambahkan fitur baru nanti—seperti menyesuaikan parameter transcoding—tanpa memengaruhi layanan yang sedang berjalan?
Lihat Sistem alur kerja pemrosesan video. Serverless Workflow hanya mengatur pemanggilan fungsi. Jadi, perbarui hanya fungsi yang relevan. Fungsi mendukung versi dan alias untuk rilis canary yang lebih aman. Untuk informasi selengkapnya, lihat Versi.
Saya hanya memerlukan transcoding sederhana atau tugas ringan—seperti mengekstrak GIF dari beberapa frame pertama video OSS atau mendapatkan durasi audio/video. Membangun solusi sendiri lebih murah. Bagaimana caranya?
Function Compute menangani kebutuhan kustom. Cukup jalankan beberapa perintah FFmpeg dalam kode Anda. Untuk contoh khas, lihat fc-oss-ffmpeg.
File sumber video saya berada di NAS atau disk cloud ECS. Saya ingin memprosesnya secara langsung tanpa memindahkannya ke OSS. Bagaimana caranya?
Function Compute dapat memasang NAS dan memproses file secara langsung. Untuk informasi selengkapnya, lihat Konfigurasikan sistem file NAS.