国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁 web前端 js教程 AWS Sideo 縮圖產(chǎn)生器 - 無伺服器 Node.js 解決方案指南

AWS Sideo 縮圖產(chǎn)生器 - 無伺服器 Node.js 解決方案指南

Dec 27, 2024 am 10:45 AM

注意:不要分成兩部分,這裡沒有足夠的文字來證明拆分的合理性,並且本文重點介紹解決方案而不是討論選擇。

需要高效且經(jīng)濟高效地大規(guī)模生成視訊縮圖嗎?讓我們使用 AWS Lambda 建立一個真正的無伺服器解決方案,與使用專用媒體處理服務(wù)相比,該解決方案的運作成本僅為幾美分。

我們要建造什麼

此解包含一個 Node.js Lambda 函數(shù),該函數(shù):

  • 處理常見影片格式
  • 依工作負(fù)載進(jìn)行擴充
  • 實作失敗操作的重試邏輯
  • 透過基礎(chǔ)設(shè)施即程式碼部署
  • 每個影片的運作成本僅為一美分

為什麼要定制

大規(guī)模產(chǎn)生縮圖並不容易,也不便宜。對於影片來說,成本因素尤其重要 - 對於圖像,您所要做的就是調(diào)整大小、裁剪並儲存相同類型的輸出。您可以將此責(zé)任轉(zhuǎn)移給第三方雲(yún)端服務(wù),以專注於提供其他功能,或者只需做一點工作即可在不離開 AWS VPC 的情況下執(zhí)行任務(wù)。但對於影片來說,情況有所不同。視訊檔案要大得多,我們必須支援大量不同的編碼標(biāo)準(zhǔn),最終結(jié)果不再是視訊 - 我們本質(zhì)上是提取靜態(tài)影像。

AWS Native = 超級昂貴

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

在研究選項時,我總是求助於應(yīng)用程式所在平臺的原生解決方案。在 AWS 中,這是 MediaConvert 或 MediaLive。當(dāng)您需要專業(yè)級視訊處理時,兩者都很棒,但當(dāng)您只想從影片中抓取縮圖時…好吧,它們確實可以做到,但它們設(shè)計是否可以處理此類用例?不是真的。

令人驚訝的是,AWS 並沒有專門用於產(chǎn)生縮圖的服務(wù)。可用的解決方案專注於其他用例,例如提供對串流媒體的支援或運行高級視訊轉(zhuǎn)換任務(wù)。

當(dāng)您查看使用這些服務(wù)建立此類功能的要求時,問題非常明顯

  • 使用 AWS Media 服務(wù)時,無法建立未定義視訊輸出的處理管道 - 您需要處理整個視訊並丟棄結(jié)果,僅使用該流程的副產(chǎn)品縮圖
  • 因此,它作為縮圖生成器非常昂貴- 每分鐘處理視頻支付0.0075 美元 可能感覺不多,但加起來很快- 對於1,000 個視頻,每個15 分鐘長的處理成本將超過$100

產(chǎn)生一些影片縮圖的成本應(yīng)該比早上喝咖啡的成本還要高嗎? ? 這只是因為這些服務(wù)雖然功能強大,但對於縮圖產(chǎn)生等簡單任務(wù)來說卻顯得有些過分了。

AWS Media 服務(wù)的真正成本不僅僅在於美元 - 還在您通常不需要的複雜性。

每次遇到新的要求時,我的思維都會調(diào)整到「尋找適合工作的完美工具」模式。我一直在宣揚不要遵循你所知道的東西的重要性,並且總是探索盡可能多的替代方案,這樣我可能會開始聽起來像一張破唱片……但我想我喜歡唱片正在播放的曲調(diào)! ??

您也可以稱之為醫(yī)療狀況。我完全意識到我的工程強迫癥問題...?

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

但是我離題了...

超越 AWS

當(dāng)然,還有其他解決方案,但它們常常帶來令人頭痛的問題:

  • 外部服務(wù)通常會按 API 呼叫或處理的資料量收費
  • 您必須將影片上傳到外部服務(wù)進(jìn)行處理,這意味著出口成本更高
  • 它們可能無法很好地擴展,讓您需要處理節(jié)流

客製化的專用解決方案

