亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

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

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

Dec 27, 2024 am 10:45 AM

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

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

我們要建造什麼

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

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

為什麼要定制

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

AWS Native = 超級(jí)昂貴

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

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

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

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

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

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

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

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

您也可以稱(chēng)之為醫(yī)療狀況。我完全意識(shí)到我的工程強(qiáng)迫癥問(wèn)題...?

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

但是我離題了...

超越 AWS

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

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

客製化的專(zhuān)用解決方案

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

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

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

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

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

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

範(fàn)例項(xiàng)目

  • 從 GH 拉取

服務(wù)

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

神奇的容器?

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

讓我看看錢(qián)! ?

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

AWS MediaConvert

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

我們的解決方案

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

成本降低了 99.7%! ?

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

可能會(huì)出現(xiàn)什麼問(wèn)題? ?

雖然這個(gè)解決方案非常棒,但它並非沒(méi)有問(wèn)題:

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

接下來(lái)是什麼? ?

這只是開(kāi)始!您可以將此解決方案擴(kuò)展到:

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

結(jié)束了嗎?

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

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

筆記

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

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

免責(zé)聲明

雖然此解決方案已經(jīng)在生產(chǎn)中經(jīng)過(guò)了實(shí)際測(cè)試,但請(qǐng)?jiān)诓渴鹬霸谀约旱沫h(huán)境中進(jìn)行徹底測(cè)試。如果有東西著火了,我有一個(gè)很棒的棉花糖食譜! ?


--- 我的筆記 - 文章的談話(huà)重點(diǎn)

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

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

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

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線(xiàn)上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

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

Dreamweaver CS6

Dreamweaver CS6

視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

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

熱門(mén)話(huà)題

垃圾收集如何在JavaScript中起作用? 垃圾收集如何在JavaScript中起作用? Jul 04, 2025 am 12:42 AM

JavaScript的垃圾回收機(jī)制通過(guò)標(biāo)記-清除算法自動(dòng)管理內(nèi)存,以減少內(nèi)存洩漏風(fēng)險(xiǎn)。引擎從根對(duì)像出發(fā)遍歷並標(biāo)記活躍對(duì)象,未被標(biāo)記的則被視為垃圾並被清除。例如,當(dāng)對(duì)像不再被引用(如將變量設(shè)為null),它將在下一輪迴收中被釋放。常見(jiàn)的內(nèi)存洩漏原因包括:①未清除的定時(shí)器或事件監(jiān)聽(tīng)器;②閉包中對(duì)外部變量的引用;③全局變量持續(xù)持有大量數(shù)據(jù)。 V8引擎通過(guò)分代回收、增量標(biāo)記、並行/並發(fā)回收等策略?xún)?yōu)化回收效率,降低主線(xiàn)程阻塞時(shí)間。開(kāi)發(fā)時(shí)應(yīng)避免不必要的全局引用、及時(shí)解除對(duì)象關(guān)聯(lián),以提升性能與穩(wěn)定性。

如何在node.js中提出HTTP請(qǐng)求? 如何在node.js中提出HTTP請(qǐng)求? Jul 13, 2025 am 02:18 AM

在Node.js中發(fā)起HTTP請(qǐng)求有三種常用方式:使用內(nèi)置模塊、axios和node-fetch。 1.使用內(nèi)置的http/https模塊無(wú)需依賴(lài),適合基礎(chǔ)場(chǎng)景,但需手動(dòng)處理數(shù)據(jù)拼接和錯(cuò)誤監(jiān)聽(tīng),例如用https.get()獲取數(shù)據(jù)或通過(guò).write()發(fā)送POST請(qǐng)求;2.axios是基於Promise的第三方庫(kù),語(yǔ)法簡(jiǎn)潔且功能強(qiáng)大,支持async/await、自動(dòng)JSON轉(zhuǎn)換、攔截器等,推薦用於簡(jiǎn)化異步請(qǐng)求操作;3.node-fetch提供類(lèi)似瀏覽器fetch的風(fēng)格,基於Promise且語(yǔ)法簡(jiǎn)單

JavaScript數(shù)據(jù)類(lèi)型:原始與參考 JavaScript數(shù)據(jù)類(lèi)型:原始與參考 Jul 13, 2025 am 02:43 AM

JavaScript的數(shù)據(jù)類(lèi)型分為原始類(lèi)型和引用類(lèi)型。原始類(lèi)型包括string、number、boolean、null、undefined和symbol,其值不可變且賦值時(shí)復(fù)制副本,因此互不影響;引用類(lèi)型如對(duì)象、數(shù)組和函數(shù)存儲(chǔ)的是內(nèi)存地址,指向同一對(duì)象的變量會(huì)相互影響。判斷類(lèi)型可用typeof和instanceof,但需注意typeofnull的歷史問(wèn)題。理解這兩類(lèi)差異有助於編寫(xiě)更穩(wěn)定可靠的代碼。

JavaScript時(shí)間對(duì)象,某人構(gòu)建了一個(gè)eactexe,在Google Chrome上更快的網(wǎng)站等等 JavaScript時(shí)間對(duì)象,某人構(gòu)建了一個(gè)eactexe,在Google Chrome上更快的網(wǎng)站等等 Jul 08, 2025 pm 02:27 PM

