Rumah >hujung hadapan web >tutorial js >Penjana Gambar Kecil AWS Sideo - Panduan Penyelesaian Node.js Tanpa Pelayan

Penjana Gambar Kecil AWS Sideo - Panduan Penyelesaian Node.js Tanpa Pelayan

Barbara Streisand
Barbara Streisandasal
2024-12-27 10:45:11196semak imbas

NOTA: Jangan bahagikan kepada dua bahagian, tidak ada teks yang mencukupi di sini untuk mewajarkan pemisahan dan artikel memfokuskan pada penyelesaian bukan membincangkan pilihan.

Perlu menjana lakaran kecil video dengan cekap dan kos efektif pada skala? Mari kita bina penyelesaian tanpa pelayan yang benar-benar menggunakan AWS Lambda yang memerlukan kos hanya beberapa sen untuk dijalankan, berbanding menggunakan perkhidmatan pemprosesan media khusus.

Apa yang akan kita bina

Penyelesaian terdiri daripada fungsi Node.js Lambda yang:

  • Memproses format video biasa
  • Skala berdasarkan beban kerja
  • Melaksanakan logik cuba semula untuk operasi yang gagal
  • Digunakan melalui Infrastruktur sebagai Kod
  • Kos pecahan satu sen bagi setiap video untuk disiarkan

Mengapa Adat

Bukan sangat mudah, atau murah, untuk menjana lakaran kecil pada skala. Faktor kos amat penting dalam kes video - dengan imej yang anda perlu lakukan ialah mengubah saiz, memangkas dan menyimpan output daripada jenis yang sama. Anda boleh memunggah tanggungjawab ini kepada perkhidmatan awan pihak ketiga untuk menumpukan pada penyampaian ciri lain, atau dengan hanya sedikit kerja melaksanakan tugas tanpa meninggalkan AWS VPC anda. Dengan video walaupun kesnya berbeza. Fail video adalah lebih besar, kami perlu menyokong banyak piawaian pengekodan yang berbeza, dan hasil akhirnya bukan lagi video - pada asasnya kami mengekstrak imej pegun.

AWS Native = Sangat Mahal

AWS Sideo Thumbnail Generator - The Serverless Node.js Solution Guide

Apabila menyelidik pilihan, saya sentiasa beralih kepada penyelesaian asli kepada platform aplikasi dihidupkan. Dalam AWS itulah MediaConvert atau MediaLive. Kedua-duanya hebat apabila anda memerlukan pemprosesan video gred profesional, tetapi apabila anda hanya mahu mengambil lakaran kecil daripada video... baik, mereka pasti boleh melakukannya tetapi adakah mereka direka untuk mengendalikan kes penggunaan sedemikian ? Tidak juga.

Walaupun mungkin mengejutkan, AWS tidak mempunyai perkhidmatan khusus untuk menjana lakaran kecil. Penyelesaian yang tersedia memfokuskan pada kes penggunaan lain seperti menyediakan sokongan untuk media penstriman atau menjalankan tugas transformasi video lanjutan.

Masalahnya agak jelas apabila anda melihat keperluan untuk membina ciri sedemikian dengan perkhidmatan ini

  • apabila bekerja dengan perkhidmatan AWS Media, anda tidak boleh membuat saluran paip pemprosesan yang tidak mempunyai output video yang ditentukan - anda dikehendaki memproses keseluruhan video dan membuang hasilnya hanya untuk menggunakan lakaran kecil yang merupakan hasil sampingan daripada proses tersebut
  • oleh itu sangat mahal sebagai penjana lakaran kenit - membayar $0.0075 seminit video yang diproses mungkin tidak seberapa tetapi jumlahnya sangat cepat - untuk 1,000 video, setiap 15 minit kos pemprosesan akan melebihi $100

Perlukah menjana beberapa lakaran kecil video lebih mahal daripada kopi pagi anda? ☕ Ini semata-mata kerana sekuat manapun perkhidmatan tersebut, ia adalah dan berlebihan untuk tugasan mudah seperti penjanaan imej kecil.

Kos sebenar perkhidmatan AWS Media bukan sahaja dalam dolar - ia dalam kerumitan yang anda sering tidak perlukan.

Setiap kali saya menjumpai keperluan baharu, fikiran saya menyesuaikan diri ke mod "mencari alat yang sesuai untuk kerja". Saya telah mengkhabarkan kepentingan untuk tidak mengikut apa yang anda tahu dan sentiasa meneroka sebanyak mungkin alternatif yang mungkin saya mula terdengar seperti rekod yang rosak... tetapi saya rasa saya suka lagu yang dimainkan oleh rekod itu! ??

Anda juga boleh memanggilnya sebagai keadaan perubatan. Saya sedar sepenuhnya tentang isu OCD kejuruteraan saya... ?

AWS Sideo Thumbnail Generator - The Serverless Node.js Solution Guide

Tetapi saya menyimpang...

Di luar AWS

Sudah tentu, terdapat penyelesaian lain di luar sana, tetapi ia sering datang dengan sakit kepala mereka sendiri:

  • Perkhidmatan luaran biasanya mengenakan bayaran bagi setiap panggilan API atau jumlah data yang diproses
  • Anda mesti memuat naik video anda ke perkhidmatan luaran untuk pemprosesan yang bermakna lebih banyak kos untuk keluar
  • Ia mungkin tidak berskala dengan baik, menyebabkan anda mengendalikan pendikitan

Penyelesaian Dibina Tujuan Tersuai