讓我們建立一些不僅更便宜,而且專注於我們實際需要的東西 - 一個可以產(chǎn)生視訊縮圖的無伺服器解決方案。 ?

系統(tǒng)使用下列 AWS 服務(wù)與工具:

  • Amazon S3 - 來源視訊和產(chǎn)生的縮圖的儲存
  • AWS Lambda - 無伺服器運算環(huán)境
  • FFmpeg - 視訊處理框架
  • Docker - FFmpeg 和 Lambda 程式碼的容器打包
  • Amazon SQS - 用於處理協(xié)調(diào)的訊息佇列

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

當(dāng)影片上傳到來源 S3 儲存桶時,它會觸發(fā)一個對處理請求進(jìn)行排隊的事件。 Lambda 函數(shù)使用在 Docker 容器中執(zhí)行的 FFmpeg 擷取並處理它。然後生成的縮圖儲存在目標(biāo) S3 儲存桶中??苫謴?fù)的暫時性問題(例如限製或基礎(chǔ)設(shè)施相關(guān)問題)會自動重試,而所有其他失敗事件會自動發(fā)送到死信佇列以進(jìn)行審核。

此服務(wù)會自動產(chǎn)生兩種尺寸的影片縮圖。較大的版本在畫面中央包含一個半透明的視訊圖標(biāo),幫助用戶快速識別視訊內(nèi)容。

範(fàn)例項目

  • 從 GH 拉取

服務(wù)

  • 編排 視訊處理實用程式
  • FFmpeg
  • 兩種縮圖類型
  • 不同尺寸,附覆蓋層 容器中的 FFmpeg
  • 這就是我們?nèi)绾巫?Ffmpeg CLI 可用於 Lambda
  • Dockerfile 部署
  • 容器建置
  • 無伺服器部署
  • Docker化的Lambda定義 測試
  • int
  • e2e 無伺服器
  • 此時還有什麼嗎?

神奇的容器?

這是我們用 Lambda 打包 FFmpeg 的 Dockerfile:

讓我看看錢! ?

讓我們來詳細(xì)分析一下每月處理 1000 個影片的成本:

AWS MediaConvert

  • 每分鐘影片 0.08 美元
  • 1000 影片 × $0.08 = $80

我們的解決方案

  • Lambda:1024MB × 10s × 1000 = 0.17 美元
  • S3:儲存 GET/PUT = $0.05
  • 總計:$0.22

成本降低了 99.7%! ?

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

可能會出現(xiàn)什麼問題? ?

雖然這個解決方案非常棒,但它並非沒有問題:

  • 記憶體使用:FFmpeg 可能會佔用大量記憶體。如果您正在處理 4K 視頻,您可能需要增加 Lambda 記憶體。
  • 超時限制:對於很長的視頻,您可能會遇到 Lambda 的超時。對於這些情況,請考慮使用階躍函數(shù)。
  • 冷啟動:容器很大,所以第一次呼叫可能會比較慢。

接下來是什麼? ?

這只是開始!您可以將此解決方案擴展到:

  • 產(chǎn)生多個縮圖尺寸
  • 擷取視訊元資料
  • 建立預(yù)覽 GIF
  • 新增影片浮水印

結(jié)束了嗎?

我們建立了一個經(jīng)濟高效、可擴展的視訊縮圖生成解決方案,而且不會花太多錢。不再需要為不需要的功能付費!

記?。河袝r最好的解決方案並不是最昂貴或最複雜的 - 而是能夠完全滿足您需要的解決方案,僅此而已。

筆記

覺得這有幫助嗎?考慮關(guān)注我以獲取更多 AWS 和無伺服器內(nèi)容!如果您的縮圖看起來像現(xiàn)代藝術(shù)而不是您的影片...那麼,請先檢查您的影片格式,然後在下面發(fā)表評論! ?

拋開所有笑話,我很想聽聽您在 AWS 中進(jìn)行視訊處理的體驗。您是否找到了其他優(yōu)化成本的創(chuàng)意方法?評論裡分享一下吧!

免責(zé)聲明

雖然此解決方案已經(jīng)在生產(chǎn)中經(jīng)過了實際測試,但請在部署之前在您自己的環(huán)境中進(jìn)行徹底測試。如果有東西著火了,我有一個很棒的棉花糖食譜! ?