JavaScript開(kāi)發(fā)者們,大家好!歡迎閱讀本週的JavaScript新聞!本週我們將重點(diǎn)關(guān)注:Oracle與Deno的商標(biāo)糾紛、新的JavaScript時(shí)間對(duì)象獲得瀏覽器支持、GoogleChrome的更新以及一些強(qiáng)大的開(kāi)發(fā)者工具。讓我們開(kāi)始吧! Oracle與Deno的商標(biāo)之爭(zhēng)Oracle試圖註冊(cè)“JavaScript”商標(biāo)的舉動(dòng)引發(fā)爭(zhēng)議。 Node.js和Deno的創(chuàng)建者RyanDahl已提交請(qǐng)願(yuàn)書(shū),要求取消該商標(biāo),他認(rèn)為JavaScript是一個(gè)開(kāi)放標(biāo)準(zhǔn),不應(yīng)由Oracle

React與Angular vs Vue:哪個(gè)JS框架最好? React與Angular vs Vue:哪個(gè)JS框架最好? Jul 05, 2025 am 02:24 AM

選哪個(gè)JavaScript框架最好?答案是根據(jù)需求選擇最適合的。 1.React靈活自由,適合需要高度定制、團(tuán)隊(duì)有架構(gòu)能力的中大型項(xiàng)目;2.Angular提供完整解決方案,適合企業(yè)級(jí)應(yīng)用和長(zhǎng)期維護(hù)的大項(xiàng)目;3.Vue上手簡(jiǎn)單,適合中小型項(xiàng)目或快速開(kāi)發(fā)。此外,是否已有技術(shù)棧、團(tuán)隊(duì)規(guī)模、項(xiàng)目生命週期及是否需要SSR也都是選擇框架的重要因素。總之,沒(méi)有絕對(duì)最好的框架,適合自己需求的就是最佳選擇。

立即在JavaScript中立即調(diào)用功能表達(dá)式(IIFE) 立即在JavaScript中立即調(diào)用功能表達(dá)式(IIFE) Jul 04, 2025 am 02:42 AM

IIFE(ImmediatelyInvokedFunctionExpression)是一種在定義後立即執(zhí)行的函數(shù)表達(dá)式,用於變量隔離和避免污染全局作用域。它通過(guò)將函數(shù)包裹在括號(hào)中使其成為表達(dá)式,並緊隨其後的一對(duì)括號(hào)來(lái)調(diào)用,如(function(){/code/})();。其核心用途包括:1.避免變量衝突,防止多個(gè)腳本間的命名重複;2.創(chuàng)建私有作用域,使函數(shù)內(nèi)部變量不可見(jiàn);3.模塊化代碼,便於初始化工作而不暴露過(guò)多變量。常見(jiàn)寫(xiě)法包括帶參數(shù)傳遞的版本和ES6箭頭函數(shù)版本,但需注意:必須使用表達(dá)式、結(jié)

處理諾言:鏈接,錯(cuò)誤處理和承諾在JavaScript中 處理諾言:鏈接,錯(cuò)誤處理和承諾在JavaScript中 Jul 08, 2025 am 02:40 AM

Promise是JavaScript中處理異步操作的核心機(jī)制,理解鍊式調(diào)用、錯(cuò)誤處理和組合器是掌握其應(yīng)用的關(guān)鍵。 1.鍊式調(diào)用通過(guò).then()返回新Promise實(shí)現(xiàn)異步流程串聯(lián),每個(gè).then()接收上一步結(jié)果並可返回值或Promise;2.錯(cuò)誤處理應(yīng)統(tǒng)一使用.catch()捕獲異常,避免靜默失敗,並可在catch中返回默認(rèn)值繼續(xù)流程;3.組合器如Promise.all()(全成功才成功)、Promise.race()(首個(gè)完成即返回)和Promise.allSettled()(等待所有完成)

什麼是緩存API?如何與服務(wù)人員使用? 什麼是緩存API?如何與服務(wù)人員使用? Jul 08, 2025 am 02:43 AM

CacheAPI是瀏覽器提供的一種緩存網(wǎng)絡(luò)請(qǐng)求的工具,常與ServiceWorker配合使用,以提升網(wǎng)站性能和離線(xiàn)體驗(yàn)。 1.它允許開(kāi)發(fā)者手動(dòng)存儲(chǔ)如腳本、樣式表、圖片等資源;2.可根據(jù)請(qǐng)求匹配緩存響應(yīng);3.支持刪除特定緩存或清空整個(gè)緩存;4.通過(guò)ServiceWorker監(jiān)聽(tīng)fetch事件實(shí)現(xiàn)緩存優(yōu)先或網(wǎng)絡(luò)優(yōu)先等策略;5.常用於離線(xiàn)支持、加快重複訪(fǎng)問(wèn)速度、預(yù)加載關(guān)鍵資源及後臺(tái)更新內(nèi)容;6.使用時(shí)需注意緩存版本控制、存儲(chǔ)限制及與HTTP緩存機(jī)制的區(qū)別。

See all articles