Mari kita bina sesuatu yang bukan sahaja lebih murah, tetapi juga berfokuskan laser pada perkara yang sebenarnya kita perlukan - penyelesaian tanpa pelayan yang menjana lakaran kecil video untuk wang literal. ?

Sistem menggunakan perkhidmatan dan alatan AWS ini:

  • Amazon S3 - Storan untuk video sumber dan lakaran kecil yang dijana
  • AWS Lambda - Persekitaran pengiraan tanpa pelayan
  • FFmpeg - Rangka kerja pemprosesan video
  • Docker - Pembungkusan bekas untuk kod FFmpeg dan Lambda
  • Amazon SQS - Baris gilir mesej untuk koordinasi pemprosesan

AWS Sideo Thumbnail Generator - The Serverless Node.js Solution Guide

Apabila video dimuat naik ke baldi S3 sumber, ia mencetuskan peristiwa yang membuat baris gilir permintaan pemprosesan. Fungsi Lambda mengambilnya dan memprosesnya menggunakan FFmpeg yang dijalankan dalam bekas Docker. Lakaran kecil yang dijana kemudiannya disimpan dalam baldi sasaran S3. Isu sementara yang boleh dipulihkan seperti masalah pendikitan atau berkaitan infrastruktur dicuba semula secara automatik, manakala semua acara lain yang gagal dihantar secara automatik ke baris gilir mati untuk tujuan pengauditan.

Perkhidmatan ini menjana lakaran kecil video dalam dua saiz secara automatik. Versi yang lebih besar termasuk ikon video separa lutsinar di tengah bingkai, membantu pengguna mengenal pasti kandungan video dengan cepat.

Contoh projek

  • Tarik dari GH

Perkhidmatan

  • orkestrasi Penggunaan Pemprosesan Video
  • FFmpeg
  • dua jenis lakaran kecil
  • saiz yang berbeza satu dengan tindanan FFmpeg dalam Bekas
  • beginilah kami menjadikan Ffmpeg CLI tersedia untuk Lambda
  • Fail Docker Kerahan
  • Binaan bekas
  • Pengaturan tanpa pelayan
  • Takrifan Lambda berlabuh Menguji
  • int
  • e2e Tanpa pelayan
  • ada perkara lain pada ketika ini?

Bekas Ajaib?

Berikut ialah Dockerfile kami yang membungkus FFmpeg dengan Lambda:

Tunjukkan Saya Wang! ?

Mari kita pecahkan kos untuk memproses 1000 video sebulan:

AWS MediaConvert

  • $0.08 seminit video
  • 1000 video × $0.08 = $80

Penyelesaian Kami

  • Lambda: 1024MB × 10s × 1000 = $0.17
  • S3: Storan GET/PUT = $0.05
  • Jumlah: $0.22

Itu adalah pengurangan kos sebanyak 99.7%! ?

AWS Sideo Thumbnail Generator - The Serverless Node.js Solution Guide

Apa yang Boleh Silap? ?

Walaupun penyelesaian ini hebat, ia bukan tanpa gotcha:

  • Penggunaan Memori: FFmpeg boleh mementingkan memori. Jika anda sedang memproses video 4K, anda mungkin perlu menambah memori Lambda.
  • Had Tamat Masa: Untuk video yang sangat panjang, anda mungkin mencapai tamat masa Lambda. Pertimbangkan untuk menggunakan fungsi langkah untuk kes tersebut.
  • Permulaan Dingin: Bekasnya agak besar, jadi seruan pertama mungkin lebih perlahan.

Apa Seterusnya? ?

Ini baru permulaan! Anda boleh melanjutkan penyelesaian ini kepada:

  • Jana berbilang saiz lakaran kecil
  • Ekstrak metadata video
  • Buat GIF pratonton
  • Tambah tera air video

Membungkus?

Kami telah membina penyelesaian yang kos efektif dan berskala untuk penjanaan lakaran kecil video yang tidak akan merugikan wang. Tiada lagi bayaran untuk ciri yang anda tidak perlukan!

Ingat: Kadangkala penyelesaian terbaik bukanlah penyelesaian yang paling mahal atau kompleks - penyelesaian itu yang melakukan apa yang anda perlukan, tidak lebih, tidak kurang.

Nota

Temui ini membantu? Pertimbangkan untuk mengikuti saya untuk mendapatkan lebih banyak kandungan AWS dan tanpa pelayan! Dan jika lakaran kecil anda kelihatan seperti seni moden dan bukannya video anda... baik, semak format video anda dahulu, kemudian lepaskan ulasan di bawah! ?

Ketepikan semua jenaka, saya ingin mendengar tentang pengalaman anda dengan pemprosesan video dalam AWS. Adakah anda telah menemui cara kreatif lain untuk mengoptimumkan kos? Kongsi dalam komen!

Penafian

Walaupun penyelesaian ini telah diuji dalam pengeluaran, sila uji dengan teliti dalam persekitaran anda sendiri sebelum digunakan. Jika ada yang terbakar, saya ada resipi yang bagus untuk marshmallow! ?


--- Nota saya - perkara bercakap untuk artikel itu

Mengapa berlabuh dengan Lambda - bukan pilihan pertama, kadangkala satu-satunya pilihan, alternatif lapisan
Ia sangat murah untuk dijalankan berbanding dengan perkhidmatan Media AWS
Ia pantas, jalankan perbandingan pada saiz fail yang berbeza
Ffmpeg boleh diuji

Atas ialah kandungan terperinci Penjana Gambar Kecil AWS Sideo - Panduan Penyelesaian Node.js Tanpa Pelayan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn