99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜AV-亚洲一级无码一区二区一-免费国产成高清人在线视频-中文字幕乱码免费观看-国产毛片精品妇女久久久

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

瀏覽器端FFmpeg轉(zhuǎn)碼實(shí)戰(zhàn):ffmpeg.js原理、配置與避坑指南

瀏覽器端FFmpeg轉(zhuǎn)碼實(shí)戰(zhàn):ffmpeg.js原理、配置與避坑指南 簡(jiǎn)介面向前端開發(fā)者與多媒體處理愛好者這套基于 ffmpeg.js 的完整瀏覽器端音視頻處理方案無(wú)需任何后端服務(wù)即可在網(wǎng)頁(yè)中直接完成視頻轉(zhuǎn)碼、音頻提取、格式轉(zhuǎn)換及攝像頭采集等操作。壓縮包共 122 個(gè)文件、約 3.44MB其中 27 個(gè) JavaScript 文件涵蓋核心轉(zhuǎn)碼邏輯與 Worker 并發(fā)調(diào)用61 張 PNG 圖片和 GIF 動(dòng)圖展示界面效果與操作流程8 份 Markdown 文檔與 6 個(gè) HTML 示例頁(yè)圍繞配置說(shuō)明、API 使用和典型場(chǎng)景做了完整演示涉及攝像頭視頻接入、圖片轉(zhuǎn)視頻、視頻流拼接等前端多媒體常用需求。包內(nèi)附有測(cè)試視頻與工程化配套如 ESLint 配置和 Dockerfile便于直接在本地或容器環(huán)境運(yùn)行調(diào)試。已有 6396 人瀏覽學(xué)習(xí)適合希望在 Web 端繞過傳統(tǒng)后端架構(gòu)、快速獲得完整音視頻處理能力的中高級(jí)前端開發(fā)者參考借鑒。1. 直接在瀏覽器里跑 FFmpegffmpeg.js 到底能省掉什么做前端的人幾乎都撞過這類需求用戶上傳個(gè)大視頻要預(yù)覽要裁剪要轉(zhuǎn)格式常規(guī)做法是扔給后端等服務(wù)器轉(zhuǎn)完再拉回來(lái)。后端排隊(duì)、帶寬折返、大文件超時(shí)每一步都是體驗(yàn)的坑。ffmpeg.js 這個(gè)庫(kù)把 FFmpeg 用 Emscripten 編譯成了 WebAssembly于是轉(zhuǎn)碼這件事可以完全發(fā)生在瀏覽器內(nèi)存里不上傳原始文件、不經(jīng)過服務(wù)器中轉(zhuǎn)、不用等隊(duì)列。它解決的問題很直接敏感視頻不出本機(jī)、轉(zhuǎn)碼延遲可控、服務(wù)器只管靜態(tài)托管不用扛計(jì)算。適合做純前端工具站、本地多媒體處理、教學(xué)演示也適合那些不想為轉(zhuǎn)碼單獨(dú)養(yǎng)一臺(tái)高配后端的小團(tuán)隊(duì)。不過真上手之后會(huì)發(fā)現(xiàn)這玩意兒不是簡(jiǎn)單地npm install就能跑通的它有一堆關(guān)于跨域隔離、Worker 線程、WASM 加載的隱藏要求不提前搞清楚照著示例代碼寫也照樣白屏報(bào)錯(cuò)。下面把運(yùn)行原理、完整操作和踩過的坑一次說(shuō)清。2. 先搞懂它怎么跑起來(lái)WASM 內(nèi)核、多線程和 SharedArrayBuffer2.1 瀏覽器里的 FFmpeg 不是虛擬機(jī)是編譯產(chǎn)物ffmpeg.js 本質(zhì)上是一個(gè)把 C 語(yǔ)言寫的 FFmpeg 源碼通過 Emscripten 交叉編譯成 WebAssembly 模塊的 JavaScript 庫(kù)。瀏覽器拿到的不是某種模擬器而是真正編譯成 WASM 字節(jié)碼的 FFmpeg 本體。正因如此它支持的功能集基本對(duì)齊了 FFmpeg 的編解碼器庫(kù)常見的 H.264、VP8、VP9、MP3、AAC、GIF 都在支持范圍內(nèi)轉(zhuǎn)封裝、轉(zhuǎn)碼、抽幀、加濾鏡這些操作也都有對(duì)應(yīng)的底層實(shí)現(xiàn)。現(xiàn)代版本的 ffmpeg.js 默認(rèn)開啟了多線程支持前提是瀏覽器環(huán)境必須滿足跨域隔離cross-origin isolation。核心依賴是 SharedArrayBuffer這個(gè)對(duì)象允許主線程和多個(gè) Worker 線程共享同一塊內(nèi)存FFmpeg 內(nèi)部的多線程編解碼才會(huì)真正生效。瀏覽器出于安全考慮只在頁(yè)面通過Cross-Origin-Embedder-Policy: require-corp和Cross-Origin-Opener-Policy: same-origin這兩個(gè)響應(yīng)頭時(shí)才會(huì)開放 SharedArrayBuffer。這意味著你用file://協(xié)議直接雙擊 HTML 打開頁(yè)面或者本地起一個(gè)沒有設(shè)置這兩個(gè)響應(yīng)頭的靜態(tài)服務(wù)器WASM 會(huì)退化到單線程運(yùn)行部分版本甚至直接初始化失敗。// 檢測(cè)當(dāng)前環(huán)境是否支持 SharedArrayBuffer if (typeof SharedArrayBuffer ! undefined) { console.log(當(dāng)前上下文已啟用共享內(nèi)存多線程轉(zhuǎn)碼可用); } else { console.warn(SharedArrayBuffer 不可用請(qǐng)檢查跨域隔離響應(yīng)頭轉(zhuǎn)碼將回退到單線程); }這段檢測(cè)代碼適合放在初始化 ffmpeg.js 之前幫你把環(huán)境問題從業(yè)務(wù)邏輯里剝離出來(lái)。單線程模式并不是完全不能用只是轉(zhuǎn)碼速度會(huì)明顯下降對(duì)大文件來(lái)說(shuō)等待時(shí)間會(huì)成倍拉長(zhǎng)。2.2 創(chuàng)建實(shí)例時(shí)到底要配置哪些參數(shù)初始化 ffmpeg.js 的 API 看起來(lái)簡(jiǎn)單但配置項(xiàng)決定了它能不能在你的項(xiàng)目里穩(wěn)定運(yùn)行。核心參數(shù)是corePath和workerPath。corePath指向 WASM 二進(jìn)制文件所在目錄workerPath指向庫(kù)內(nèi)置的 Worker 腳本。這兩個(gè)路徑必須嚴(yán)格指向?qū)嶋H存在且可跨域訪問的資源否則初始化階段就會(huì)報(bào)Failed to fetch或者worker is not defined。const { FFmpeg } require(ffmpeg/ffmpeg); const { fetchFile } require(ffmpeg/util); const ffmpeg new FFmpeg(); // 初始化把庫(kù)內(nèi)置的資源指向你的靜態(tài)目錄 await ffmpeg.load({ coreURL: /wasm/ffmpeg-core.js, wasmURL: /wasm/ffmpeg-core.wasm, workerURL: /wasm/ffmpeg-worker.js, }); console.log(FFmpeg 內(nèi)核已加載版本號(hào), ffmpeg.version);邏輯說(shuō)明load方法會(huì)依次拉取并實(shí)例化 WASM 二進(jìn)制、綁定 Worker 通信通道version屬性在初始化完成后會(huì)返回 FFmpeg 內(nèi)核的版本號(hào)可以用來(lái)做加載成功的判定。參數(shù)說(shuō)明coreURL是核心膠水代碼路徑wasmURL是真正的 WASM 二進(jìn)制workerURL是負(fù)責(zé)執(zhí)行轉(zhuǎn)碼任務(wù)的 Worker 腳本。這三個(gè)文件的路徑必須與你靜態(tài)服務(wù)器上的實(shí)際目錄結(jié)構(gòu)一致而且要保證響應(yīng)頭中Content-Type正確application/wasm是必須的否則部分瀏覽器會(huì)拒絕解析 WASM 文件。2.3 文件怎么進(jìn)去、結(jié)果怎么出來(lái)虛擬文件系統(tǒng)是理解一切的關(guān)鍵ffmpeg.js 在瀏覽器里模擬了一個(gè) FFmpeg 風(fēng)格的虛擬文件系統(tǒng)。你得先把瀏覽器里的 File 對(duì)象寫進(jìn)這個(gè)虛擬文件系統(tǒng)然后 FFmpeg 的命令才能像在本地一樣讀取它。轉(zhuǎn)碼完成后再?gòu)奶摂M文件系統(tǒng)里把輸出文件讀回來(lái)轉(zhuǎn)成瀏覽器可下載的 Blob。這套流程對(duì)應(yīng)到代碼上是標(biāo)準(zhǔn)三步寫入、執(zhí)行、讀取。const inputFile document.querySelector(#videoInput).files[0]; // 第一步把瀏覽器的 File 對(duì)象寫入虛擬文件系統(tǒng) await ffmpeg.writeFile(input.mp4, await fetchFile(inputFile)); // 第二步執(zhí)行轉(zhuǎn)碼命令 await ffmpeg.exec([-i, input.mp4, -vf, scale320:-2, output.gif]); // 第三步從虛擬文件系統(tǒng)讀取輸出結(jié)果 const data await ffmpeg.readFile(output.gif); // 轉(zhuǎn)成 Blob 后交給瀏覽器下載或預(yù)覽 const blob new Blob([data.buffer], { type: image/gif }); const url URL.createObjectURL(blob);邏輯說(shuō)明writeFile的第一個(gè)參數(shù)是虛擬文件系統(tǒng)里的文件名隨后的exec命令里引用這個(gè)名字轉(zhuǎn)碼結(jié)果再通過readFile讀出來(lái)。整個(gè)過程中原始視頻沒有離開用戶的瀏覽器隱私敏感場(chǎng)景下這一點(diǎn)價(jià)值很大。參數(shù)說(shuō)明fetchFile是工具函數(shù)用于把 File 對(duì)象轉(zhuǎn)成 Uint8Arrayscale320:-2表示將寬度縮放到 320 像素高度按原始寬高比自動(dòng)計(jì)算并保證偶數(shù)值方便 GIF 和某些編碼器做像素格式對(duì)齊。輸出 Blob 的 MIME 類型要跟實(shí)際生成的格式保持一致否則部分瀏覽器下載時(shí)擴(kuò)展名會(huì)不正確。3. MP4 轉(zhuǎn) GIF 完整實(shí)操參數(shù)怎么配、卡頓怎么調(diào)3.1 轉(zhuǎn) GIF 的最短可用命令與參數(shù)語(yǔ)義MP4 轉(zhuǎn) GIF 是 ffmpeg.js 最常見的場(chǎng)景。GIF 格式本身只支持 256 色也沒有高效的壓縮算法所以命令的關(guān)鍵參數(shù)集中在尺寸縮放、幀率控制和調(diào)色板優(yōu)化上。await ffmpeg.exec([ -i, input.mp4, -vf, fps10,scale320:-2:flagslanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse, -loop, 0, output.gif ]);邏輯說(shuō)明這條命令先限制輸出幀率為 10 幀每秒再用 lanczos 算法做高質(zhì)量縮放然后通過split把畫面流分成兩路一路用于生成調(diào)色板另一路配合調(diào)色板執(zhí)行最終的顏色映射。-loop 0表示無(wú)限循環(huán)播放這是 GIF 在社交媒體場(chǎng)景下的默認(rèn)預(yù)期。參數(shù)說(shuō)明fps10可以顯著縮小 GIF 體積原視頻如果是 30fps降到這里體積大約能減少三分之二代價(jià)是畫面流暢度下降。scale320:-2中的-2是一個(gè)特殊寫法要求 FFmpeg 自動(dòng)計(jì)算高度并取偶數(shù)如果不這樣做某些 GIF 編碼器會(huì)因?qū)挾雀叨葹槠鏀?shù)而報(bào)錯(cuò)。palettegen和paletteuse是 GIF 畫質(zhì)的關(guān)鍵直接忽略它們會(huì)讓 GIF 出現(xiàn)明顯色帶和噪點(diǎn)。3.2 體積與畫質(zhì)的平衡色階、抖動(dòng)和幀率的組合GIF 體積過大會(huì)讓頁(yè)面卡頓甚至超過瀏覽器對(duì) Blob 內(nèi)存的承受范圍。這里的關(guān)鍵變量有三個(gè)幀率、分辨率、顏色數(shù)量。常見的組合策略是網(wǎng)絡(luò)展示用fps10, scale320:-2保證體積在 1-2MB 左右教學(xué)演示用fps15, scale480:-2, palettegenstats_modediff兼顧流暢度和細(xì)節(jié)追求極致畫質(zhì)則用fps20, scale640:-2但必須接受 5MB 以上的體積。await ffmpeg.exec([ -i, input.mp4, -vf, fps15,scale480:-2:flagslanczos,split[s0][s1];[s0]palettegenstats_modediff[p];[s1][p]paletteuseditherbayer:bayer_scale5, -loop, 0, output_medium.gif ]);參數(shù)說(shuō)明stats_modediff會(huì)針對(duì)連續(xù)幀之間的差異來(lái)生成調(diào)色板適合畫面變化頻繁的視頻生成的 GIF 顏色分布更合理。ditherbayer:bayer_scale5用拜耳抖動(dòng)算法能在有限色板下模擬出中間色調(diào)bayer_scale 數(shù)值越大抖動(dòng)顆粒越細(xì)膩但文件體積也會(huì)略微上升。這套組合適合大多數(shù)常見視頻可讀性高、體積可控、兼容性最好。如果輸出仍然偏大優(yōu)先降幀率而不是降分辨率因?yàn)槿搜蹖?duì)幀率降低的敏感度低于對(duì)分辨率模糊的敏感度。3.3 轉(zhuǎn)碼進(jìn)度反饋用戶不想要一個(gè)白屏ffmpeg.js 原生進(jìn)度事件是低頻的只報(bào)告當(dāng)前處理到第幾幀而且只有幀級(jí)別反饋對(duì)大文件來(lái)說(shuō)用戶會(huì)以為瀏覽器卡死了。解決思路是監(jiān)聽progress事件結(jié)合輸入視頻的總幀數(shù)和當(dāng)前已處理幀數(shù)計(jì)算百分比??値瑪?shù)可以通過ffprobe方式獲取運(yùn)行ffmpeg.exec([-i, input.mp4])會(huì)觸發(fā) stderr 輸出從中可以解析到Duration和Stream信息。let totalFrames 0; let duration 0; // 先探測(cè)視頻元數(shù)據(jù)此時(shí)故意不指定輸出文件 ffmpeg.on(log, ({ message }) { const durationMatch message.match(/Duration: (\d{2}):(\d{2}):(\d{2}\.\d{2})/); if (durationMatch) { duration parseInt(durationMatch[1]) * 3600 parseInt(durationMatch[2]) * 60 parseFloat(durationMatch[3]); totalFrames Math.round(duration * 15); // 按目標(biāo)幀率估算總幀數(shù) } }); ffmpeg.on(progress, ({ progress, time }) { const currentTime time / 1000000; // 微秒轉(zhuǎn)秒 const percent Math.min(100, Math.round((currentTime / duration) * 100)); updateProgressBar(percent); }); await ffmpeg.exec([-i, input.mp4]); await ffmpeg.exec([-i, input.mp4, -vf, fps15,..., output.gif]);邏輯說(shuō)明第一次exec只輸入文件不指定輸出FFmpeg 會(huì)把視頻的詳細(xì)信息打印到日志里我們通過正則解析出Duration字段估算出總幀數(shù)。第二次exec才是真正的轉(zhuǎn)碼進(jìn)度回調(diào)里拿到的是當(dāng)前播放時(shí)間戳用它除以總時(shí)長(zhǎng)就能得到百分比。參數(shù)說(shuō)明time單位是微秒除以 1000000 才是秒這個(gè)坑很多從示例代碼復(fù)制粘貼的人都會(huì)踩。progress的取值范圍是 0 到 1但用它算百分比往往不準(zhǔn)確因?yàn)槟悴恢?FFmpeg 內(nèi)部是拿什么做分母的用 duration 來(lái)計(jì)算更穩(wěn)。4. MP4 轉(zhuǎn) WebM 格式面向?yàn)g覽器播放的編碼選擇4.1 為什么轉(zhuǎn) WebM 而不是直接轉(zhuǎn) MP4WebM 格式在瀏覽器兼容性上比 MP4 更省心它的容器結(jié)構(gòu)簡(jiǎn)單、編碼格式開放Chrome、Firefox、Edge 等主流瀏覽器原生支持不需要額外處理 H.264 的專利授權(quán)問題。ffmpeg.js 轉(zhuǎn) WebM 最常用的是 VP9 編碼器壓縮率高、畫質(zhì)好但編碼速度慢追求速度就用 VP8體積稍大但轉(zhuǎn)碼時(shí)間能縮減一半以上。await ffmpeg.exec([ -i, input.mp4, -c:v, libvpx-vp9, -b:v, 1M, -cpu-used, 4, -deadline, realtime, -c:a, libopus, -b:a, 128k, output.webm ]);邏輯說(shuō)明libvpx-vp9是 FFmpeg 內(nèi)置的 VP9 編碼器參數(shù)集中在碼率控制、編碼速度和音頻編碼上。-cpu-used 4這個(gè)參數(shù)容易被忽略但它直接決定編碼速度數(shù)值越高越快畫質(zhì)會(huì)有輕微下降。-deadline realtime告訴編碼器不要追求極致壓縮比優(yōu)先保證實(shí)時(shí)輸出對(duì)瀏覽器端的內(nèi)存占用也有好處。參數(shù)說(shuō)明-b:v 1M指定視頻目標(biāo)碼率 1Mbps網(wǎng)絡(luò)視頻夠用libopus是 WebM 容器中最推薦的音頻編碼格式-b:a 128k是音頻碼率。如果原始視頻沒有音軌把-c:a這行刪掉即可。4.2 不需要音頻時(shí)如何做純視頻流很多場(chǎng)景下只需要畫面不要聲音比如做視頻預(yù)覽、抽幀分析。這時(shí)候用-an參數(shù)直接丟棄音軌能節(jié)省編碼時(shí)間且輸出文件更純。await ffmpeg.exec([ -i, input.mp4, -c:v, libvpx-vp9, -b:v, 800k, -an, output_silent.webm ]);參數(shù)說(shuō)明-an是 disable audio 的縮寫要求 FFmpeg 不處理任何音頻流。加了-an之后輸出文件里只有視頻軌文件體積會(huì)小于帶音頻的版本同時(shí)編碼速度會(huì)有小幅提升。這種輸出特別適合作為網(wǎng)頁(yè)里的靜音自動(dòng)播放資源因?yàn)榇蠖鄶?shù)瀏覽器允許無(wú)聲視頻自動(dòng)播放音頻會(huì)觸發(fā)用戶手勢(shì)限制。4.3 轉(zhuǎn)碼完成后的內(nèi)存釋放問題瀏覽器端做轉(zhuǎn)碼最容易被忽略的是內(nèi)存管理。每次exec調(diào)用都會(huì)在 WASM 堆里分配內(nèi)存多次轉(zhuǎn)碼后內(nèi)存占用會(huì)不斷累積。ffmpeg.js 沒有提供自動(dòng)內(nèi)存回收機(jī)制你需要手動(dòng)管理虛擬文件系統(tǒng)里的文件用完就刪。// 刪除虛擬文件系統(tǒng)中的輸入和輸出釋放 WASM 堆內(nèi)存 await ffmpeg.deleteFile(input.mp4); await ffmpeg.deleteFile(output.webm);邏輯說(shuō)明轉(zhuǎn)碼完成后虛擬文件系統(tǒng)里仍然保存著原始視頻和輸出視頻這些文件占用的是 WASM 共享內(nèi)存不清理的話多次操作后頁(yè)面會(huì)變得非??ㄉ踔劣|發(fā)Out of memory崩潰。參數(shù)說(shuō)明deleteFile是異步方法必須await否則下一次writeFile同路徑文件時(shí)可能因?yàn)榕f文件還在而報(bào)EEXIST錯(cuò)誤。習(xí)慣上在每次轉(zhuǎn)碼流程結(jié)束后統(tǒng)一清理比每次單獨(dú)清理更不容易漏。5. 避坑指南我踩過的六個(gè) ffmpeg.js 現(xiàn)場(chǎng)問題5.1 SharedArrayBuffer 不可用導(dǎo)致初始化失敗現(xiàn)象ffmpeg.load()執(zhí)行后報(bào)錯(cuò)控制臺(tái)提示SharedArrayBuffer is not defined或者初始化卡住不動(dòng)。原因?yàn)g覽器只有在頁(yè)面啟用跨域隔離后才開放 SharedArrayBuffer。使用file://協(xié)議直接打開頁(yè)面、本地靜態(tài)服務(wù)器沒有設(shè)置Cross-Origin-Embedder-Policy和Cross-Origin-Opener-Policy響應(yīng)頭都會(huì)導(dǎo)致這個(gè)結(jié)果。解決本地開發(fā)時(shí)用 HTTP 服務(wù)器并設(shè)置響應(yīng)頭。常見的做法是用一個(gè)簡(jiǎn)單的 Node.js 中間件給所有靜態(tài)資源加響應(yīng)頭。// 本地開發(fā)服務(wù)器示例為所有請(qǐng)求注入跨域隔離響應(yīng)頭 const express require(express); const app express(); app.use((req, res, next) { res.setHeader(Cross-Origin-Embedder-Policy, require-corp); res.setHeader(Cross-Origin-Opener-Policy, same-origin); next(); }); app.use(express.static(public)); app.listen(3000, () console.log(Server running at http://localhost:3000));邏輯說(shuō)明Cross-Origin-Embedder-Policy: require-corp告訴瀏覽器頁(yè)面只能加載同源或明確聲明了跨域允許的資源Cross-Origin-Opener-Policy: same-origin確保頁(yè)面打開的窗口與原頁(yè)面共享同一個(gè)瀏覽上下文組兩者配合才滿足 SharedArrayBuffer 的啟用條件。注意所有資源包括 WASM 文件和 Worker 腳本都必須通過這個(gè)服務(wù)器訪問否則會(huì)因?yàn)?CORP 策略而加載失敗。5.2 WASM 文件 404 或 MIME 類型錯(cuò)誤現(xiàn)象控制臺(tái)報(bào)Failed to fetch檢查網(wǎng)絡(luò)面板發(fā)現(xiàn)ffmpeg-core.wasm返回 404或者返回了但不被識(shí)別。原因coreURL和wasmURL路徑寫錯(cuò)或者靜態(tài)服務(wù)器不認(rèn)識(shí).wasm文件的 MIME 類型。部分開發(fā)服務(wù)器默認(rèn)不處理.wasm擴(kuò)展名會(huì)把它當(dāng)普通文本發(fā)送。解決確認(rèn)路徑指向正確并確保服務(wù)器對(duì).wasm響應(yīng)Content-Type: application/wasm。如果你用的是 nginx在配置里加一行types { application/wasm wasm; }如果用的是 webpack-dev-server在devServer里配置headers。路徑問題排查順序是先看網(wǎng)絡(luò)請(qǐng)求的實(shí)際 URL再對(duì)照靜態(tài)目錄結(jié)構(gòu)不要在代碼里反復(fù)猜。5.3 worker 腳本加載失敗或跨域受限現(xiàn)象初始化時(shí)報(bào)worker is not defined或者 Worker 啟動(dòng)后沒有任何輸出。原因workerURL指向的 Worker 文件路徑不對(duì)或者該腳本沒有正確的 CORS 響應(yīng)頭。Worker 腳本和頁(yè)面必須同源否則會(huì)被瀏覽器攔截。有些 CDN 資源可以通過crossorigin屬性加載圖片和腳本但 Worker 的加載規(guī)則更嚴(yán)格。解決將 Worker 腳本放在與頁(yè)面同源的靜態(tài)目錄中避免從第三方 CDN 直接引用。如果一定要用 CDN需要確認(rèn)該 CDN 對(duì) Worker 加載場(chǎng)景的兼容性很多 CDN 的響應(yīng)頭是給腳本資源用的并不滿足 Worker 的安全要求。5.4 轉(zhuǎn)碼大文件導(dǎo)致內(nèi)存溢出或頁(yè)面崩潰現(xiàn)象幾百 MB 的視頻文件執(zhí)行轉(zhuǎn)碼時(shí)頁(yè)面標(biāo)簽頁(yè)直接白屏或者控制臺(tái)報(bào)Out of memory。原因ffmpeg.js 會(huì)把輸入文件完整讀入 WASM 共享內(nèi)存輸出文件也存放在同一塊內(nèi)存里。文件越大內(nèi)存占用越高瀏覽器單標(biāo)簽頁(yè)的內(nèi)存上限一般在 2-4GB 之間超出后唯一結(jié)果是崩潰。解決限制輸入文件大小加上前端的文件選擇過濾。另一個(gè)技巧是在轉(zhuǎn)碼前先用-ss和-t截取片段只處理需要的部分而不是整個(gè)文件。這種做法在有預(yù)覽需求的場(chǎng)景下尤其實(shí)用既能快速出圖出視頻又能顯著降低內(nèi)存壓力。5.5 轉(zhuǎn)碼過程沒有日志輸出不知道執(zhí)行到哪一步現(xiàn)象exec執(zhí)行后一切靜悄悄看不到任何過程信息只能干等。原因ffmpeg.js 的日志事件默認(rèn)可能被忽略或者你在初始化時(shí)沒有綁定log事件處理器。有些版本需要顯式開啟日志輸出才能看到 stderr 的信息流。解決在初始化之后立即綁定log事件或者在exec之前調(diào)用一個(gè)事件綁定函數(shù)。日志信息對(duì)排查參數(shù)錯(cuò)誤和濾鏡語(yǔ)法錯(cuò)誤非常關(guān)鍵FFmpeg 的報(bào)錯(cuò)信息全部走 stderr看不到它等于瞎折騰。5.6 高分辨率視頻縮放后輸出色偏或綠屏現(xiàn)象輸出視頻畫面整體發(fā)綠或出現(xiàn)大量馬賽克尤其在 H.264 轉(zhuǎn) H.264 的場(chǎng)景中高頻出現(xiàn)。原因常見原因是像素格式不匹配輸入視頻是yuv420p輸出端指定的編碼器預(yù)設(shè)了不同的像素格式或者濾鏡鏈里缺少像素格式轉(zhuǎn)換環(huán)節(jié)。解決在濾鏡鏈末尾顯式加上formatyuv420p強(qiáng)制統(tǒng)一輸出格式。這個(gè)問題在轉(zhuǎn) MP4 時(shí)尤其典型瀏覽器普遍對(duì) H.264 編碼和yuv420p像素格式有硬性要求漏掉這一步大概率會(huì)出現(xiàn)花屏或綠屏。await ffmpeg.exec([ -i, input.mp4, -vf, scale1280:-2,formatyuv420p, -c:v, libx264, -preset, veryfast, -c:a, aac, output.mp4 ]);邏輯說(shuō)明-vf里最后一段formatyuv420p強(qiáng)制輸出像素格式確保瀏覽器可以直接解碼渲染。-preset veryfast是編碼速度和壓縮率的折中方案瀏覽器端建議使用比slow快很多體積差異在短片段里幾乎感知不到。參數(shù)說(shuō)明libx264是 FFmpeg 內(nèi)置的 H.264 編碼器兼容性最廣aac是音頻編碼MP4 容器標(biāo)配。6. 進(jìn)階用法用多線程參數(shù)和批處理榨干瀏覽器性能既然環(huán)境允許 SharedArrayBuffer那就要把多線程的優(yōu)勢(shì)發(fā)揮出來(lái)。FFmpeg 的 H.264 和 VP9 編碼器都支持-threads參數(shù)但瀏覽器端的線程數(shù)不是隨便設(shè)定的。常見的做法是先用硬件并發(fā)數(shù)作為初始值再根據(jù)編碼器類型微調(diào)。Chrome 桌面版通常能拿到 8 到 16 個(gè)邏輯核心但 WASM 多線程并不是每個(gè)線程都能吃滿 CPU實(shí)測(cè)下來(lái) 4 線程到 6 線程是收益最明顯的區(qū)間超過 8 線程之后提升幅度急劇收窄反而增加線程切換開銷。const coreCount navigator.hardwareConcurrency || 4; const threadCount Math.min(coreCount, 6); await ffmpeg.exec([ -i, input.mp4, -c:v, libx264, -preset, veryfast, -threads, String(threadCount), -c:a, copy, output.mp4 ]);邏輯說(shuō)明navigator.hardwareConcurrency返回瀏覽器可用的邏輯核心數(shù)但你不能直接用它做線程數(shù)因?yàn)闉g覽器本身和其他標(biāo)簽頁(yè)也在占用 CPU。取 min(核心數(shù), 6) 是兼顧穩(wěn)定性和速度的經(jīng)驗(yàn)值。參數(shù)說(shuō)明-c:a copy表示音頻不重新編碼直接復(fù)制到輸出容器這樣能省下大量編碼時(shí)間前提是輸入和輸出的音頻格式兼容MP4 容器內(nèi)包含 AAC 音頻時(shí)可以直接復(fù)制。批處理場(chǎng)景是另一個(gè)能明顯提升體驗(yàn)的用法。如果你要處理一個(gè)文件夾里的多個(gè)視頻不能簡(jiǎn)單地用 for 循環(huán)逐個(gè)執(zhí)行因?yàn)槊總€(gè)exec調(diào)用都會(huì)傳遞全部?jī)?nèi)存上下文。正確做法是串行隊(duì)列前一個(gè)任務(wù)完成后立即清理內(nèi)存再執(zhí)行下一個(gè)。下面的代碼展示了一個(gè)簡(jiǎn)單的隊(duì)列控制器const inputFiles [file1, file2, file3]; // 用戶選擇的多個(gè)文件 const results []; for (const file of inputFiles) { const inputName input_${Date.now()}.mp4; const outputName output_${Date.now()}.webm; await ffmpeg.writeFile(inputName, await fetchFile(file)); await ffmpeg.exec([-i, inputName, -c:v, libvpx-vp9, -b:v, 1M, outputName]); const outputData await ffmpeg.readFile(outputName); results.push(new Blob([outputData.buffer], { type: video/webm })); await ffmpeg.deleteFile(inputName); await ffmpeg.deleteFile(outputName); } console.log(批處理完成共生成, results.length, 個(gè)文件);邏輯說(shuō)明循環(huán)中每個(gè)文件使用獨(dú)立的時(shí)間戳命名避免多個(gè)輸入文件寫入虛擬文件系統(tǒng)時(shí)路徑?jīng)_突。每個(gè)文件處理完成后立即刪除輸入和輸出把 WASM 內(nèi)存占用控制在單個(gè)文件級(jí)別。參數(shù)說(shuō)明時(shí)間戳命名的作用是防止第二次循環(huán)執(zhí)行writeFile時(shí)因?yàn)槲募汛嬖诙鴪?bào)錯(cuò)這是批處理任務(wù)最容易踩的坑文件路徑必須唯一。Date.now()在循環(huán)中連續(xù)調(diào)用會(huì)有重復(fù)風(fēng)險(xiǎn)極端情況下可以追加循環(huán)索引做后綴。最后分享一個(gè)性能對(duì)比的參考維度同樣一個(gè) 30 秒 1080p 視頻轉(zhuǎn) 480p WebM本地 FFmpeg 進(jìn)程大約耗時(shí) 8 秒而 ffmpeg.js 在 Chrome 上啟用 4 線程后大約耗時(shí) 15 到 20 秒。瀏覽器端并不是不能做轉(zhuǎn)碼而是它更適合 2 到 5 分鐘內(nèi)的短視頻長(zhǎng)視頻或大批量任務(wù)還是建議交給后端。從那以后我每次做選型評(píng)估都會(huì)先把「文件大小上限」和「轉(zhuǎn)碼時(shí)長(zhǎng)上限」兩個(gè)閾值定下來(lái)再?zèng)Q定用 ffmpeg.js 還是后端方案。這套判斷標(biāo)準(zhǔn)幫我避免了好幾次本來(lái)性能堪憂的架構(gòu)設(shè)計(jì)希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
婷婷香五月天| www.五月婷婷.com| 丁香操逼| 亚洲超碰在线| 五月天社区狠狠| 狠狠爱婷婷色| 婷婷婷狠狠| 美女美女美女三级色天天天天天| 激情久久久| 人妻久久婷婷| 色5月婷婷| 亚洲无码免费看| www.久久综合| 天天搞天天色综合| 日本99久久| 国产午夜精品AV一区二区麻豆| 五月丁香六月婷婷综合伊人| 日本高清久久| 婷婷大乡焦噜噜| 日本人妻伦在线中文字幕| 激情五月色综合| WWW99热| 色色丁香婷婷| 欧美性爱五月天| 欧美日韩91| 大伊香蕉精品视频在线| 99ri在线视频| 超碰操网| 玖玖五月丁香| 51国精产品自偷自偷综合| 97色欧美| 99久在线| 综合大香蕉| 五月天丁香婷婷久久九| 国产日产亚洲系列最新| 五月丁香网站| 爱射综合| 免费黄色片子| 九九99免费视频| 日韩综合大黄| m色激情网| 99视频内射三四| 香蕉色色网| 99精品无码| 人妻久久人妻久久第一区| 六月丁香五月天| 婷婷五月天影视网址| 思思久久精品| 久久五月丁香伊人青草| 9久久精品| 久久九精品| 国外亚洲成AV人片在线观看| 色吧综合网| 丁香婷婷激情五月天无毒不卡蜜桃| 色婷婷五月综合在线| 婷婷激情综合网| 六月婷婷青青青视频| 伊人天堂婷婷| 激情五月天影院| 99操逼| 久久丝袜婷婷| 99久在线观看| 噜噜色五月| 五月丁香六月激情| 热婷婷av| 婷婷五月天AV在线| 人人操99| 国内裸舞二区| 26UUU精品一区二区Com| 婷婷五月丁香久久| 激情综合五月开心狠狠| 亚洲成人无码网站| 久99热| 日本九九视频| 天天做天天爱| 91操黄| 久久人妻超碰一区| 亚洲4区国产欧美| 热无码A∨| 97人人看一| 影音先锋男人av资源站| 超碰9在| 婷婷五月,偷窥偷拍网| 艹色18p| 日欧一片内射VA在线影院| 色五月婷婷基地| 五月婷婷中文| 99se丁香| 亚洲啪啪啪啪| 五六月丁香激情视频| 热的无码综合视频| 亚洲成人av在线播放| 91凹凸在线| 久久综合爱| 99久久6| 丁香五月色| 综合久久99| 国外亚洲成AV人片在线观看| 亚洲无码你懂的| 大香蕉婷婷五月| 九九热re99re6在线精品| 六月婷婷七月丁香| 五月四色色| 久久这里有精品在线观看| 丁香六月情| 日本系列_4页_777FP| 91久久综合亚洲鲁鲁五月天| 国产精品美女久久久久AV超清| 99五月香婷婷丁香在线视频| Www99热| 婷婷99狠狠躁天天躁| 五月天激情综合首页| 丁香五月天精品| 人人草人| 国产午夜精品一区二区三区四区| 中文AV在线观看| 99精品久久| 五月天成人在线播放丁香| 五月天激情小说| 色色色色综合| 青青草色在线视频观看| 97丁香五月| 九九五月天| 99丁香婷婷综合网| 五月婷婷中字在线| 婷婷综合久久| 激情婷婷五月少妇| rr天天操| 六月婷欧美丁香综合| 综合色色婷婷| 中文久久婷婷| 久久久香港| 婷婷激情五月吧| 九月影院義母在线播放| 182tv992tv人之初午夜免费观看| 婷婷五月天视| 99热.com| 久久色这里只有精品| 久热免费视频| 亚洲偷| 五月丁香操婷逼| 夜夜噜夜夜奇| 九九在线精品| 亚洲无码色| 色吧综合网| 人伦30P| 亚洲狠狠操| 1024人妻| 五月色网| 99精品亚洲| 久久综合色情网站| 五月婷婷av| ..真实国产乱子伦毛片| 欧洲激情五月天| 一起草av| 99思思在线视频| 97色啪| 在线看AV| 婷婷五月天男人影院色色网| 欧美三9久九观看| 超碰97人人操| 大香蕉九九| 影音先锋按摩| 天天插天天干| 99久热这里有精品| 亚洲精品a成人在线播放| 国产免费一区二区在线A片视频| 九九热免费| AA片在线观看视频在线播放| 五月婷婷免费视频| 色九九中文字幕| 色五月av伊人| 久久久久久99日本| 综合久久99| 日本少妇AA一级特黄大片| 色丁香五月婷婷在线| 国产XXXX搡XXXXX搡麻豆| 欧洲亚洲免费视频9| www九九热| 婷婷五月香蕉| 亚洲亚洲激情| 免费日本aⅴ中文字幕| 久久婷婷在线| 五月天操逼网| 第九色区av天堂| 丁香婷婷激情五月| 日韩av高清| 五月激情综| 欧美婷婷精品激| 天天爱天天秀天天做| 综合激情在线观看| 婷婷综合网| 丁香六月爱综合| 人五月天婷婷喷水| 日本美女上人| 韩国婷婷丁香五月| 91ncm视频| 亚洲激情av| 久久婷婷青草五月天| 人妻精品一区二区三区| 少妇人妻凹凸视频| 91成人品| 大香蕉AV电影在线| 国产超碰在线| 久热只有这里精品| 五月天色图| 色色色色色色色色色影院| 五月婷婷网站| 丁香五月婷婷六月婷婷| 91九色无码内射| 亚洲免费观看高清完整版AV线| 激情九月婷婷| 五月天激情日色在线| 97色啪| 五月丁香猫咪久久婷婷综合视频激情四射网入口| 婷婷五月天小说| 天天综合社区| 丁香五月日本| 丁香六月开心| av第一二区| 99热精品观看| 啪啪六月婷婷| 91小黄书网址在线观看| 婷婷中文字幕| 国产成人高清| txt五月激情四射网综合俺也来了| 狠狠干综合网| 婷婷五月天六点丁香五月| 精品成人在线观看| 日韩精品一区二区刘| 91久久婷婷| 色了色综合| 9热精品| 精品影院| 老司机日日夜夜青草| 亚洲日韩26uuu| 伊九九三级区| 99九九在线观看免费| A片试看120分钟做受视频红杏| WWW.桔色成人.COM| 天天综合网网欲色| 日日日影院| 欧美色婷婷| 99精品久久久久久久久| 五月天激情色色| 操一区| 五月婷婷六月丁香在线视频| 六月婷婷狠狠做| 久综合网| 51XX午夜影福利| 秋霞免费视频| 99免费超碰在线| 99天天操夜夜操| 超碰在线资源| 影音先锋色婷婷| 在线中文亚洲| 激情婷婷五六月天| 久99| 久久久久激情网| 久久66成人网站| 久久在这里有精品| 大波美女VA网站| 成久综合视频| 五月婷婷在线短视频| 狠狠爱婷婷色| 五月婷婷色综图片| 96精品久久久久久久久| 色域五月婷婷丁香| 久久久久久久97| 婷婷婷久久久| 丁香五月综合激情啪啪| 色婷婷操逼| 欧美日比视频| 99综合网| 玖玖99免费视频| 思思久热6| 五月婷婷久久激情| 日韩在线视频中文字幕| dingxiangtingtingliuyue| 日本九九九九九九| 96丁香六月婷婷蜜桃综合久久| 97AV人人插人人操| 亚洲av无码精品色午夜| 99热综合在线| 涩综合在线| 五月婷色| 色五月婷婷、老熟女| 五月天婷亚洲天综合网综合| 色高清无码视频| 五月丁香六月情婷婷久久| 五月色欧洲| 天天开心AV色综合婷婷五月天| 天天拍夜夜爽日日| 久机视频这只有精品| 五月天网站亭亭| 色婷婷久久| 激情婷婷久久| 免费看欧美成人A片无码| 日狠狠| 欧美成人AAA片一区国产精品 | 婷婷六月激情小说网| 色情五月天小说| 99亚洲综合| 婷婷五月AV| 婷婷丁香18| www.婷婷亚洲基地| 一区二区无码视频| 伊人久久大香网| 丁香五月婷婷啪| 五月天婷婷伊人| 五月婷婷六月丁香在线视频| 欧美丁香婷婷五月| 日韩aⅴ视频| 一操久久| 天天成人五月天| 综合久久99| 97色色色色色| 亚洲视频1区| 五月婷婷激情| 99成人精品| 秋霞AV淫| 欧美一级a| 五月综合激情| 亚洲欧美一区二区三区四区爱爱动图| 婷婷激情小说| 婷婷 丁香 久久| 大香蕉手机视频| 热99只有精品| 婷婷狠狠操| 大香久久综合网| 色色婷| 久久人妻高清中文| 97天堂| 婷婷五月精品中文字幕| 思思热精品在线观看| 天天日,天天插| www.99.色| 久久98| 亚洲色情网站| 色五月激情五月| 亚洲视频国产一区| 亚洲成人在线五月天| 夜夜爽天天爽| 久久 婷婷 五月天| 另类视频五月天| 黄色片久久| 操逼综合网| 天天爽天天干| AV在线观看网站| 99爱在线精品视频免费观看| 91午夜婷婷狠狠久久综合9色| 色久九| 99re思思久久| 伦乱人妻| 五月婷婷 激情五月| 亚洲中文字幕在线观看| 五月天激情黄色小说在线观看| 丁香六月婷婷激情| 五月丁香六月在线欧美| 99色在线视频| AA丁香综合激情| 日本社区五月天激情| 五月永久激情| 天天干天天拍| 99国产小视频2013| 91精品久久久久久综合五月天| 久久38视频| 五月婷婷免费在线观看| 五月桃花网综合| 婷婷基地成人五月天| 五月丁香啪啪婷婷| 中文精品在| 久久伊人五月天| 婷婷五月天综合久久日| 熟妇人妻中文字幕无码老熟妇| 99日本精品视频热| 丁香成人五月天| 久久丝丝热| 久久婷婷综| 婷婷激情人妻| 97色婷| 人人操人人操919999| 成人丁香| 色五月天丁香婷婷| 久久97| 伊人久久大香网| 免费观看日韩成人av| 99这里只有精| 黄网免费观看| 欧美性爱五月天| 午夜成人AV在线| 亚洲最大视频| 婷婷丁香成人在线视频| 婷婷五月天综合亚洲| 婷婷五月色网| 久草五月天| 婷婷五月色综合| 日韩另类在线观看| 欧洲不卡视频| 伊人久久婷婷| 四月婷婷丁香| 五月天激情小说婷婷| www.五月天| 久热中文字幕在线线观看| 六月五月天婷婷涩播在线| 成人丁香婷婷五月天| 大香久久伊人网| 超碰在线观看9| 无码色色色色色| 99热这里只有精| 天天射夜夜骑| 五月色婷婷影院| 色婷婷五月天偷拍| www激情com| 婷婷久久性爱| 青草视频在线观看视频| 8区视频在线| 丁香亭亭久久| 国产AV不卡福利| 日日噜噜夜夜狠狠久久丁香六月| 婷婷五月天免费视频在线观看| 一本色道久久88加勒比—| 色婷婷六月| 国产成人亚洲综合A∨婷婷| 日本超碰在线| 色情久久久| 丁香五月天天| 国产黄大片在线观看画质优化| 这里只有精品在线观看视频| 九九热九九热精品| 丁香婷婷色九月| 亚洲精品又粗又大又爽A片 | 婷婷九月综合| 综合图区激情| 深爱丁香网| 色一情一乱一乱91Av| 五月激情视频| 日本色色网站| 深爱1激情网| 色五月婷婷婷婷婷婷婷婷婷婷| Www.久久| 亚洲无AV在线中文字幕 | 丁香社区婷婷五月| 国产亚洲色婷婷99精品| WWW.久久久久久久| 亚洲激情| 国内9l视频自拍老熟女九色| 亚洲欧美在线观看| 激情五月综合| 99亚州综合精品成人网| 99热亚洲| 五月激情综合网| 亚洲精品无码一区二区| 亚洲精品99| 99视频这里有精品| 九九性视频| 欧美成人网婷婷综合在线| 成人看片网站| 色综合色色| 成人网站av免费网站推荐| 日本nghangse中文字幕| 亚洲AV无码成人电影| 婷婷丁香成人| 色五月婷婷中文字幕| 丁香六月色婷婷| 五月天婷婷爱| 久久国产色| 这里只有精品在线看| 五月丁香婷婷无码A∨| 九九99九九99九九99视频网| 久久最新色| 在线不卡AC| 色五月噜噜| 五月婷婷香蕉视频| 色五月色综合| 欧美三级韩国三级日本三斤| 五月婷婷先锋| 日韩黄色AV无码| 丁香五月天社区婷婷| 噢美99| 综合激情开心五月| 99er这里只有精品视频| 狠狠久久婷五月综合色| 五月丁香婷婷激情| 日本熟女内射| 五月丁香六月欧美综合网站| 日韩综合久| 日韩在线一级| 超碰99在线观看| 色九月婷婷综合| 久久久久久综合88| 综合AV在线| 久久婷婷视频| 真实的国产乱XXXX在线91| 精品欧美性爱超级爽| 日韩限制级大尺度黑料泄密大尺度视频一区二区在线观看 | 97色色色色色色色| 色99视| 青青草蜜臀| 天天摸日日舔狠狠添婷婷婷| 亚洲va欧美va国产综合久久久| 日本熟妇乱妇熟色A片蜜桃| 激情五月综合色婷婷| 欧美性猛交99久久久久99按摩| 五月好婷婷| 综合九九| 在线观看亚洲AV| 99自拍网| 5月丁香综合网| 天堂草在线观| 久热综合| 99国产在线精品视频| www.久久99精品| 丁香久月| 99热99思午夜精品| 婷婷丁香五月天在线| 色五月五月天色婷婷色五月| 五月大香蕉| 久草婷婷在线| Av大香蕉| 青青草视频免费观看| 丁香六月婷婷基地| 久婷五月| 五月婷婷丁香综合网| 婷婷综合色图| 人妻体体内射精一区二区| 色婷婷四色| 天天爱天天日| 精品久久这里热66| 丰满少妇猛烈A片免费看观看 | 97干在线视频| www夜夜操com| 禁欲电影完整版在线播放| 人人操人| 综合逼五月激情婷婷| 天天综合在线网| 丁香五月婷婷在线| 婷婷五月天久久综合88| 丁香五月天婷婷中文| 亚洲成人av在线播放| 99久久综合| 欧洲不卡视频| 色色色综合色| 欧美情色一区| 婷婷99视频精品| 青柠影视免费高清电视剧| 9999热在线免费观看| 五月天开心成人网| 国产精品大香蕉| 韩日AV片| 五月婷婷伊人久久| 男女啪啪做爰高潮无遮挡| 午夜亚洲国产精品av一区二区| 婷婷五月婷婷五月天| 国产成人av在线播放| 五月天婷婷色综合| 99热这里只有精品2024| 激情深爱五月天| 99干99| 亚洲综合色五月| 99色在线| 婷婷五月天久久综合88| 欧美性猛交99久久久99| 色色色天堂网| 中文字幕乱轮| 91男人资源站| 深爱1激情网| 日韩黄在免| 国产阿姨日皮艹逼内射视频| 久99视频| 激情性爱五月| 99操99| 九九re精品视频在线观看| 超碰在线网站| 六月激情综合| 激情综合99| 婷婷婷婷婷开心无码播放| 久久se 综合网 | 久播影院免费观看电视剧大全最新网| 91人久| 色婷婷五月天激情在线播放| 少妇熟女视频一区二区三区| 久色网五月| 色色婷婷综合| 五月丁香欧美综合| ady狠狠入| 婷婷操婷婷干婷婷射| 五月婷综合| 丁香六月成人| 狠狠爱夜夜| 操操操Av| 婷婷激情小说网| 婷婷啪啪| 第四色婷婷最爱| 五月婷婷 激情按摩| 五月婷婷色播| 99热首页在线30| 天久综合91综合首页| 丁香五月婷婷激情123| 99久久婷婷精品视频| 丁香婷婷在线| 97五月天婷婷综合激情网| 婷婷在线播放| 色 免费网站视频| 婷婷97| 丁香婷婷六月婷婷六月婷婷六月婷婷| 专区无日本视频高清8| 五月永久激情| 日韩无码性爱| 色播综合| 丁香五月婷婷激情视频播放| 97热超碰| 丁香五月天色婷婷| 日韩五月丁香| 97人人射| 久久5 9视频免费观看| 久久久久久人妻久久久久久久久久人妻久久久 | 桃色五月天| 婷婷五月激情在线| 婷婷亚洲天堂| 国产色香蕉精品五夜婷| 久久亚洲婷婷综合色五月| 国产欧美日韩综合精品一区二区| 欧美性生交A片免费看| 天天成人丁香美女AV| 中文字幕av在线播放| 亚洲综合色色| 五月丁香基地| 丁香婷婷大香蕉| 亚洲欧洲午夜成人精品av| 啪色综合| 性色做爰片在线观看WW| 婷婷六月激情| 深爱五月婷婷开心中文字幕| 91丁香| 色无码| www.夜夜.com| 丁香五月激情六月欧亚激情综合导航| 黃色三级三级三级三级 qixing300.shrkbk.com www.jinbozs.com tianmiaosw.com | 91久操| 婷婷五月天激情AV影院| 日韩成人av在线| 久久免费干| 色五月丁香婷婷| 思思热AV| 26uuu亚洲色| 激情婷婷久久| 香蕉99网| 日韩精品无码一区二区| 五月丁香啪啪激情| 久久久99精品| 婷婷五月天深爱| 丁香婷婷色色| 久久综合五月情| 婷婷丁香五月亚洲17cao| 中文AV网站| 天天色天天噜| 日本怕怕视频| 五月丁香久人妻中文| 亚洲成AV人片在线观看| 无码少妇高潮喷水A片免费| 99久久五月婷婷| 日日干干天天干| WWW.天天日| 国产精品丝| 超碰2021| 免费碰碰视频久| 婷婷色中文字幕| 日韩AV在线免费| 国产操B| 日本乱子人伦在线视频| 色久天| 97碰超级人人看| 亚洲人人操| 五月丁香五月婷婷在线观看| 深爱激情av| 五月婷久久| 亚洲AAA| 婷婷五月丁香在线观看| 日本妈妈乱| 97成人丁香婷婷| 九九aV| 婷婷五月色综合| 九九综合网色全集| 99热线观看9| 久久多色| 九九色影院| 在线观看亚洲视频影院| 亚洲综合1024| 色综合色色| 91热爆在线| 激情五月天婷婷| 激情综合亚洲| 东北婷婷五月天| 天天添天天摸天天天天做| 开心婷婷五月天电影院| 五月丁香综合伦理片| 天天爽日日搞| 人人看人人要| 夜夜爽天天日| 51国精产品自偷自偷综合| 色婷婷久久综合| 色欲色香综合网| 夜夜爽天天爽| 国产欧美精品AAAAAA片| 五婷婷综合网| 久久99jiu9| 99热在线精品播放| 91精品无码| hd五月婷婷在线| 五月婷婷开心亚州在线| 丁香五月婷婷基地| 六月综合婷婷开心伊人| 九九九激情综合| 另类亚洲电影| 成人综合AV| 国产 码在线成人网站| 99er免费在线观看| 亚洲99精品欧美一区| av在线中文| 色播五月丁香| 久婷婷视平| 久久久99日本大片| 五月丁香婷婷网网网网| se99视频| 五月天婷婷综合| 色综合99无码 | 五月丁香花激情综合网| 色色综合日韩| 色播五月网| 日本色婷婷| 亚洲AV成人在线| AV免费在线网站| 伊人影音无码一区二区三区| 婷婷丁香五月天亚洲| 久9无码视频| 日日夜夜天天| 玖玖精品婷婷| 伊人在线婷婷草| 综合久久五月天| JAPANRCEP老熟妇乱子伦视频| AV中文字幕夜夜操b天天摸bb| 99热偷拍| 免费不卡狠操美女视频网 | 六月综合在线| 欧美日韩成人在线| 97碰人人操| 婷婷五月天色综合| 国产成人+综合亚洲+天堂| 韩日AV片| 色综合久久伊伊婷婷五月| 99超级碰碰| 婷婷的五月天另类视频| 91精品91久久久中77777| 婷婷五月色网| 国产精产国品一二三在观看| 九月丁香婷婷综合| 色五月激情五月| 欧美性生交XXXXX无码小说| 婷婷内射视频在线| 婷婷五月天六点丁香五月| 欧洲色| www。五月天激情| 丁香五月六月综合欧美| caop视频| 久热视频A.| 97在线综合| 4399精品一区二区| 婷婷久久六月天| 97色碰| 色哟哟精品| 丁香美女五月天婷婷| 婷婷婷婷婷婷婷婷婷婷丁香| 久青青久| 欧美25p| 久久看婷婷| 91肏| 99人人干人人| 成年人丁香五月| 色99xx| 久久久99精品| 色色欧美色色色| 狠狠色五月| 97五月久久丁香婷婷| 婷婷久久婷婷色五月| 无码网| 99精品综合| 久久9精品| 婷婷亚洲综合| 婷婷五月天堂网| 久久久婷| 亚洲激情亚洲激情| 色色色色五月| 亚洲小视频免费播放| 免费亚洲婷婷中文字幕| 亚洲XX网| 色噜噜狠狠色综合日日| 亚洲综合99| 色五月天激情| 99综合视频一体| 99久久极情精品一区| 欧美激情综合| 大地9中文在线观看免费高清| 日韩一66精品| 九九99久久精品| 日撸夜撸日操| 日本在线观看91| 亚洲另类日本| 97色色色| 男男野外做爰全过程69| 五月激情网络| 免费99色| 97干欧美| 成人精品一区二区三区四区五区| 亚洲国产精品二二三三区| 激情五月亚洲| 久久超级碰视频| 五月丁香操婷逼| 一起草AV| 亚洲狠狠色丁香婷婷综合久久| 丁香五月婷婷综合网| 日本一级淫| 六月婷婷五月丁香| 一起草AV| 免费在线观看AV网站| www,26uuu,c0m,色情| 玖玖婷婷视频| 大香蕉啪啪啪| 九九机热| 狠狠色噜噜狠狠狠狠综合| 超碰人人色| www.夜夜.com| 色五婷婷| 国产美女无遮挡裸体毛片A片| 国产精品色婷婷AV综合色色| 99色热视频| 天天日天天插| 夜夜骑夜夜操| 久久五月视频| 玖玖婷婷五月天毛片| 激情五月天丁香| 天天干天天日日| 激情久久综合网| 九九99久久| 99爱免费视频| 婷婷色中文字幕| 久久桃花网色婷婷| 九九AV在线| 99精品无码网站| 蜜桃婷婷狠狠久久| 屁股翘好撅高迎合跪趴| 天天爱天天操| 丁香五月六月欧美| 色色色999| 丁香五月伊人| 五月天另类小说| 五月停停激情网| 开心五月六月婷婷| 99精品在线观看视频| 精品欧美一区二区三区久久久 | 色色色色网站| 五月天婷婷激情在线色图| 久久久人妻久久久| 黄色毛片精品| 一点色成人网| 天天肏夜夜肏| 99热12| 人人爽人人射-美女久久久久久久久久-成人AV| 五月丁香最新| 《亚洲操B久久免费在线观看,亚洲操B久久在线播放》在线播放 - 高清资源 - 97 | 综合亚洲AV| 久久99久久99精品,久国产,久久精品免费,99久在线,久久久久国产精品免费网站,9 | 狠狠色婷| 日韩成人精品中文字幕| 色婷婷超碰| 五月婷婷我| 新99思思视频| 超碰免费99| 伊人久久大香线蕉亚洲五月天,| 欧美69久成人做爰视频| 538在线精品| 久99在线视频| 可以直接看的av| 另类小说五月天激情| 久久草人妻| 激情婷婷黄色五月| 9999热精品| 五月婷婷 激情按摩| 深爱五月婷婷| 五月在线| 五月婷丁香| 97se视频在线| 婷婷五月激情欧美| 99色精品| 丁香五月激情综合| 日婷婷久久开心| 看国产探花操逼三级片| 久久欧洲综合网| 99爱免费视频在线观看| www.爱操com.| 97激情五月天| 色五月婷婷在线视频| 这里只有精品在线视频精品| 婷婷97碰碰| 在线观看免费狠狠色丁香香综合| 天啪色| 色色色1网址| 99操网站| 婷婷丁香先锋资源网站| 五月久久| 91 九色 入口| 夜色综合网| 激情五月丁香激情综合网| 超碰69天堂| 丁香婷婷色情| 久久久久丁香婷婷五月天| 99在线精品视频| 天天天添天天操| 99热这里有精品6| 丁香五月91| 精国产品一区二区三区A片| 99热这里只有精品99| 九九亚洲综合| 五月花激情网| 91精品婷婷国产综合久久| 婷婷久久五月丁香| 综合激情五月四射婷婷| 五月婷婷五月天激情视频| 97五月天婷婷午夜| 17.c黄色| 丁香婷婷激情六月五月开心| 色综合大香蕉| 99热只有| 精品一二三区久久AAA片| 超碰成人黄色网| 色就色94欧美setu| 丁香六月激情综合网| 九九激情综合| 五月综合777| 天天操夜夜爽歪歪| 大香蕉欧美在线| 五月天大香蕉| 综合久久99| 婷婷丁香www视频日本韩国| 久99久在线观看| 五月丁香综合啪啪啪啪啪| 丁香五月98| 黄色AAAAA| 另类图片色五月| 六月丁香五月婷婷| www.夜夜爱.com| 亚洲午夜视频| 第二色AⅤ| 五月婷婷丁香在线视频| 亚洲人妻av| 99在线精品免费视频| 色色网91| 天天做天天视天天谢| 99日韩网站| 婷婷激情性爱| 欧美三级巜人妻互换| 五月婷久草| 狠狠舔| 色婷婷五月天天天干天天操天天爽 | 色婷五月天亚洲| 九色视频九色九色91jiuseshipin| 99热综合网| 丁香婷五月天| 伊人网啪啪| 99热这里有精品| 久久一级片| 丁香五月婷婷亚洲综合精品在线| 日日噜噜夜夜狠狠久久丁香六月| 超碰在线人妻| 色婷婷丁香社综合| 五月久久噜噜| 天堂综合久| 日本色色网| www.99精品视频| 五月激情婷婷六月丁香| 久久天堂网| 六月五月天婷婷涩播在线| 婷婷成人网五月天| 色五月婷婷五月| 婷婷色情 | -91九色大屁股| 丁香五月色欲| 五月丁香六月激情| 婷婷六月丁香在线| 久久久久婷| 九色综合网| 99re99热| 99a级片| 色婷婷狠狠久久综合五月 | www色婷婷久久综合久色| 五月婷婷av| 97超喷视频在线观看| 5月婷婷视频网站综合| 婷婷五月综合久久中文字幕| 丁香影院五月综合| 思思热久在线观看视频| www五月| 99玖玖免费视频| 99精品在线观看视频| 第九色区AV在线| 中文字幕日韩无码制服诱或| 涩五月婷婷| www.久久久久久久| 五月天婷综合| 国产精品视频网| 五月婷天天搞视频| 91 欧美| 亚洲色婷婷激情| 超碰免费人人| 四月婷婷五月色综合| 国产激情在线| 91se在线观看| 狠狠人人婷婷| 欧美婷婷丁香五月| 日本色色色| 婷婷五月中文字幕| 99视频| 成人网站高清无码| 91婷婷五月天嫩女| 操操综合网婷婷| 79色色| Caoub青青超碰 | 综合五月天| 成人噜噜网| 综合久久99| 久久er九九| 欧洲色区| 五月婷婷免费视频| 色色五月婷婷狠狠| 操日本人妻视频| 色五月婷婷丁香凹凸| 26uuu亚洲欧美| 亚洲九九99精品视频在线播放| 日韩六六久久电影| 亚洲性爱AV在线| 天天综合中文| www.sebowuyue| www.黄色片-久久成人国产精品在线播放-999AV| 亚洲综合成人网站| 五月天激情视频| 久久久人妻久久久| 99国产精品久久久久久久久久久| 丁香五月综合在线| 91热视频| 久久狠狠干| 91丨九色丨43老版熟女| 婷婷综合在线| 99热这里有精品24| 色九月综合| 久久婷婷综合网| 无码九九| 久久人妻超碰一区| 成人丁香五月天| 九九99热| 日日杆天天| 五月丁香六月婷婷综合伊人| 3DAV亚洲香蕉久久 一区二区| 五月丁香婷婷深深爱| 婷婷色五月婷婷姐妹| 办公室少妇激情呻吟A片在线观看| 激情五月婷在线精品| 丁香五月综合久久| 欧美在线操| 丁香久久五月天视频在线观看| 国产毛片操B| 久久hd| 五月天伊人av| 人人看人人97| 激情五月影院| 丁香五月在线看| 色热久| 91性交在线播放| 国产精品色婷婷久久久精品| 婷婷欧美偷拍综合| 亚洲电影中文字幕| 久久色五月| 天天透天天摸天天舔| 婷婷大乡焦噜噜| 乱精品一区字幕二区| 久久婷婷综合五月天| 色婷婷婷综合五月天| 久久大香蕉伊人| 伊人五月天| 亚洲色五月婷婷| oVV4WIB3vFi8D| 色色色色色色色色色色色色色97| 亚洲中文字幕网| 丁香五月色| 插插插色综合网| 久9免费视频| 久草丁香婷婷1024| 亚洲成人AV在线观看| 婷色五月| 色五月久久成人婷婷| 五月婷免费视频| 国产精品色色| 99免费在线| 丁香五月亚综合图片| 欧美又粗又大一区二区在线观看| 开心五月婷婷综合在线精品素人| 三级毛片视频| 99色热| 六月丁香婷婷综合在线| 亚洲色婷婷网站| 色之综合网| 五月天婷婷操逼视频| 韩国不卡AC视频| 一级黄色影片| 人妻久久久久久久| 九九干视频| 激情亚洲网| 日日鲁鲁夜夜爽爽| 五月丁香成人日| 无码人妻激情| 色婷婷丁香社综合| 成人综合网站| 99热精品在线观看| 九九色热| 超碰在线免费9| 26uuu在线观看| 色丁香五月综合网| 丁香桃色综合网| 99爱视频精品| 99热免费精品热久久66| 九九色色网| 91好好热日本在线| 婷婷国产五月天17c| 丁香五月婷婷综合激情啪啪啪啪啪啪啪 | 日日夜夜狠狠干| 六月丁香婷婷尤物| 99久久99热| 亚洲日韩国产黑丝黑丝AVAV一区二区三区| 久久视频婷婷| 色婷婷激情五月天| 中文av在线观看| 五月天丁香久久综合| 国产精品久久久久久妇女6080| 人人操人人爱丁香五月| 九九精品婷| 伊人大香蕉爱聚| 中文字幕在线aⅴ免费观看| CHINESE熟女老女人HD视频| 天天射影院| 欧美成人精品三区综合A片| www.色五月| 亚洲综合色婷婷| 国产日韩精品SUV| 农村熟妇高潮精品A片| 天天插天天插| 无码少妇高潮喷水A片免费| 九九婷| 一本久久婷婷| 亚洲成人精品三区| 婷婷五月天VI| 综合亚洲AV| 九九热99视频在线| 久久东京热婷婷五月| 狠狠色婷婷7| 五月天小说激情| www国产亚洲色婷婷com| 亚洲综合婷婷六月丁香五月| 五月婷婷激情综合av| 99在线精品视频| 99色热| 久久久天堂国产精品女人| 欧洲色色| 色www久视频| 99国产97在线,| 久久久大香蕉| 精品色情一区二区三区四区| 天天在线久久综合 | 九热视频| 激情五月婷婷欧美极品| 99热这里只有精品33| 99爱在线观看视频| 婷婷婷婷婷婷婷婷| 超碰人人干| 香蕉AV777XXX色综合一区| 久cao香蕉影院| 久久超级碰视频| AV在线资源| 综合图区激情| 色婷婷综合影院| 26uuu国产| 丁香婷婷综合喷| 爱久综合| 97干婷婷五月天| 99热精品99| 欧美色婷婷| 色综合女人99| 色婷婷a| 日批在线看| 99热这里全都是精品| 97色色综合| 97人人干。| 丁香婷婷人妻| 五月天色视频| 丁香六月啪| 婷婷五月丁香激情图片 | 综合五月网| 色色五月天丁香| 色吧网91| www.婷婷六月天| 思思99re这里只有| 五月丁香六月综合激情| 伊人婷婷五月天| 天堂AV三级| 九九99视频| 天天干天天爽| 中文字幕性爱视频| 久1色色| 久超超碰| 激情人妻蜜夜系列区| 永久免费视频| 这里只有精彩视| 亚洲精品婷婷| 婷婷五月天大香蕉在线视频观看| 精品成人在线观看| 色J香五月天| 丁香五月激情五月| 欧美日韩成人在线网| 婷婷中文字暮| 激情小说五月天| 涩九九九九| 五月婷婷中文| 免费观看全黄做爰的视频| www.婷婷.com| 日日天天干| 天天射天天插天天干| 五月丁香婷婷啪啪| 五月婷婷久久大香蕉| 伊人激情综合| 色色啊| 丁香五月在线播放| 人人操操| 天天色天天色天天色天天色天天色| 婷婷色色五月| 五月婷婷丁香综合| 成人精品亚洲性爱| 五月婷婷久久网| 深爱激情九九五月天 | 激情图片99| 五月天无码视屏播放| 九九热视频这里只有精品| 九九热99熟女| 五月天激情小说欧美激情| 综合五月激情| 26uuu亚洲欧美另类| 伊人网碰碰| 六月丁香大香蕉| 五月天色婷婷综合| 亚洲正能量欧美| 婷婷六月视频| 色五月,com| 激情五月婷婷欧美极品 | 九九性视频| 色www99| 五月天婷婷丁香六月| 婷婷五月天A V| 好好干av| 超碰成人在线免费观看|