--- 我的筆記 - 文章的談話重點

為什麼 docker 與 Lambda - 不是第一選擇,有時是唯一選擇,層替代
與 AWS Media 服務(wù)相比,運作起來超便宜
速度很快,可以對不同檔案大小進(jìn)行比較
可測試的 Ffmpeg

以上是AWS Sideo 縮圖產(chǎn)生器 - 無伺服器 Node.js 解決方案指南的詳細(xì)內(nèi)容。更多資訊請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Java vs. JavaScript:清除混亂 Java vs. JavaScript:清除混亂 Jun 20, 2025 am 12:27 AM

Java和JavaScript是不同的編程語言,各自適用於不同的應(yīng)用場景。 Java用於大型企業(yè)和移動應(yīng)用開發(fā),而JavaScript主要用於網(wǎng)頁開發(fā)。

JavaScript評論:簡短說明 JavaScript評論:簡短說明 Jun 19, 2025 am 12:40 AM

JavascriptconcommentsenceenceEncorenceEnterential gransimenting,reading and guidingCodeeXecution.1)單inecommentsareusedforquickexplanations.2)多l(xiāng)inecommentsexplaincomplexlogicorprovideDocumentation.3)

如何在JS中與日期和時間合作? 如何在JS中與日期和時間合作? Jul 01, 2025 am 01:27 AM

JavaScript中的日期和時間處理需注意以下幾點:1.創(chuàng)建Date對像有多種方式,推薦使用ISO格式字符串以保證兼容性;2.獲取和設(shè)置時間信息可用get和set方法,注意月份從0開始;3.手動格式化日期需拼接字符串,也可使用第三方庫;4.處理時區(qū)問題建議使用支持時區(qū)的庫,如Luxon。掌握這些要點能有效避免常見錯誤。

為什麼要將標(biāo)籤放在的底部? 為什麼要將標(biāo)籤放在的底部? Jul 02, 2025 am 01:22 AM

PlacingtagsatthebottomofablogpostorwebpageservespracticalpurposesforSEO,userexperience,anddesign.1.IthelpswithSEObyallowingsearchenginestoaccesskeyword-relevanttagswithoutclutteringthemaincontent.2.Itimprovesuserexperiencebykeepingthefocusonthearticl

JavaScript與Java:開發(fā)人員的全面比較 JavaScript與Java:開發(fā)人員的全面比較 Jun 20, 2025 am 12:21 AM

JavaScriptIspreferredforredforwebdevelverment,而Javaisbetterforlarge-ScalebackendsystystemsandSandAndRoidApps.1)JavascriptexcelcelsincreatingInteractiveWebexperienceswebexperienceswithitswithitsdynamicnnamicnnamicnnamicnnamicnemicnemicnemicnemicnemicnemicnemicnemicnddommanipulation.2)

什麼是在DOM中冒泡和捕獲的事件? 什麼是在DOM中冒泡和捕獲的事件? Jul 02, 2025 am 01:19 AM

事件捕獲和冒泡是DOM中事件傳播的兩個階段,捕獲是從頂層向下到目標(biāo)元素,冒泡是從目標(biāo)元素向上傳播到頂層。 1.事件捕獲通過addEventListener的useCapture參數(shù)設(shè)為true實現(xiàn);2.事件冒泡是默認(rèn)行為,useCapture設(shè)為false或省略;3.可使用event.stopPropagation()阻止事件傳播;4.冒泡支持事件委託,提高動態(tài)內(nèi)容處理效率;5.捕獲可用於提前攔截事件,如日誌記錄或錯誤處理。了解這兩個階段有助於精確控制JavaScript響應(yīng)用戶操作的時機和方式。

JavaScript:探索用於高效編碼的數(shù)據(jù)類型 JavaScript:探索用於高效編碼的數(shù)據(jù)類型 Jun 20, 2025 am 12:46 AM

javascripthassevenfundaMentalDatatypes:數(shù)字,弦,布爾值,未定義,null,object和symbol.1)numberSeadUble-eaduble-ecisionFormat,forwidevaluerangesbutbecautious.2)

See all articles