All Products
Search
Document Center

Function Compute:Membangun Sistem Pemrosesan Audio dan Video yang Elastis serta Highly Available Menggunakan Arsitektur Serverless

Last Updated:Mar 20, 2026

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.

image

Penerapan serverless

Sistem pemrosesan video sederhana

Jika Anda hanya memerlukan pemrosesan video dasar, gunakan arsitektur yang ditunjukkan di bawah ini.

image

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.

image

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.

    Catatan

    Segmentasi 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

Catatan

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%

Catatan

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

Prosedur

  1. Buat layanan.

    1. Masuk ke Konsol Function Compute. Di panel navigasi kiri, klik Services & Functions.

    2. Di bilah menu atas, pilih wilayah. Di halaman Services, klik Create Service.

    3. Di panel Create Service, masukkan nama dan deskripsi layanan. Konfigurasikan opsi sesuai kebutuhan. Klik OK.

      Topik ini mengatur peran layanan ke AliyunFCDefaultRole dan menambahkan kebijakan izin AliyunOSSFullAccess.

      Untuk konfigurasi layanan terperinci, lihat Buat layanan.

  2. Buat fungsi.

    1. Di halaman Function Management, klik Create Function.

    2. 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.

  3. Buat pemicu OSS.

    1. Di halaman detail fungsi, klik tab Triggers. Dari daftar drop-down Version or alias, pilih versi atau alias untuk pemicu. Klik Create Trigger.

    2. 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.

      Penting

      Jika 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.

      Catatan

      Jika ini adalah pemicu pertama Anda dari jenis ini, klik OK. Di kotak dialog, pilih Authorize now.

      AliyunOSSEventNotificationRole

  4. Tulis kode fungsi.

    1. 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 dest bucket 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 {}
    2. Klik Deploy code.

  5. 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.

    1. Di halaman detail fungsi, klik tab Function Code, lalu klik ikon dropdown icon di sebelah kanan Test Function. Dari daftar drop-down, pilih Configure Test Parameters.

    2. 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****"
                  }
              }
          ]
      }
    3. Klik Test Function. Lihat hasilnya di tab Function Code.

Sistem alur kerja pemrosesan video

Prasyarat

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.

  1. Jalankan perintah berikut untuk menginisialisasi aplikasi.

    s init video-process-flow -d video-process-flow

    Saat 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

  2. Jalankan perintah berikut untuk masuk ke proyek dan menerapkannya.

    cd video-process-flow && s deploy -y

    Output 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-flow
  3. Uji proyek.

    1. Masuk ke Konsol OSS. Buka direktori source di testBucket. Unggah file video MP4.

    2. Masuk ke Konsol Serverless Workflow. Di halaman Workflows, klik alur kerja target. Di tab Executions, klik nama eksekusi untuk melihat alur eksekusi dan statusnya.

      image.png

    3. 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.