亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

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ǎng)頁中直接完成視頻轉(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 示例頁圍繞配置說明、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)完再拉回來。后端排隊(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)行原理、完整操作和踩過的坑一次說清。2. 先搞懂它怎么跑起來WASM 內(nèi)核、多線程和 SharedArrayBuffer2.1 瀏覽器里的 FFmpeg 不是虛擬機(jī)是編譯產(chǎn)物ffmpeg.js 本質(zhì)上是一個(gè)把 C 語言寫的 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)?,F(xiàn)代版本的 ffmpeg.js 默認(rèn)開啟了多線程支持前提是瀏覽器環(huán)境必須滿足跨域隔離cross-origin isolation。核心依賴是 SharedArrayBuffer這個(gè)對(duì)象允許主線程和多個(gè) Worker 線程共享同一塊內(nèi)存FFmpeg 內(nèi)部的多線程編解碼才會(huì)真正生效。瀏覽器出于安全考慮只在頁面通過Cross-Origin-Embedder-Policy: require-corp和Cross-Origin-Opener-Policy: same-origin這兩個(gè)響應(yīng)頭時(shí)才會(huì)開放 SharedArrayBuffer。這意味著你用file://協(xié)議直接雙擊 HTML 打開頁面或者本地起一個(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ù)邏輯里剝離出來。單線程模式并不是完全不能用只是轉(zhuǎn)碼速度會(huì)明顯下降對(duì)大文件來說等待時(shí)間會(huì)成倍拉長(zhǎng)。2.2 創(chuàng)建實(shí)例時(shí)到底要配置哪些參數(shù)初始化 ffmpeg.js 的 API 看起來簡(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);邏輯說明load方法會(huì)依次拉取并實(shí)例化 WASM 二進(jìn)制、綁定 Worker 通信通道version屬性在初始化完成后會(huì)返回 FFmpeg 內(nèi)核的版本號(hào)可以用來做加載成功的判定。參數(shù)說明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é)果怎么出來虛擬文件系統(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)里把輸出文件讀回來轉(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);邏輯說明writeFile的第一個(gè)參數(shù)是虛擬文件系統(tǒng)里的文件名隨后的exec命令里引用這個(gè)名字轉(zhuǎn)碼結(jié)果再通過readFile讀出來。整個(gè)過程中原始視頻沒有離開用戶的瀏覽器隱私敏感場(chǎng)景下這一點(diǎn)價(jià)值很大。參數(shù)說明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ù)語義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 ]);邏輯說明這條命令先限制輸出幀率為 10 幀每秒再用 lanczos 算法做高質(zhì)量縮放然后通過split把畫面流分成兩路一路用于生成調(diào)色板另一路配合調(diào)色板執(zhí)行最終的顏色映射。-loop 0表示無限循環(huán)播放這是 GIF 在社交媒體場(chǎng)景下的默認(rèn)預(yù)期。參數(shù)說明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ì)讓頁面卡頓甚至超過瀏覽器對(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ù)說明stats_modediff會(huì)針對(duì)連續(xù)幀之間的差異來生成調(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ì)大文件來說用戶會(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]);邏輯說明第一次exec只輸入文件不指定輸出FFmpeg 會(huì)把視頻的詳細(xì)信息打印到日志里我們通過正則解析出Duration字段估算出總幀數(shù)。第二次exec才是真正的轉(zhuǎn)碼進(jìn)度回調(diào)里拿到的是當(dāng)前播放時(shí)間戳用它除以總時(shí)長(zhǎng)就能得到百分比。參數(shù)說明time單位是微秒除以 1000000 才是秒這個(gè)坑很多從示例代碼復(fù)制粘貼的人都會(huì)踩。progress的取值范圍是 0 到 1但用它算百分比往往不準(zhǔn)確因?yàn)槟悴恢?FFmpeg 內(nèi)部是拿什么做分母的用 duration 來計(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 ]);邏輯說明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ù)說明-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ù)說明-an是 disable audio 的縮寫要求 FFmpeg 不處理任何音頻流。加了-an之后輸出文件里只有視頻軌文件體積會(huì)小于帶音頻的版本同時(shí)編碼速度會(huì)有小幅提升。這種輸出特別適合作為網(wǎng)頁里的靜音自動(dòng)播放資源因?yàn)榇蠖鄶?shù)瀏覽器允許無聲視頻自動(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);邏輯說明轉(zhuǎn)碼完成后虛擬文件系統(tǒng)里仍然保存著原始視頻和輸出視頻這些文件占用的是 WASM 共享內(nèi)存不清理的話多次操作后頁面會(huì)變得非??ㄉ踔劣|發(fā)Out of memory崩潰。參數(shù)說明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覽器只有在頁面啟用跨域隔離后才開放 SharedArrayBuffer。使用file://協(xié)議直接打開頁面、本地靜態(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));邏輯說明Cross-Origin-Embedder-Policy: require-corp告訴瀏覽器頁面只能加載同源或明確聲明了跨域允許的資源Cross-Origin-Opener-Policy: same-origin確保頁面打開的窗口與原頁面共享同一個(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 腳本和頁面必須同源否則會(huì)被瀏覽器攔截。有些 CDN 資源可以通過crossorigin屬性加載圖片和腳本但 Worker 的加載規(guī)則更嚴(yán)格。解決將 Worker 腳本放在與頁面同源的靜態(tài)目錄中避免從第三方 CDN 直接引用。如果一定要用 CDN需要確認(rèn)該 CDN 對(duì) Worker 加載場(chǎng)景的兼容性很多 CDN 的響應(yīng)頭是給腳本資源用的并不滿足 Worker 的安全要求。5.4 轉(zhuǎn)碼大文件導(dǎo)致內(nèi)存溢出或頁面崩潰現(xiàn)象幾百 MB 的視頻文件執(zhí)行轉(zhuǎn)碼時(shí)頁面標(biāo)簽頁直接白屏或者控制臺(tái)報(bào)Out of memory。原因ffmpeg.js 會(huì)把輸入文件完整讀入 WASM 共享內(nèi)存輸出文件也存放在同一塊內(nèi)存里。文件越大內(nèi)存占用越高瀏覽器單標(biāo)簽頁的內(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ò)誤和濾鏡語法錯(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 ]);邏輯說明-vf里最后一段formatyuv420p強(qiáng)制輸出像素格式確保瀏覽器可以直接解碼渲染。-preset veryfast是編碼速度和壓縮率的折中方案瀏覽器端建議使用比slow快很多體積差異在短片段里幾乎感知不到。參數(shù)說明libx264是 FFmpeg 內(nèi)置的 H.264 編碼器兼容性最廣aac是音頻編碼MP4 容器標(biāo)配。6. 進(jìn)階用法用多線程參數(shù)和批處理榨干瀏覽器性能既然環(huán)境允許 SharedArrayBuffer那就要把多線程的優(yōu)勢(shì)發(fā)揮出來。FFmpeg 的 H.264 和 VP9 編碼器都支持-threads參數(shù)但瀏覽器端的線程數(shù)不是隨便設(shè)定的。常見的做法是先用硬件并發(fā)數(shù)作為初始值再根據(jù)編碼器類型微調(diào)。Chrome 桌面版通常能拿到 8 到 16 個(gè)邏輯核心但 WASM 多線程并不是每個(gè)線程都能吃滿 CPU實(shí)測(cè)下來 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 ]);邏輯說明navigator.hardwareConcurrency返回瀏覽器可用的邏輯核心數(shù)但你不能直接用它做線程數(shù)因?yàn)闉g覽器本身和其他標(biāo)簽頁也在占用 CPU。取 min(核心數(shù), 6) 是兼顧穩(wěn)定性和速度的經(jīng)驗(yàn)值。參數(shù)說明-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è)文件);邏輯說明循環(huán)中每個(gè)文件使用獨(dú)立的時(shí)間戳命名避免多個(gè)輸入文件寫入虛擬文件系統(tǒng)時(shí)路徑?jīng)_突。每個(gè)文件處理完成后立即刪除輸入和輸出把 WASM 內(nèi)存占用控制在單個(gè)文件級(jí)別。參數(shù)說明時(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è)閾值定下來再?zèng)Q定用 ffmpeg.js 還是后端方案。這套判斷標(biāo)準(zhǔn)幫我避免了好幾次本來性能堪憂的架構(gòu)設(shè)計(jì)希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
干我久操| 天天日骚逼熟女| 国产剧情在线| 久久精品视-一级做a爰片性色毛片16美国-中国女与老外在线精品 | wuyechaopeng| 中文久久久| 国产精品国产自产高清AV| 欧美日韩岛国大片在线观看| 久久久久网站-538在线视频-欧美永久乱码| 超碰99re| 久久久久久91香蕉国产| 人人摸.人人色| 欧美18禁91| 久久久中文| 午夜福利在线视频1000| 色综合久久88色综合久久天天| 超碰到97情色| 中文字幕老熟妇黄色视频| 大香蕉免费3| 夜夜爽夜夜摸夜夜操免费视频| 久久久久人妻| 免费伦费视频在线观看| 亚洲视频中文一区| 中文区中文字幕免费看| 亚洲情色第一页| 欧美黄色大片在线观看| 激情小说亚洲| 亚洲熟女综合网| 99热日| 嗯~啊~快点 死我视频| 亚欧国产无码精品在线| 国产又黄又粗的视频| 国产精品第一页国产大屁股视频免费区i| 色婷婷激情| 成人无码影片视频在线| 天天综合网日韩7799| 欧美亚洲自拍另类人妻| 丰满人妻一区二区三区免费| 日韩日韩日韩-国产乱码精品一区二区| 欧美成人精品一区二区三区| 欧插网站| 大香蕉天天看妹子| 亚洲美欧999| 大香蕉 222| 91婷婷伊人狠人| 狠狠色综合网| 小少妇| 亚洲人成网www| 久久xx| 色情综合网| 三级片网站在线播放| 思思热久久成人| 中文字幕二区| 91视频女生| 日本97久久| 综合一区二区影视| 99草精| 制服中出中文人人精品| 97伦乱| 一本色道久久综合狠狠操| 中文字幕乱偷人妻久久艾草网| 亚洲蜜臀视频精品久久| 一本色道人妻久久| 日韩免费一级性爱视频| 久久毛卡| 超碰调教97| 97干日韩| www.acm成人黄色毛片| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 国产大学生高潮在线播放| 91 亚洲 欧美 日韩 国产 综合| 天天日天天干天天整| 欧洲色| 操香逼| 蜜桃臀AV在线| A 天堂| 人人操人人操人人人操| 激情看片网站| 亚州色国| 亚洲综合欧美| 人人操人人摸人| 少妇的嫩逼图片| 韩国手机不卡无码三级视频| 丁香五月天啪啪| 成人AV素股で擦久久| 久久综合久色欧美综合狠狠| 欧美色www亚洲国产阿娇要播| 天天做日日爱夜夜爽| 天天摸天天插天天日| 青青伊人加勒比海| 麻豆久久一区二区三区| 开心五月婷婷激情| 人人操人人精品影片| 婷婷色一区| 久久精品夜色国产亚洲AV| 男人久久天堂| 91chinese在线| 91丨精品丨国产丨丝袜| 欲色啪| 免费一级精品啪啪视频| 欧美日韩人人精品| 天天cao在线| 26uuu国产免费观看| 亚洲欧洲综合成人av一区| 天美传媒av 在线| 91在线观看,天天综合| 九九热久久99精品re| 国产夜夜操| 欧美日本成人一区二区| 99热色这里只有精品| 久热伊人| 亚洲国产精品成人久久蜜臀| 偷窥自拍亚洲天堂网爆| 久久中文字幕人妻熟av女蜜柚| 成年人性爱日韩| 少妇色综合| 免费簧片在线观看| 97久操| 超碰到97情色| 亚州精品人妻一二三区| 啪啪啪综合网| 中文字幕一区二区三区四区在线视频| 国产suv精品一区二区四区999| 国产资源中文字幕在线| 77国产精品| 人人妻人射| 免费视频观看60秒| 淫荡网址| 亚洲色电影在线| 一级性爱视频免费观看| 国产免费操逼| 老熟女熟妇| 国产精品农村妇女| 美女91网址 | 手机在线播放国产福利| 天天色综合天天操| 久热婷婷| 尹人免费观看视频在线| 国产白嫩精品久久| 青娱乐国产盛宴视频| 91GD.COM| 啊啊啊好湿国产一二| 九一综合精品视品av| 新怡红院| 亚洲第一在线视频| 人妻无码久久一区二区三区免费| 97神马久久| 日韩久久.一级黄色片| 91在线/欧洲| 亚洲经典啪啪| 久久精品国产96精品亚洲拳交 | 蜜色网色哟哟| 五月天成人综合| 激情干在线| 国产精品人妻免费精品| 97久久超碰日韩精品| 亚洲精品美女操逼| 青青欧洲黑| 精品国产一区二区久久| 亚洲第一无码播放立川理惠| 偷拍精品一区二区三区| 大香蕉伊人在线成人AV在线观看| 久久久无码精品人妻二区| 欧美综合网| 国产精品久久妻无码网站| 欧美亚洲美少妇一区二区| 99色综合| 九九Av| 免费的黄片wwwwww| 精品一区二区成人动漫| 国语精品内射在线观看| 国产亚洲女v在线观看| 熟女激情综合网| 水多多映视AV| 综合五月天| 少妇高潮一区二区三区在线| 夜夜青青无码影院| 大干人妻| 麻豆区久久久久亚| 南澳成人一级片在线播放| 亚洲,欧美,综合网| 午夜啊啊| 国产精品久久久啊| 日本人妻中文字幕精品| 青青伊人这里只有精品| 青娱乐国产盛宴视频| 日韩一性一交一A片俄罗斯| 久草国产在线视频| 国产精品熟女乱伦| 亚码激情| 日韩中文字幕2020| 天天日骚逼熟女| 欧美日韩制服| 久久超碰97| 内射夫妻三片| 91强热人妻| 超碰是碰在线观看| 屁股久久久久久| 欧美高清无码免费视频高清版| 第四色奇米影视777| 嫩草影院性色| Julia在线播放亚洲久久| 久操大香蕉手机视频在线看| 久久久久ab| 九一精品牛牛一区二区| 清纯唯美综合亚洲| 女性喷水高潮在线观看| 国产超碰人人爽人人做| 久久国产99精品72福利| 99re在线精品78| 91亚洲网| 牛牛aV| 久久久久骚| 青青草国产一区二区三区| 亚洲另类天堂| 偷窥自拍亚洲天堂网爆| 欧美一区二区传媒| 色妇综合网| 中文字幕一区二区韩| 6080yy午夜理论三级一区二区三区无码| 欧美精品第3页| 97免费视频在线观看视频| 日本高清视频在线观看黄已三辽| 日日操免费视频| 五月天婷婷成人网| 一区二区三区四区姦女| 91男人综合| 日本操逼视频导航| 丝袜无码a片| 久久午夜色播影院免费高清| 性爱1区| 老熟女中文字幕高清| 超碰日韩人妻| 91黑丝在线播放| 日日躁天天躁狠狠躁| 美女极品一区二区三区| 色眯眯射| 国产黄色视频久久| 少妇与黑人高潮在线| 欧美AB在线| 综合五月天| 精品无码一区二区三区| 国语av最新自产拍在线观看| 91欧美丝袜| AAAAAAAAA黄片| 九九九九精品一区| 国产精点久久久成人| 日本黄页视频在线观看| 中文字幕aⅴ在线视频| 香蕉免费一区二区三区不读| 操高情无码| 亚洲 另类 丝袜 自拍 动漫| 粉嫩不卡一区二区性爱| 欧美三级偷拍| 四虎 精品 WWW| 国产午夜精品理论片一二三区区| 久久久性爱视频| 国产精品久久久久无码A√| 四虎免费看黄| 国产高潮AA片免费看| 久久久偷拍| 激情99| 深夜福利黄片| 久久精品一区二区三区蜜桃臀| 不卡免费av在线播放| 欧美日韩美女精品久草一区二区三区| 久久久九九网站| 欧美碰碰综合色| 91逼逼女人91| 精品国产人成在线| 酒色综合网| 久久久久久中文版| 特级丰满少妇一级AAAA爱毛片| 婷婷丁香人妻 | av绯色| 欧美九九九九九| 亚洲精品天天影视综合网 | 亚洲中文人妻色| 成人免费福利网站国产| 亚洲人妻精品一区二区| 蜜桃久久久久久久| 婷婷丁香五月激情啪啪| 久久性爱精品一区| 亚洲91射| 日韩欧亚中文在线| 日日爽夜夜爽| 中文字幕一区二区三区视频播放| 欧州一区二区三区四区| 欧美日韩亚洲少妇寂寞影院正在播放 | 18禁无码永久免费无限制| 91精品婷婷国产综合久久| 很黄很污的免费网站| 欧美伊人电影| 久久久久9| 后入人妻一区| 日韩精彩免费| 欧美日韩夜夜| 婷婷视频网| 欧美大香蕉专区网| 国产免费操逼| 亚洲aV性爱| 懂色天天爱天天日天天射天天澡| 中文有码第五页| 五月婷婷爱六月丁香色| 欧美很很操视频| 精品性爱一区二区| 国产超碰| 亚洲激情在线| 操逼逼无码| 中文字幕精品资源在线| 韩国黄色片精品久久久| 无码精品人妻一区二区三区妖精| 日本一区二区三区午夜观看| 欧美亚洲一级在线观看| 国产精品无套内谢| 久久免费99精品久久久久久| 强被迫伦姧在线观看无码网站| 丰满人妻一区二区三区色-百度| 国产精品网址| 成人av在线播放| 又大又长又粗又爽又黄| 国产中文精品一区二区在线观看| 亚洲导航深夜福利| 国产精品秘 福利姬在线观看| 日本女人操逼| 97精彩视频网站| 中出789在线视频| 蜜桃臀久久| 色欧美在线| 无码人妻精品酒店| 免费看国产曰批40分钟怎么下载| 人妻 中文 日韩| 久久婷婷色| A久久| 天堂国产AV| 97超色| 我爱操| 国语少妇精| 乱伦a片视频| 日日干夜夜干| 国产传媒一区日韩| 99久久久| 国产中文精品一区二区在线观看| 人妻人人操| 乱理日韩中文| 91精品国产91熟女| 欧美日韩一区二区三区四区蜜桃| 国产精品麻豆成人AV艾秋| 吻戏激情性巴克| 91碰碰| 一级岛国大片| 亚洲日韩av一区二区三区百合| 欧美国产有色电影| 91综合中文字幕| 久久亚洲精品成人av| 久草视频制服诱惑| 久久久久久人| 婷婷中文网| 91 丝袜在线观看| 一区操逼| 校园春色欧美色图| 91精品人| 欧美黑人猛交春色影视大全| 欧美高清91| 18啪啪手机免费性爱| 欧美亚州手机在线| 欧美se综合| 国产AV激情无码久久无码| 熟女丝袜视频| 超碰在线人人射| 国产精品天美传媒| 欧美爆乳精品一区二区| 99国产精品在线观看| 一区二区三| 色嘟嘟人妻天堂网| 黄色无码高清黄色无码网站| 日本熟妇熟色97一本在线观看| 96一区二区| 国产不卡的视频 | 国产亚洲精品久久久久小| 在现视频女上位好爽| 亚洲综合色图欧美| 亚洲熟女乱综合一区二区三区| 大香蕉123| 人人考人人摸人人干| 国产婷婷综合在线观看| 欧美日韩亚洲天堂| 久久超碰、| 2001天天操| 91精品久久久久久77777| 人妻少妇精品无码专区二区密桃| 国产 亚洲 一二三四| 日韩亚洲中文有码视频| 蜜臀AV秘一区翔田千里| 亚洲精品一二区| 少妇免费视频| 色臀AV| 人人妻人人玩人人澡人人爽| 日本性爱少妇| 啊啊啊快操我视频| 岛国黄片网站| 伊色综合天堂色97| 日韩无码一区二区三区| 欧美一区二区成人一卡| 亚洲精品欧洲精品| 视频国产精品未满十八禁止在线观看| 殴美牲| 亚洲男人天堂视频| 亚洲 欧美 制服 另类 自拍| 亚洲大色堂| 日韩激情毛片一级久久久| 丁香五月av| 国产精品高潮久久AV| 九九热免费国产视频婷婷伊人| 欧美色偷拍 | 天天干人人乐| 人人操天天爽| 日本一区三级韩国| 五月丁香| 日本久久网| 在线性黄高清免费视频| 九九AV| 偷拍亚洲视频一区二区三区四区| 欧美999999| 91精品人妻一区二区三区蜜桃臀| 婷婷五月色| 国产成人自拍视频在线| 久草午夜| 99AV| 久久精品国产97欧美精品亚洲| 91欧美性| 亚洲drav色图| 午夜男人一级A片7777| 一区| 蜜臀少妇一区二区| 色牛aV| 性爱视频啪啪啪啪| 久久东京热久久| 色偷综合| 亚洲欧美综合网站| 色悠久久久av| 亚洲欧美日韩国产丝袜自拍中文| 日韩免费簧片| 亚洲色图欧美激情| 国产 日韩 欧美一区| 97这里只有精品| 午夜性刺激视频免费观看| 中文字幕熟女人妻丝袜| 日本αv| 51久久夜色精品国产麻豆| 婷婷久久五月综合激情| 亚洲无码偷拍| 色乱二区| 五月激情天| 天天操女人| 乱老熟女一区二区三区| 97视频在线视频| 欧美亚洲厕所精品偷拍91| 丝袜喷水在线| 久久九九热| 久久久啊啊啊| 亚洲色欧| 一级AV性爱| 中文字幕一二区二三区人妻专区| 色哟哟 日韩精品| 国产精品一级毛片不卡视| 欧美人人曰人人操人人射射| 久久久精品视频免费观看| 久久久久久久人妻| 国产乱码精品久久久久久| 国产91丝袜在线播放蜜月| 欧美精品庄| 色姑娘综合网| 亚洲精品中文字幕一区在线视频| 国产一区二区三区中文字幕| 97人亚洲综合字幕| daxiangjiao你懂的| 国产深喉视频一区二区| 亚洲导航深夜福利| 亚洲综合色婷婷| 欧美日韩高潮喷水91| 热久日综合| 久一区久久蜜桃| 精品成人无码| 精品国产网站| 91操熟妇| 性爱综合一区二区| 看一级黄色视频| 97视频www| 久久精品国内Av熟女高清| 丁香久久| 蜜臀久久99精品久久久久久成人小说| 精品亚洲| 精品大久久| 欧美性色网| 五月天社区| 亚州欧美另类| 亚洲天堂电影精品一区| 成人性交免费视频| 欧美性生活综合| 天天情欲宗合网| 伊人网综合在线视频| 中国探花熟女| 91天堂丝袜美腿| 欧美日韩岛国大片在线观看| 99re这里| 一级二级三级黑人无码| 99热导航| 国产 亚洲 丝袜 制服| 麻豆黄四叶草网站| 在线观看一级α片刺激高潮视频| 中文字幕丝袜美腿| 久久久久久久久久va| 一区中文字幕二区日韩| 91无码西班牙视频在线| 97超碰逼| 国产操逼逼网| 激情人妻另类| 在线播放中文字幕| 在线日韩日本亚洲国产| 欧美熟女妇同| 日韩色欲久久一二三四区| 欧美激色| 98一区二区精品| 欧美性爱综合,免费| 亚洲欧美综合色| 亚洲av综合色区无码一| 中国91AV| 热久久99999| 熟妇xxxxx性春色| 破处bbq| 欧美色偷拍 | 97精彩视频网站| 9999久久久| 欧美78| 久热伊人| 性色av一区二区| 白天啪啪晚上啪啪视频| 青青伊人这里只有精品| 调教熟妇 久久久久久| 78超碰| 人妻天天爽夜夜爽精品2| 一区二区三区无卡视频在线观看| 4399成人黄A片| 肉动漫无遮挡h在线观看| yazhouzaixian| 口爆欧美91| 丁香五月天堂网| 久久黄色视频一区二区三区 | 国产a级精品| 人妻99p| yazhousetuoumei| 国产超碰人人爽人人做| 超碰91在线| 四虎884| 免费9 1久久| 欧美天天射| 超碰精品97| 夫妻AV网站| 中文一区在线日| 日韩欧美丝袜诱惑| 韩国三级三级BD在线| 国产夜夜艹| 久久精品欧美一区蜜桃| 色婷婷综合网站| 中国探花熟女| 动漫爆乳3D奶水一区在线观看| 欧美午夜视频免费观看| 操逼视频国产无套| 一起草视频在线| 天综合中文| 91亚洲不卡一区| 丁香六月婷婷久久综合| 日本中文字幕在线视频 | 国产精品久久久久无码A√| 亚洲在饯| 国产一级内射高清视频| 亚洲一区中文字幕| 一区二区影视| 亚欧免费观看视频| 欧美性生活免费网| 中文字幕中文字幕一区二区| 做爱A级亚欧| 欧美一区二区三区日韩| 狠狠色综合网| 丁香婷婷啪啪| 欧美色狠| 国产精品久久天天干| 脫衣舞一区二区三区| 黄呦呦在线| 丝袜色综合| 拍拍拍拍大尺度黄色三级片拍拍拍拍拍照| 99re99在线视频| 超碰95| 成人无遮挡毛片免费看| 乱伦av.com| 天天日夜夜爽| 欧美日本久久精品一区| 日本东京热大香蕉a片| 夜夜做夜夜爽精品视频| 99re在线| 国产一区二区三区导航| 欧美天天拍| 国产一区二区精品在线视频| 亚洲素人综合| 国产精品欧美在线观看 | 舔人妻中文免费视频| 一区二区三区视频| 国产精品内射婷婷一级二| 特级毛片特黄久久免费看| 中亚精品极乱| 九热超碰| 在线视频 亚洲精品| 欧美顶级黄片AAAAA在线免费看| 操狠狠| 亚洲第二页| 操逼操逼逼操操逼91| 熟女天天干| 欧美影院一区二区三区| 国产麻豆一级精品视频| 97公开久久| 国内毛片欧美香蕉精品| 6080yy午夜理论三级一区二区三区无码| 蜜臀久久久国产| 亚洲无码精品AV久久久| 国产自产自拍| 91爱看| 为用户提供免费看黄网址在线观看| 99在线免费视频| 亚洲精品黑丝| 国产女生在线| 青青草成人视频在线观看二区| 99亚洲国产精品色一区二区三区| 97色在线观看| 精品午夜福利| 久久久久久久久久久久久9999| 啊啊啊啊好疼视频| 国产网红精品| 青久久| 国产成人久久久精品免费AV| 人妻精品一区一区三区蜜桃91| 免费?级毛片无码?∨蜜芽试看| 99热66| 久9精品| 久久av色| 色情乱伦AV| 欧美色图亚洲色,麻豆| 五月天激情四射| av日韩中文字幕| 大屁股xxxxx| 欧美天天综合在线| 91 丝袜在线| 免费?级毛片无码?∨蜜芽试看| 久视频在线观看| 日韩黄片影院| 91在线/欧洲| 久草免费福利在线播放| 欧美色蜜桃97| 亚洲精品国产精品乱码不卡| 乱伦Av网| 国产成年女黄特黄| 午夜精品久久久久久久| 亚洲熟妇乱女区二区三区| 精品无码久久久久久国产浪潮| 成人片视频| 亚洲激情综合| 一级@啪啪视频| 97色欧洲| 夜夜嗷嗷一区二区| 精品婷婷| 日本精品网站在线中文| 99久久久| 美女主播色欲91抠b在线播放| 3d成人精品一区二区| 欧美宗合网| 丰满精品人妻少妇久久字幕| 涩五月婷婷| 91av一区二区在线观看| 亚州男人天堂| 午夜男人的天堂| 成熟熟女国产精品一区二区| 精品婷婷| 精品久久人妻成人网| 欧美一级A一级a爱片久久| 蜜桃臀久久| 少妇内射视频| 亚熟hd视频在线| 99re在线观看| 亚洲97P| 日本中文字幕高跟| 嗯嗯啊啊操死我| 日本午夜福利视频| 久久久99久9| 天天日日本| 1204金沙人妻懂旧版免费| 97爱b| 综合色久欲| 亚洲精品国产拍免费91在线| 91无码精品| 国产一级高清免费观看| 黄色片A级一区二区三区| 夜夜操美女| 国产女人高潮嗷嗷嗷叫小说| 日逼视频日本| 啊视频在线| 日韩人妻资源网| 少妇人妻精品| 欧美爱国产综合、| 国产熟女高潮一区二区三区| av日韩中文字幕| 久久久久久久91| 激情小说在线视频| 在线综合 亚洲 欧美中文字幕| 岛国AB视频| 三级片网站在线播放| 午夜九九九九九九| 国产91影院| 欧美一区二区三区另类精品| 青青草原av| 成人羞羞视频国产| 东京热男人的天堂精品| 超碰99在线| 91天天爱| 亚洲超碰97| 中文字幕日韩人妻视频一区二区三区 | 日va操| 久久久精品国产亚洲AV无码| 黑人操一区二区| 亚洲少妇色图自慰直播| 日本阿v天堂在线观看| 久操不卡视频| 欧美性爱日韩性爱| wwwxxx日本爽| 在线播放成人高清免费视频| 久久区| 综合欧美色图| 久久午夜神马| 啊啊啊轻点在线观看| 国产吹潮女在线观看| 亚洲人久久久网| 日韩美女,国产传媒,视频一区| 厕所偷拍在线| 欧美最婬乱婬爆婬牲视频| 91性网| 成人av影院在线观看| 色色色综合| 大香蕉色欲AV| 欧州一区二区三区四区| 国产欧美日韩在线不卡第一页| 91丝袜美腿网站| 人妻人久久精品中文字幕| 最新无码国产| 极品美女福利在线观看| 日本日日色视频| 嗯嗯啊啊啊好爽| 无码av永久免费专区网站| 日韩一级二级在线| 啊啊啊好大好深| 思思热er精品视频| 天天舔九色婷婷| 我中文字幕6区| 日韩人妻有码免费视频| 噜噜在线| 91综合在线| 亚洲熟女一区| 欧美一区二区观看在线| 五月亭亭六月丁香| 亚洲Av无码成人精品国产| 久久超碰亚洲人| 不卡视频一区蜜桃视频| 最新中文字幕在线亚洲| 久久精品视频在线观看| 91A欧美电影网站| 男人天堂.AB| 天堂综合网| 99色色网| 欧美情色亚洲| 久久HD| www.人人摸在线视频| 国产一区二区在线电影| 亚洲天堂一区二区| 一区二区三区精品久久| …中文字幕亚洲乱,97人妻无码费视…| 女同女同恋久久级三级| 97视频新免费| 另类综合另类| 偷看洗澡一二三区美女| 最新日日夜夜天天干干| 中出20p| 开心六月色| 俺去也婷婷| 无码最新| 成人免费视瓶| 97国产|免费| 91国产美女丝袜足交精品视频| 亚洲一本大道中文字幕无码在线| 大香蕉伊人网| 久草男人天堂| 欧美中文字幕男人天堂久久精品 | 97爱爱影院| 久久久人妻| 玖玖色综合| 蜜臀99久| 天天综合亚在线| 2019天天干| 啊啊啊啊视频免费| 国产一区二区免费福利片| 嗯嗯嗯啊啊啊操的我好爽| 欧美亚洲韩国视频十五区| 亚洲av综合色区图片亚洲| 国产农村妇女一区二区| 另类欧美色| 白嫩国模丰满一二三区| 怡红院亚洲怡春院av| 国产精品亚洲无码| 超碰午夜在线| 国产亚洲色婷婷久久99精品91 - 百度| 99精品无码| 丰满人妻一区二区三区免费 | 亚洲 欧美日韩 另类| 天天综合网亚洲综合网| 户外裸露刺激视频第一区| 色婷婷一区二区三区久久午夜| 一区三区啪啪| 伊人九九| 国产性感在线观看| 国产成人自拍视频视频| 天天操熟妇| 少妇超碰在线| 777琪琪午夜免费A片| 久久精品视频一区三区小泽玛利亚| 无遮挡h肉动漫在线观看| 吊色| 小草精彩毛片| 日本免费人成视频播放120秒| 亚洲国产中文字幕| 亚洲制服欧美另类内射| 91麻豆天美传媒在线| 爱欲AV| 欧美视频一区二区在线| 2019天天干| 中文幕97| 九九热精品免费视频| 国产极品精品美女视频| 欲色综合| 欧美情色贴图| 日本三级黄页| 亚洲AV噜噜狠狠网址蜜桃动漫| 超碰欧美97| 97色视频在线| 久久久久久久极品香蕉视频| 在线国产福利网址导航| 亚洲熟女av中文字幕| 欧美性天天影院| 欧美激情亚洲色图| 婷婷五月综合在线| 高潮毛片无遮挡高清免费| 亚洲一区二区AV| 精品乱码在线观看| 大香蕉宅男伊人| 亚洲性综合9| 欧美精品999| 成人性爱视频在线看| 欧美夜夜草视频| 亚洲九九视频| 国产免费一区| 超碰97资源中文字幕| 五月丁香六月| 综合欧美日本三级| 亚洲熟妇综合久久久久久| 涩爱AV在线| 精品熟女一区=区三区| 97在线精品| 午夜欧美女人操逼| 久久国内| 欧美日韩在线国产在线| 白天啪啪晚上啪啪视频| 五十路六十路七十路熟婆| 欧美色狠| 小说区 图片区色 综合区| 久久国产精品m码| 亚洲人妻五月丁香婷婷| 日本一卡二区在线| 秘书高跟黑色丝袜国产91在线| 91男人天堂网| 久久久免费高清中文视频| 亚洲欧洲激情| 精品人妻久久久| 99re视频在线播放青草| 亚州精品一区二区三区香中文字幕在线| 日本Xx性爱| 秋霞久久亚洲精品成人| 丰满岳乱妇一区二区三区| 大香蕉一区二区在线观看.| 搡老熟女免费视频| 先锋影音av先锋一区| 男女做爰猛烈动高潮A片免费应用| 婷婷操视频| 国产综合色精品在线观看| 国产毛片片精品天天看视频| A片大香蕉在线| 中文字幕乱码人妻二区三区| 777AV电影| 99热最新| 97亚洲性爱| 国产妇女精品视频青青草| 蜜臀无码一区二区| 伊人操| 亚洲乱伦图片视频| 色色婷婷五月天| 青青草视频在线观看一区二区| 亚洲AV无码久久精品蜜桃小说| 天操天操夜操夜月操月年年操操| 青青草大香蕉视频| 亚欧毛片基地国产毛片基地| 成人性爱美曰韩| 啊灬啊灬啊灬好深灬快高潮了动漫-国产字幕国产在线观看-B049AV | 婷婷亚洲综合| 日韩在线97| 怡红院久久老司机| 老熟女乱伦一区| 色色激情| 四季AV一区二区凹凸精品小说| 国产精品久久久久久9999| 鸥美中出| 无色无码| 天天干天天日天天射黄色大片| 亚洲女人毛茸茸91| 伊人久久综合影院精品久久久| 婷婷AV一区二区三区| 国产偷仑| 蜜臀视频网站| 久久欧美性爱视频| 色综和网| 久久AV无码AV| 五月婷婷六月天| 久久精品人妻一区二区| 久操91视频| 亚洲有薄码区日本系列中文字幕| 日韩人妻精品| 淫荡少妇免费| 成人网欧美风情| 亚洲天天综合| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴| 日本精品免费一区二区三区四区| 四虎精品一区二区| 99激情视频| 久久久久久人| 少妇干B| 九九九九九九九九九九九蜜桃| 视频一区二区三区精品| 91n美女视频| 日本一级特级毛片视频| 99色色网| 妇女一区二区三区| 99免费在线视频| 操一对老熟妇爽上天视频| 9999免费精彩视频| 日韩欧美~中文字| 综合色图区| 花花AV导航| 欧美日韩国产在线| 四虎精品一区二区| 97久久精品亚洲| 2019天天干| 有码色中文字幕在线观看| 欧美18 在线观看| 伊人991| 欧美亚洲另类在线蜜桃| 国产AV天美传媒一区二区三区| 性爱1区| 日本韩国五十路六十路七十路老熟女作爱视频网站 | 久久人人爽爽爽人久久久| 亚洲AV无码乱码| 综合天天网| 亚洲精品视频在线播放| 亚州一区二区| 性生活久久久久久久久久| 夜夜天天噜狠狠爱2021| 国产精品色| 人人喜人人妻| 手机在线A片| 美女十八禁| 青苹果影院男人的天堂| 亚洲一欧洲中文字幕在线| 国产97综合| 夜夜高潮夜夜爽| 蜜桃av色偷偷av老熟女| 国产精品久久久九九九| 色婷婷五月综合激情中文字幕| 97亚洲中文| 亚洲色悠悠久久88| 六九九九| 欧美一级国产一级| 神马麻豆福利院| 大香蕉综合在线| 日韩欧美视频青青| www.91理论| 黑人猛交| 91成人精品| 欧美激色| 后入内射蜜桃臀| 欧美日韩国产在线| 日韩人妻免费精品| 丝袜亚洲综合| 97色欧洲| 蜜桃丰满熟妇av无码区不卡| 久久精品人体| 久久香蕉影院| 亚洲天堂7777| 少妇厨房愉情理伦片bd在线观看| 亚洲无码日韩电影| 成人一级二级| 国产极品久久久| 丰满少妇一区二区三区四区观看| 国产操逼视频在线观看| 97欧美精品| 大香蕉狠狠爱| 亚州五月| 97精品全部| 亚洲第一男人天堂| 啊啊啊啊啊啊啊啊要喷了| 九九亚洲精品| 国精综合一二三区影视| 骚乳在线| 国产亚卅97| 欧美中文字幕一区 | 色69大色97香蕉| 狠狠操狠狠燥| chaopen97久久| 中文字幕伊人| 欧美精品欧美精品系列 | 黄色香蕉视频网站一区| 翔田千里无码一区| 人人操我人人干| 操逼日批| 艹少妇网站| 日韩免费性爱视频在线观看| 日本www操操操| 国产精品久久久三级无码| 婷婷亚洲天堂| 色蜜AV| 97人人爱人人做人人乐| 欧美日韩婷婷中文| 好屌色综合| 中文字幕色AV| 国色综合天| 97色网| 国产欧美精选自拍一区| 午夜精品探花| 97精品综合| 精品久久久久瑟瑟| 久草精品一区| 天天色综合影视网| 蜜臀久久99精品久久久久久-DVD原版全| 综合亚洲欧美精品日韩?v| 久久久久久人妻一区精品色欧美| 玖玖玖玖精品国产剧情| 伊人五月天| 欧美日韩人人早| 夜夜国自区| 日本伦乱九九九综合| 秋霞免费无码视频日韩A片| 婷婷视频在线免费观看| 伊色综合天堂色97| 激情文学 亚洲图片| 综合色欧美| 性爱视频无打码在线观看| 色色婷婷丁香| 超碰人妻久久人妻中文97| 91欧美少妇| 一二三四视频中文字幕在线看| WWW黄片COM| 九九热这里只有在线精品视 伊人草 成人菠萝蜜视频在线观看 | 欧美亚洲第1页| 日韩成人小视频| 久久黄色视频一区二区三区 | 蜜臀久久99精品久久久久久婷婷| 欧洲亚洲国产综合在线| 超碰在线91| 无卡一区=区| 91精品人妻偷情| 又大又白奶子| 日本2020一区二区| 十八禁av无码免费网站APP| 免费看美国人人爽,人人操| 久久成人东京热人妻| 国产精品精品系列在线观看| 伊人久久婷婷| 性交一区二区在线播放| 999精品国产高清一区二区| 开心激情站| 啊啊啊啊免费视频| 国产 日韩 另类 视频一区爱| 久草婷婷| 收看日本人日bb| 色好看av| 国产成人亚洲精品无| 人妻少妇蜜桃视频欧美一区| 91美| 欧美另类色图片| 色综合大香蕉| 天天插天天插| 91天天综合日韩欧美| 日本片日本片祼观看网站在线看中文版网页在线看 | 老熟女区| 人人操人人操人人人操| 天天综合网91入口| 亚洲无码超碰免费| 双插在线| 亚洲视频中文一区| 91天美传媒精品| 欧美一级久久久久久久大片动画| 热久日综合| 欧美激情性久久久久久| 蜜臀久久在线视频| 婷婷午夜成人色中色| 夜夜爽爽夜夜精品视频| 综合操逼| 女生看匆91网站| 99少妇精品视频| 国产女大学生AV| 欧美韩国你懂得在线| 黄色大香焦1级‘′‘| 美女十八禁| av天天在线观看| 国产一区二区三三视频| 超碰97导航| www.婷婷五月天| 五十路六十路素人熟女| 久久久内射良家| 欧美性爱97超碰| 人人贴人人摸| 亚洲丨在线| 激情亚洲天堂| 亚洲欧美经典一区二区| 97干在线| 亚洲精品黑丝| 欧美九九爱| 在线观看国产黄色| 青青草中文字幕| 精吧天堂| 欧美综合第一| 可能人人看人人摸| 人妻丝袜一区二区三区在线| 北京美女一区二区| 亚洲丝袜色| 在线视频免费播放一区| 神马麻豆福利院| 免费97视频| 天堂日本亚洲欧美| 国产精品久久久三级无码| 天天视频网站黄| 国产精品熟女一区二区三区| 少妇无码太爽| 国产乱子伦久久精品综合一区二区三| 在线情色电影 91大| 密臀在线免费观看| 免费一级视频特黄色大片| 人妻丰满熟妇一区二区三|