久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码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ǎ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
返回資訊列表
日婷婷| 最新国产亚洲精品精品国产亚洲综合| 五月丁香拍拍激情综合三级| 青青草九九九九九| 久久久久久久综合,国产| 日本操嫩b网| 九九热视频在线观看| 禁止观看美女黄| 精品二区三四区五电影 | 强奸乱伦资源| 97色欧州| 丰满少妇一区二区三区免费看| 成人av影院在线观看| 午夜精品久久久久久久男人的天堂| 日韩99神马视频播放| 欧美在线大香999| 色伊人91| 97久久免费| 四虎影视欧美| 精品久久一区二区三区四区五区| 伊人丁香五月婷婷| 国产精品无码在线| 国产五码丝袜屁眼| 五月丁香六月综合缴清无码 | 欧洲亚洲综合| 亚洲熟女中文字幕在线| 日本久久久精品电影| 日韩免费三级黄片电影| 亚洲、日韩、综合、另类| 99性视频| 日日摸日日弄日日拍| 婷婷久月| 黑人综合网| 激情婷婷| 密臀在线一区尤物| 天天香香欲综合| 国产亚洲日韩在线三区黑人| 色97国产69香蕉| 国产av美女被艹的乱叫| 欧美大香蕉同搞| AV丝袜少妇| 欧美另类精品xxxx| 99蜜月精品久久| 国产免费永久精品无码| 欧美99999| 欧美色997| 天天色天天干天天射| 九九九久久久W精品| 六月丁操逼| 一级黄色牲爱A级片| 99re在线视频国产| 久久九九热| 国产超碰在线| 搞中出久久| 精品久久九| 久久人人爽人人爽人人片Ⅴ| 屁股久久久久久久久久| 久悠悠av| 亚洲中文一区二区三区视频| 屁股久久久久久久| 大香交| 69AV女优男人的天堂| 自拍丝袜美腿人妻| 99久re热视频精品98| 国产一区二区a毛片| 伊色久人大在线| 日韩偷拍色图| 欧美黄色大片在线观看| 激情欧美97| 男人的天堂在线2| 91干熟女| 国产视频一区二区三区在线免费观看 | 丁香五月色情| www.久久| 色综合久久久久| 啪一啪免费视频| 天堂男人网| 色偷偷男人的天堂麻豆| 欧美色图私拍91| 亚洲精品乱码久久久久久蜜桃麻豆| 日本三级精品| 亚洲第二页| 九久久精品| 69丨亚洲丨精品丨入口免费播放| 九九九九九精品十六| 久久九精品| 日语五十路和六十路亚洲国产精品| 97精选久久| 女人一区| 欧美综合传媒| 超碰69| 天综合网欧美| 亚洲少妇自拍中文字幕懂色| 老女人91| 国产精品视频在线观看| 午夜免费视频1000| 丁香六月天| 亚洲中文字幕乱码无码一区二区 | 91国产丝袜美女| 综合97亚洲| 中文字幕在线2| 97久久天天综合色天天综合色电影 | 内射黑丝袜| 综合亚州欧美| 天天欧美97| 亚洲视频精选| 黑人狂躁日本妞一区二区三区| 亚洲欧美高清无码| 97超碰磁| 亚洲高清在线| 亚州 综合 色图| 夜夜爽夜夜摸夜夜操免费视频| 超碰97极品9| 久久精品国产精品| 国产91影院| 麻豆国产免费影片| 97九色人妻| 欧美色97| 中文字幕三四区| 乱伦Av网| 亚爽爽爽爽爽爽爽爽| 蜜桃视频啊啊啊啊| 樱花蜜乳av| 69精品久久久久中文字幕| 综合干干干av久久久综合网| 日韩欧美蜜桃精品久久中文字幕久久| 欧美不卡五十路| 亚洲毛片一级带毛片基地| 99热精品青草在线| 亚洲中文字幕精品久久久久久直播| 巨爆乳肉感一区二区三区竹菊影视| 中文字幕大片三级狠狠干| 丝袜无码a片| 秋霞免费无码视频日韩A片| 国产精品无码论坛| 亚洲精品国产精品乱码不卡| 欧成人精品H无码| 丁香六月婷婷综合| 久久99精品九九久久久婷婷| 男人的天堂激情| 久久久久久久久女黄| 成人小说另类在线| 91+欧美| 在线视频97| 亚洲脚交| 又大又黄国产| 精品视频久久| 天堂俺去俺来也www久久婷婷| 亚洲综合网图| 欧美操逼熟女| 日韩三级伊人| 婷婷六月色| 久久久久久久唑| 看一级黄色视频| 国产精品丝袜在线| 日韩人妻精品久久久久| 国产高清吃奶免费视频网站| 成人久久无码www| 亚洲无码 国产无码| 亚洲一区中文字幕一区| 国产精品97视频| 手机在线大香蕉| 精品久久久九九九孕妇| 91精品人妻电影| 久久有码视频| 亚洲综合图色在线| 岛国黄| 东京热大香焦| 国产欧美日韩女同性恋ww喷水精品| 久久蜜桃一区二区| 亚洲综合性网址| 亚洲综合激情五月久久| 伊人色综合网电影| 91视频伊人| 熟女91网站| 国产人妻精品久久久一区二区三区 | 99精品成人免费看| 国产中文大片资源中文字幕| 亚洲欧美另类图片| 亚洲日韩精品久久久久一区壹牛 | 亚洲精品丝袜-不卡成人免费……| 97干在线| 插入综合网| 国产 丝袜 欧美中文 另类| 激情小说亚洲| 蜜桃臀av一区二区| 日本精品一区二区三| 好看的91视频| 亚洲日韩黑丝| 亚洲啪啪性视频| 欧美综合娱乐久久| 亚洲精品97| 老熟女中文字幕高清| 爱射综合| 思思热免费视频观看| 亚洲精品国产无码高清| 黄色大片视频在线免费看| 丰满人妻-区二区三区免费看| 亚洲AV资源| www.色婷婷| 郑州宾馆老熟女露脸啪啪| 亚洲九月丁香| 五十路三级片| 色乱二区| 国产成人久久久精品免费AV| 情趣丝袜无码操逼视频| 欧美综合97www| 乱论91| 国产成人欧美一区二区三区的国产| 欧美日韩中文视频播放| 外国91| 亚洲无码一区成人免费午夜| 国产人妻精品一区二区三区秋霞 | 国产免费永久精品无码| 亚洲男人的天堂一区二区| 97超碰色色| ...日韩成人一区二区三区字幕| 欧美熟妇乱码在线一区| 亚洲男人的天堂一区二区| 操人无码| 白丝AV网站| 少妇毛片久久| 精品人妻一区二区三区夜夜| 尤物视频偷拍免费| 97超碰人人模人人拍人人| 欧差乱伦二三| 日韩精品区二区三区不卡| 色欲久久综合| 人妻美腿丝袜制服诱惑综合天堂-| 久久偷拍人| 欧美一区二区三区成人性生活| 日本色色色色色视频| 国产亲戚伦亲在线| 亚洲色图久久成人| 春色综合免费| 八戒午夜福利理论片| 亚洲中文日韩精品| 91爱看| 欧美AB在线| 1234区中文字幕在线观看_青青草国产在线_日韩一区二区 | 天天草天天日| 亚洲精品乱码久久久久久蜜桃麻豆| 日本福利二区视频| 校园春色欧美| 亚洲色系另类精品国产| 丰满人妻一区二区三区在线| 久久青娱乐| 99在线无码精品秘 入口黑人| 色婷婷在线视频| 玖玖资源视频一区二区三区| 日韩欧美成人性爱在线| 99re视频在线播放青草| 乱伦a片视频| 青青草黑寡妇男人天堂| 精品人妻丰满熟妇一区二区三| 欧美性爱日韩性爱| 午夜性| 亚洲熟女乱色一区二区三区| 国内三级自拍小视频在线观看 | 国产蜜臀精品一区免费尤物| 蜜桃狠狠色伊人亚洲综合| 天天色天天干天天爱| 四虎永久在线精品免费网址| 天天情欲宗合网| 大香蕉在线免| 91在线色| 欧美gv在线观看| 人妻美腿丝袜制服诱惑综合天堂-| 亚洲人妻久久| 欧美操逼视频二区| 亚洲一级特黄大片在线播放91| 99精品丰满人妻| 人妻中文字幕精品无码| 丰满人妻一区| 亚洲天堂99| 啪啪啪亚欧美视频| 久久天天躁日日躁狠狠躁 | 精品亚洲俞拍视频一区| 日本操逼aaaaa| 色偷综合| 成人五月香网在线| 日本人妻伦在线中文字幕| 国产在线精品电影观看| 五月丁香综合啪啪| 国产操逼视频在线观看| 欧美日韩天堂| 日本精品人妻少妇一区二区| 久操com| 欧美97色| 插B在线观看| 欧美乱色| 亚洲综合夜色| 啊啊啊操一区| 欧美v亚洲v综合v国产v妖精| 老熟妇一区二区三区啪啪| 欧美日韩国产色图在线| 老熟女搡BBBB搡BBBB视频| 91精品国产91久久久久久久久久久久| 亚洲人精品久久久喷水| 欧美性爱伊人| 中文字幕一区二区三区字幕| 欧美懂色综合网| 国产91丝袜在线播放蜜月| 欧美精品在线观看| 婷婷丁香五月综合| 亚洲中文国际强奸字幕| 一级A啪啪啪啪| 亚洲第一免费视频| 日韩高清一二三| 男人的天堂成人的社区| 久久亚州精品成人Av无| 高清国产精品福利网站| 多毛小伙内射老太婆| 色婷婷九月| 69人妻精品丰满熟女区| 天天色综合影视网| 欧美国产精品| 蜜臀久久一区二区| 综合97久久| 国产精品分类在线观看| 久久精品中文字幕无码l| 久久一二三四五六七八九区区区 | 亚洲激情欧美色图| 久久婷婷色综合一区二区三区| 婷婷20月天青娱乐| 久久最新视频免费观看| 中文乱码99| 亚洲成人精品久久久| 啊啊啊啊二区好大| 成人资源中文字幕在线观看天天| 91精品人妻偷情| 91国产丝袜足交精品视频| 1禁看欧美黄片免费看| 亚洲 自拍偷拍 欧美| 久久精品国产亚洲AV高清演员表| 欧美人与性动交a美精品| 欧美性爱91| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 欧美亚州综合网图片| 97久久国产精品| 91制服丝袜| 一起草在线视频| 欧美午夜视频免费观看| A片 AV一级在线播放观看免费| av天堂手机版追回| 91狠婷| 欧美精品偷拍| 精品美女少妇一区二区| 婷婷色综合欧美日韩| 成人午夜高潮av猛片| 日韩av不卡在线看| 色色国产| 综合久久99亚洲人妻中文在线| 怡红院亚洲怡春院av| 成人青青草原伊人| 九九精品99| 久99视频| 天天色怡春院| 欧美性性性| 都市久久精品激情亚洲| 9 9精品一区二区三区| 青青国产在线拍揄自揄拍| 人人妻人人爽一区二区三区| 久久精品国产精品一区 | 国产91专区| 操一操摸一摸| 久久精品国产精品亚洲艾通辽熟妇 | 九九热在线精品视频| 久久欧洲| 国产视频人人网| 91婷婷| 大屁股国产在线视频| 欧美18老人禁| 亚洲无吗在线视频| 诱惑人妻欧美一区在线播放| 熟女人妻一区二区三区免费看 | 亚洲精品三区在线观看| 亚洲无套久久嗯嗯| 友优传媒精品在线一区二区| 国产av美女被艹的乱叫| 国产风韵犹存熟妇三区| 天天干天天燥| 欧美青青视频| 欧美日日操| 亚洲色图国产另类| 日韩人妻一二三区视频| 99色骚| 超97在线精品视频| 东北操逼| 亚洲人妻AV| 91在线观看,天天综合| 美女自卫慰黄网站免费| 神马久久69| 欧美午夜视频精品久久| 日韩一级二级三级免费看完整版国语版| 三男一女不戴套的A片| 国产人妻精品久久久一区二区三区 | 国产久久视频| 性爱综合一区二区| 久久99草| 香蕉久久国产AV一区二区| 亚洲精品九九九九九九| 国语少妇精| 国产十八禁视频| 嫩草影院在线观看精品| 麻豆一区在线| 国产精品麻豆成人av| 久久久久亚洲一区女同性恋中文字幕| 99色综合| 亚洲天堂电影精品一区| 丁香色婷婷| 成人午夜无码视频| 把腿张开老子CAO烂你| 精品国产一区二区三区香蕉欧美| AAAA欧美日韩| 九九综合九九综合| 9999久久久| 就去色综合| 国产少妇高潮| 五月天加勒比啪| 五月天欧美色图| 91色s| 久热大香蕉网站| 97免费视频在线观看视频| 极品AV网站在线观看| 色女免费在线观看视频网址| 狠操91,com| 亚洲无线观看久久| 麻豆天美传媒毛片| 亚洲性网| 免费日韩黄片| 操逼网站视频漫画国产| 99色婷婷| 黄色成品网站| 欧美第二页午夜| 蜜臀AV午夜精品久| 美国日韩黄片| 操操逼操操逼操操逼逼| 操迟操逼在巾线Fre看| 91人妻尻屄视频| 蜜臀99久| 丝袜高跟澳门91视频| 欧美猛交黑寡妇中文字幕| av操操不卡| 日韩三级在线观看网站| 激情四射婷婷六月天| 啊好爽受不了无码| 60秒免费小视频| 午夜无遮挡男女啪啪视频| 亚洲天天自拍| 97看操| 亚洲午夜AV| 高清国产性猛交xxxx乱大交| 97亚洲在线| 色香欲天天天天综合色| 97亚洲资源| 伊人AAA| 亚洲古典另类欧美在线| 日韩性爱小视频| 亚洲狠| 91色射| 欧美亚洲韩国视频十五区 | 91爱综合| 熟女丝袜视频| 97视频网站在线观看| 精品网站99999| 日韩射图| 100啪啪视频大全| 久操网线| 少妇同性| julia国产在线 | 国产午夜福利专区综合| 91精品黄在线观看| 青青在线视频免费| 国产偷拍网站| 2024人人操人人摸| 欧美色天堂网在线视频| 亚洲丝袜诱惑| 久久久97| 激情综合网一盗摄| 黑人精品XXX一区一二区| 高清在线偷拍自拍视频| 久久久∴| 老司机深夜18禁污污网站| 欧美激情综合| 日韩在线一区高清在线| 99超级碰免费视频| 9997se| 中文久久久| 国产日逼视频| wwe 天天干.com| 能在线播放的国产三级| 国产第二页| 亚洲色综合| 欧美亚洲今日在线| 久久国内| 香蕉av一区二区三区| av最新免费中文字幕| 久久久久久久78| 在线a亚洲视频播放在线| 欧美日韩在线国产在线| 亚洲色图欧美| 色婷五月| 午夜美女诱惑电源网| 色爱综合网| 国产一区二区久久| 免费的很黄很污的全部视频| 久久久性爱视频| 中文人妻av高清一区| 台湾佬中文娱乐自偷自拍| 人妻三级在线中文字幕| 久久精品人体AV| 久久AV色| 在免费jIzzjIzz在线视频| 久久精9| 国产视频一区二区三区在线免费观看| 91精品人妻一区二区三区蜜桃臀| 911粉嫩人妻| 99re在线| 婷婷久久五月综合激情| 亚洲大胆人体av| 大奶啊啊好爽 | 岛国激情视频软件| 韩日精品福利视频一区不卡在线免| 国产成人免费观看在线视频| 777超碰| 夫妻四区五区六区| 日本免费一级AAA大片器| 免费国产| 婷婷五月丁香五月| 国产 v乱码一区二| 极品综合| 亚洲做性| 欧美乱伦专区| 97国产精品| 色爱综合网| 少妇一区二区三区高速| 中文字幕在线第二页| 国产乱伦亚洲| 日日超碰亚洲| 国产日韩欧美| 口爆欧美91| 开心五月婷婷| 免费操逼视频下载| 青娱乐欧美激情一区二区| 青青草一区二区高清无码视频| 亚洲自拍一区夜夜操| 韩国一级做A片免费的| 神马久久午夜| 欧美丝袜亚洲| 97欧美久久久久久久| aaa淫乱视频| 国产一级片| 特级丰满少妇一级AAAA爱毛片| 成人午夜高潮av猛片| 操久久久久| 欧美色图在线视频少妇| 天操老女人| 亚洲一区深夜| 夜夜爽33333| 日本 欧美 国产一区| 精品偷拍13p欧美dodk视频| 98人妻精品一区二区色欲| 欧美色老汉| 土豪酒店各种姿势玩弄极品幼稚| 久久超碰、| 久久久久久性爱片| 丁香婷婷久久 | 欧州一区二区三区四区| 91网18| 91|九色|国产熟女| 色爱三区| 麻豆啪啪啪视频| 欧美强奸乱| 国产综合网站在线播放| 一本久道久久综合狠狠爱一密臀精| 青草伊人久久| 日本2020一区二区| 超碰在线综合97| 超碰视97中文| 少妇高潮九九九九九九九| 精品9999| 四虎av在线| 久久久精品,3| 人爽不卡视频| 欧美少妇色图| 超碰精品日韩欧美国产| 青青操网| 韩国免费播放一级毛片| 手机午夜电影神马久久| 免费自拍三级综合| 亚洲一卡2卡3卡4卡乱码网站 | 亚洲精品97在线| 91人人爽人人爽| 清清一区二区三区四区不卡视频| 激情图片伦理国产一区二区日韩| 男人的天堂欧美| 欧美91网站| 翔田千里Av在线| 国产又粗又长又爽又色| 国产高清1234区| 欧美视频一区二区三区| 亚洲日韩人妻中文字幕一区| 9/A片| 99热一区二区三区四区| 99热99色| 99re免费| 精品视频日日夜夜| 日韩操啪| 亚洲 图片 欧美 色图| 久久AV无码AV| 婷婷午夜| 青青色在线观看| 97久久久| 国产色图乱伦| 96免费视频在线| 看一级特黄a大一片| 青青青青草av在线观看| caoni国产亚洲av| 死我十八禁| 天天综合网国产| 在线色导航| 97视频一区| JULIA人妻风俗店中出电影| 人人贴人人摸| 色哟哟av| 九月丁香婷婷| 国产9熟妇视频网站| 天天日夜夜| 国产久久成人| 亚洲97精品| 1204金沙人妻懂旧版免费| 欧美一区二区亚洲天堂| 婷婷av在线中文字幕| 久久禁| 欧美 青青草| 无码日韩网站| 91香蕉视频在线观看免费| 熟女久久| 天堂伊人久久| 欧美日韩99精品麻豆传媒| 强奸乱伦Av网| 操国产逼| 91色宗合| 99色在线| 歐美性天天| 激激五月| 操人91| 粉嫩粉嫩一区性色AV片| 国产精品不卡av免费在线观看| av日韩中文字幕| 超碰天天操你比| 熟女日韩| 夜夜操二区| 日韩免费性爱视频在线观看| 精品国产一区二区三区香蕉欧美| 综合网欧美| 精品人妻久久久久一区二区三区| 欧美综合 站| 久久超碰免费的| 欧美三级不卡| 密桃99999| 综合五月婷婷| 国产一区二区视频在线播放| www.大香| 国产女人高潮嗷嗷嗷叫小说| 永久电影三级在线观看| 九九久久玖玖| 国产AV中文| 91狠狠综合久久| 国内外激情在线| 久欲AV| 国偷自 一区二区| 操死我了嗯嗯嗯| 91亚洲欧美色图| 欧洲乱码一区二区| 中文字幕片| 亚洲五区熟女| 午夜精品久久久99| 亚洲另类色图片| 精品久久久久黄少妇| 97干在线看| 国产精品久久久久绯色| 国产精品对白内射| 欧美色图片91| 丝袜综合色图| 国产美女口爆吞精| 中文字幕久久精品一区| 天堂射| 97超碰超欧美。| 99热日| 亚洲伊人青青草| 四虎影视国产精品| 亚洲色图A| 久久青青草在线视频| 亚洲国产精品成人久久蜜臀| 亚洲春色一区二区三区| 久久亚州精品成人Av无| 国产东北女人在线视频| 久久精品国产亚洲AV无码做| 爆操无码| 一区二区 韩日AV| 97蜜桃综合| 99xav| 综合大香蕉美。| 久久久啊啊啊| 视频一区二区免费在线| 国产综合在线视频网站| 91三级理论片播放器| 久久女婷| 九九九综合精品| 欧美国产成人在线| 九九九九九九综合| 人妻色偷色噜| 91小视频| 超碰97欧美在线| 日韩人妻精品中文字幕| 97视频一区| 国产视频人人网| 东京热男人的天堂精品| 99爱爱| 国产AV天美| 男人的天堂久久狠| 久久69| 国产精品美女久久久久AⅤ国产馆| 探花一区在线| 91久久精品国产| 国产免费久久精品99re韩国| 极品少妇久久久| AⅤ片水多多| 最新国产精品久久精品| 亚洲精品蜜桃久久久一区二区三区| 嗯嗯啊好大| 日韩有码中文字幕女同性恋| 性爱乱伦视频免费| 亚洲天堂电影精品一区| 欧美熟女丝袜| 精品国产Av无码久久久伦古装| 中文字幕精品一区二区精| 手机av亚洲丝袜美腿日韩第一页二页| 97超碰精品图片| 人妻丰满熟妇一区二区三| 五月天伊人| 欧亚日韩综合精品国产| 国产精品人妻免费精品| 日本韩欧美在线播放a| 精品视频97| 91五十路| 久久9视频| 色娱乐色呦呦夜夜夜夜av| 欧美天天弄| 2020国产精品| 欧美天天综合站| 操逼无码操逼| 黄色污污污污污污网站| 美女天天干| 国产成人亚洲精品无码古代早漏男| 超碰久久中文| 少妇激情一区二区三区视频| 亚洲中文国际强奸字幕| 神马久久网| 亚洲人成在线放东京热| 综合色图区| 久久久少妇诱惑精品视频| 国产一区二区三区视频在线看| 久久久精品日本一道| 中韩中文字幕在线观看| 丝袜美腿制服人妻二区中文字幕| 人妻熟女一区二区三区在线| 亚洲熟妇一,二,三期| 婷婷久草一区二区三区| 欧美激情亚洲| 亚洲精品日日夜夜52| 亚洲综合校园春色| 国产精品干干干| 日韩精品99久久久久久中文字幕| 欧美一级在线观看成人 | 亚洲图片偷拍欧美| 97欧美性爱| 国产久久久久影院老熟女| 超碰国产精品无码| 中文字幕人妻色偷偷久久皮| 乱操乱伦AV| 亚洲精品骚逼| 中文字幕久热视频在线| 欧美伦乱爱| 天堂俺去俺来也www久久婷婷| 超碰精品| 午夜120视频在线观看| 天天操人人操骚逼网站| 日韩 欧美 视频 在线 一区| 欧美少妇高潮久久91| 精品国产一区二区三区香蕉欧美| 中 文字幕一区二区三四 五 区日 日 骚| 久久伊人最新网址视频| 亚洲男人天堂2012| 国产日韩手机视频在线| 亚州综合AⅤ| 狠狠色狠狠色狠狠五月| 久久原创中文| 国产精品成人无码av| 91中出在线| 五月丁香久久| 七月婷婷综合| 97色欧州| www.91理论| 天天爽入口| 丁香六月婷| 97久久久| 老鸭窝黄色视频网站| 成人性爱美曰韩| 日韩成人小视频| 国产少妇与亚洲av| 免费久久一级毛片大黄| 青青草日韩免费观看高清在线| 欧美黑人精品一区二区| 超碰99在线| 青青草国产亚洲精品久久| 久久青青草原免费视频| 欧美日韩人妻精品一区二区三区 | 日韩综合无码色欲vv| 久久久精品中文字幕麻豆| 五月丁香六月婷综合成人综合 | 日日日日做夜夜夜夜做无码97| 丁香五月影院| 成人av福利在线观看| 免看60秒涩涩视频| 日韩女优在线| 久干9操| 国产一二三在线视频五十路| 熟女天天干| 99久在线精品99re8热| 亚洲欧美国产中文视频| 久热影视| 国产又大又粗又长视频| 久久天天摸| 综合操逼| 婷婷丁香激情| 激情文学小说一区二区 | 婷婷性爱| 免费的很黄很污的全部视频| 国产路线专区| 亚洲啪啪啪啪视香蕉| 不卡超碰护士AV在线免费播放| 2021久久国产综合精品青草| 色悠久| 久久久久幕乱码| 另类av天堂| 日韩一区二区精品视频| 午夜影美女日鸡鸡天天视频国产| 放黄片放3级黄片没穿衣服| 国产精品在线一区二区| 欧美成不卡网| 亚洲午夜免费狠狠干| 屁屁影院一区二区三区国产| 69av一区二区三区| 欧美写真视频一区| 大但人体久久久久| 亚洲污一污二| 亚洲日韩av一区二区三区百合| 国产无马av| 国产大学生口爆吞精合集| 亚洲熟妇一,二,三期| 操一对老熟妇爽上天视频| 极品AV网站在线观看| 午夜性| 日韩pv中文| 九九AV| www.99在线| 亚洲一区二区三区四区视频| 国产AV色黄看到爽| 色网站导航大全| 97在线看| 久久久久久九九九| 密臀在线一区尤物| 国产99精品一区二区三区免费| 亚洲本色精品一区二区久久| 五十路三区在线| 日本亚洲嫩草影院啪啪| 91热色| 久久久天美| 中文字幕乱偷人妻久久艾草网| 一区中文字幕二区日韩| 欧美综合97www| 女色视频社区| 国产精品天美传媒| 99re6久热只有精品6在线直播| 五月婷婷丁香六月| 99精品网| 大香蕉宗合网在线| 东京日日夜夜| 天天操狠狠日夜夜干超碰撸com视频在线观看| 精品亚洲国产成人AV制服丝袜| 国产福利小视频高清在线观看| 亚洲日韩美国人妻| 无码精品人妻一区二区三区妖精| 成人亚欧免费视频| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 久久精品国产72国产精品福利| 国产AV激情无码久久无码| 久久无码成人| www.91逼逼.com| 色乱二区| 偷窥自拍亚洲天堂网爆| 九九黄色网| 精品国产乱码久久久久久久久1| 精品国产乱码久久久久久久久久毛片| 97超级色碰碰| 在线天堂资源亚洲| 精品少妇999| 激情小说图片亚洲首页| 人人贴人人摸| 日本色色的视频| 久热无码| 欧美三级一级| 亚洲第91页| 欧美日日人人天天| 中文字幕青青草| 夜色综合| 特级特黄一级毛片免费| 在线免费观看日韩一区| 国产欧美亚洲精品a第2页| 日本三级韩国三级99| 欧美综合加勒比在线| 人妻免费观看| 91精品久久久久| 国产免费黄色一级大片| 国产强奸乱伦xd| 夜夜夜夜久久久久| 日本一级特级毛片视频| 美国精品国产精品| 色五月激情综合网| 蜜臀AV一区二区三区激情综合| 91人妻视频| 久久精品无码不卡| 婷婷伊人五月| 日韩性爱视频免费在线| 青青青国产| 欧美高清在线| 国产成人91一区二区三区| 欧美黄片欧美黄片xxx| 夜夜一区二区| 另类视频在线| 久久午夜色播影院免费高清| 亚洲色图在线视频| 老女人91| 亚洲影院成人| 婷婷丁香五月激情啪啪| 久久精品老司| 600国产精品视频| 色婷婷视频| 操死我干死我| 风韵犹存大大大大香蕉| 免费精品中文字幕| 好淫网一二三视区| 日韩BBN| 国产又黄又爽又刺激久久久久久| 99色热| 久久9精品网站| 嫩草美女久久| 大稥蕉免费视频这里只有精品| 色五月激情AV在线| 被男人吃奶很爽的毛片| 男人天堂一区二区| 一二三四区操操Av| 亚洲 欧美 偷拍 唯美| 97视频观看| 日本Suv精品一区二区| 人人操人人叉人人插人人| 天美一二三在线观看Av| 国产91 丝袜在线播放00-百度| 日韩AV一起草| 大香蕉琪琪日本女优不卡| 国产一级内射高清视频| 99热这里都是精品| 97资源站国产精品| 中文字幕狠狠玩| 欧美韩日精品资源| 欧美性生活免费网| 青青草十区九区爱夜| 国产精品com| 女人天堂AV五区在线| 97网色| 九九色精品| 亚洲综合色图欧美| 成人国产精品三级A片| 亚州高清av| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 国产精品久久久久久久久久二区三区| 午夜一级免费毛片| 中文字幕久久精品一区| 国模私拍一区二区三区神乳| 国产亚卅97| 日韩综合成人免费视频| juliaann丝袜大战黑鬼| 一起草欧美| 噜噜噜久久亚洲精品色情| 一起草欧美| 精品一区二区三区四区外站 | 日本精品无码三级网站| 91精品久久久久久久久久| 国产熟女乱论| 亚洲成人在线资源| 任你艹| 性色A∨91| 日韩内射视频| 国产乱色国产精品免费视| 无码人妻精品一区二区三区九九| 免费又黄又裸乳的视频| 校园春色欧美| 99操碰| 久久一区二区三区四区五区| 91肏屄网| 黄色激情电影在线观看| 91视频综合在线| 久久激情视频| 国产精品免费久久久久久久久久| 夜夜高潮夜夜爽| 日本不卡高清视频| 亚洲,欧美,综合网| 性色一线| 激情抓乳插进去啪啪啪日韩 | 日夜精品| 婷婷五月天久久精品视频一区二区三区| 成人av性爱电影在线观看| 91欧美丨精品丨入口| 3p国产色噜噜一区| 日日摸天天爽夜夜欢| www.99热在线只有精品| 亚洲黄色网址视频| 亚洲风情在线观看| 国产超碰在线一区| 久久久久亚洲Aⅴ无码| 欧美热图99| 玖玖蜜臀资源网| 久久肏大逼| 蜜臀中文字幕| 亚洲精品1区| 丁香五月偷拍| 超碰色男人操熟女| 一本大道青青| 国产偷仑| 丁香六月婷婷综合| 一本色道无码DVD中文字幕| 98福利在线视频| 成人五月香网在线| 又大又长又粗又爽又黄| 一区二区三区麻豆| 九九九九免费高| 嗯嗯啊啊视频在线看| 天天综合网日韩7799| 加勒比中文av| 91超碰在线播放| 欧美中文字幕男人天堂久久精品| 奇米狠999| 操逼操逼操| 97在线欧| 久久九七| 日本在线一二 | 亚洲欧美日韩精品久| 国产福利精品98视频| 成人情色综合网| 女生自91网站| 天美传媒国产原创中文字幕亚洲欧美另类| 爽极品影院| 免费人成毛片乱码| 丝袜美腿丝袜| 欧美日韩天堂| 日产中文字幕2020| 亚洲精品99| 亚州操逼网| av无码av无码专区| 日本成人免费一区二区三区 | 肉丝无码中文高清| 日本天堂网| 人人摸人人干| 国产一区二区三区精品观看啪| 中文字幕一区二区三区字幕| 亚洲91在线| 人人摸人人干人人拍97| 日韩三级伊人| 欧洲综合色| 少妇熟女视频一二三区| av久日| 精品国产国产AV| 97硬碰| 18精品一区| 欧美成人9797| 综合五月天| 亚洲图片欧美在线视频| 黄色视频特级毛片| 777AV电影| 欧美1区二区三区公司| 亚洲av青草久久一区二区| 91精品导航| 天天综合网亚洲综合网| 青青草久久在线| 综合91网| 98精品国产乱码久久久久久| 欧美97在线观看| 亚州色图狠狠干| 日夜久久久九九九久| 欧美熟妇人体| 极品粉嫩一区二区| 天天影视激情欧美| 在线综合 亚洲 欧美中文字幕| 精品国产乱码久久久久久久久1| www.超碰| 人妻少妇一区二区| 91麻豆天美国产欧美日| 色性欧美| 亚洲一二三精品久久网| 欧美日韩理论一区| 影音综合网| 69视频福利导航| 欧美日韩国产电影| 国产精品久久久久久久久久久久久久久久| 熟女欧美日韩综合婷婷| 超碰天天操| 老女人91| 九九久精品| 欧美色性情| 家庭乱伦麻豆| 无码外流操逼视频| 国产91精品久久久久久久网曝门| 免费看黄视频亚洲网站| 免费伦费视频在线观看| 日本操BAV| 激情五月丁香五月| 亚州情色j区| 久久天天躁日日躁狠狠躁| 亚洲欧洲色情高清| 欧美精品,四区。五区| 亚洲一区二区中文字幕| 亚洲综合九九| 久久久久久国产成人| 国产精品无套内谢| 你懂得91| 亚洲情色电影网| 亚洲视频小说| 骚熟女AV网| 探花精品 一区二区| 国产女同视频在线播放| 精品伊人久久久大香线蕉小说| www.久久| 精爱久久| 亚洲图片欧美另类综合免费视频大大香| 97资源站国产精品| 在线国产一区二区av| 夜色五月天| 久久国产精品熟女人妻| 偷拍99| 久久久97| 精品无码不卡视频| 六月天婷婷| 久久亚洲熟妇在线视频| AV中文字幕三四五| 牛牛AV人人夜夜澡人人爽| 欧美成人AⅤ大片在线观看| www.婷婷六月天|