久久亚洲成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
返回資訊列表
国产精品电| 91观看 国产白丝| 亚洲无 码A片在线观看麻豆| 国内精品不卡无毒99999| 99在线免费公开视频| 嗯嗯啊啊视频在线看| 芊芊操逼视频无码| 爱做久久久久久| 秋霞Av理论一级在线| 日本人妻伦在线中文字幕| 色婷婷电影| 免费a v| 国产乱子伦一区二区三区免看| 亚洲天堂久久久久久粉红视频| 亚洲欧综合另类无码一区| 国产天美传媒精品| 十八禁视频网站| 久久一二三四五六七八九区区| 欧美 色 亚洲| 欧美色性爱| 后入日本1234| 亚洲91射| 天天综合网~91入口| 三男一女不戴套的A片| 青青草九九九九九| 色色色日本| 久久久九九网站| 欧美操逼录像国产黄色国产| 99欧美| 亚洲熟妇丝袜在线观看| 熟女人妻一区二区三区免费看| 欧美—性—交—色| 一区二区三区免费岛国片| 国产最火爆久久国产网站网站| 日韩在线视频1234| 伊人网青青| 插老姨肥穴| 操我无码| julia国产在线 | 性色一线| 亚洲精品尤物yw在线影院| 最新精品久久蜜桃 | 再深点灬舒服灬太大了添视频| 第四色色综合91| 免费黄色片。| 精品一区二区三区18| 97中文超碰| 国产午夜福利专区综合| www.av不卡中文字幕| 国产99 中文字幕日韩小视频| 亚欧美色| AV中文字幕剧情1区2区3| 亚洲熟女av日韩熟女| 中国熟妇| 97欧美久久久久久久| 婷婷伊人綜合中文字幕| 色色色日本| 91色s| 欧美综合站| 麻花豆传媒剧国产MV出差| 亚洲999综合| 中文字幕啊啊啊在线观看视频| 女性喷水高潮在线观看| 天天cao在线| 日本免费一区二| 国产精品久久久久久片| 校园春色综合网| 校园春色欧美| 97色视频在线| 97精品一二区| 91站街按摩店老熟女熟女| 国产精品久久久久久久无码AV| 黄久在线| 久久超碰、| 久/久精品99看9| 精品日韩人妻精品一二三区| a啊啊啊啊啊啊啊啊一区二区| av2014 日韩在线中文字幕| 97天天| 美女97超碰| 极品色社| 日本日皮视频逼| 亚洲国产奇米影视久久| 加勒比色99999| 日韩二级| 天天干天天做| 天天躁日日躁AAA片李宗瑞| 97香蕉网| 蜜臀99久久精品久久久久| 久久综合久色欧美综合狠狠| 亚洲中文字幕乱码无码一区二区| 丁香九月激情| 91oumei| 大地资源在线观看中文第二页| 这里只有精品视频在线| 高清肉丝中文无码| 夜夜狼人妻| 欧美熟女少妇| 国产11页| 黄色AV影视| 亚洲精品日日夜夜52| 亚洲国产ⅴ高清在线观看| 亚欧毛片基地国产毛片基地| 国产女同在线观看视频| 超碰无码加勒比| 国产suv精品一区二区四区999| 夜夜操夜夜爽夜夜高潮| 国产麻豆一级精品视频| 亚州色站 日韩电影| 五月天综合网| 97久久精品国产| 夜夜狼人妻| 97色色色综合网站| 欧洲一区二区三区免费| 天美欧美国产| 精品二999| 久色99999| 男生女生啊啊啊啊| 久操视频在线| 九九九精品成人免费视频小说| 嗯嗯嗯啊啊在线观看| 天堂av最新电影网| 99少妇| 伊人丁香五月婷婷| 日本1区2区不卡视频| 99亚洲国产精品色一区二区三区| 青草草免费网站av| 天堂8在线新版官网| 国产亚洲在线| 亚洲最大的黄色电影网站。| 免费网色网站| 精品熟妇视频一区二区| 免费国产视频| 国产福利小视频高清在线观看| 综合欧美日韩在线观看| 99综合自拍| 精品亚洲成人免费在线| 国产精品99久久久www| 日日日日日| 电影69乱码96| 欧洲精品欧洲精品| 玖玖爱影院| 日韩成人性日韩成人性爱视频在线免费观看 | 无码久久国产 | 欧美v日韩v亚洲v最新在线| 国产精品美女久久久久久网站| 亚州综合网| 日本操逼视频不卡直接放| 国产一级不卡在线观看| 97人人操人人干| 玖玖蜜臀资源网| 97视频新免费| 蜜乳成人AV| 亚洲精品a人片在线观看视| 久久人妻视频| 久久99精品九九久久久婷婷| 欧综合网| 欧美极度丰满熟妇hd| 麻豆国产尤物AV| 国产乱码精品久久久久久 | 亚洲欧美中日韩| 丝袜狠狠草尤物 91| 超碰久超碰久| 黄片www.| 亚洲欧美日韩电影网站一区| 国产女大学生AV| 日韩午夜精品一区二区三区电影| 吉川爱美98堂在线| 91精品丝袜久久久久久| 国产成人自拍视频在线| 一区二区不卡| 日韩强奸av| 欧美色色色| 欧美综合在线91| 夜夜爽夜夜操| 91麻豆va国产精品| 欧美亚洲今日在线| 五月综合视频| 我想要啊 啊 啊| 欧美精品成人一区二区在线观看 | 国产亚州精品美女久久久免费| 久久手机视直播| 这里都是精品| 色婷网| 蜜桃精品一区二区三区久在线| 日韩一级欧美一级国产一级台湾| 四虎永久在线精品免费网址| 天天做天天爱天天高潮| 亚洲综合图色在线| 国产熟女一区二区| 爱欲AV| 久久社区一区二区三区| 国产精选视频| 亚洲经典啪啪| 天天网综合| 九九在线视频| 天堂无码| 久久久久骚| 日本色日夜干| 麻豆天美电影一区二区| 99精品人妻| 狠狠色婷婷7777久| 亚洲精品国产拍免费91在线| 青青草操逼逼视频| 黄色大片视频在线免费看| 国产av尤物| 精品国产a∨一区天美传媒| www网站黄| 中文字幕一区二区三四五区日日骚| 青青免费在线视频一区| 久久鲁夜| 中日韩久久久| 玖玖资源视频一区二区三区| AV九九| 麻豆av一区二区| 伊人色综合网| 操操操五月天婷婷丁香影院| 麻豆 亚洲 97| 日韩av影片在线观看| 亚洲资源吧| 婷婷激情五月| 大香蕉伊人网| 麻豆精品天美| 影音先锋国产精品| 久久五月综合| 国产亚洲福利第一页丝袜| 中文字幕一区 二 区 三 四 五 区日 日 骚| 性色aV一区二区三区噜噜| 中文字幕在线24| 青青草五月份天| 女优视频第10页| 九九久久综合| 狠狠操,使劲操| 99黄页网站| 国产精品久久久久久久黄无码| 国产一区二区三区白丝| 加勒比伊人影院| 热热热热日日漂亮永久永久国产日| 日韩欧美aⅴ综合网站发布| 国产第11页| 久久精品三级影视| 午夜精品久久一区二区| 国产日韩中文字幕欧美| 91美女视屏| 一二三四视频中文字幕在线看| 亚洲色图欧美另类在线| 久操大香蕉手机视频在线看| 欧美日韩色综合网| 九九九久久久| 后入日本1234| 天美一二三在线观看Av| 九九黄色网| 成人AV超碰免费在线| 一区二区亚州激情久婷婷欧美| 五月丁香啪啪| 黄片视频,下载| 亚洲人妻精品一区二区| 亚洲骚男同com| 人妻天天爽夜夜爽爽| 午夜福利在线合集| 男人的天堂 在线一区| 国产熟女二区| 中文有码第五页| 国产精品亚洲一区二区三区四区| 欧美影院一区二区三区| 91欧美色| 色踪合AV| 九九九九九九九九九五码| 中文字幕一区av| 亚洲欧美日韩精品久| 欧美成年人性爱视频免费观看| av2014 日韩在线中文字幕| 农村妇女精品一区二区| 久久人爽| 午夜后入| 一区二区三区成人 | 九九热AV| 亚洲精品美女久久久久久久久| 91成人高清在线观看| 亚州一区二区| 屁股久久久久久| 上床啊啊啊| 综合网亚洲1| 香蕉免费一区二区三区不读| 啊啊啊不要啊啊受不了了视频在线 | 囯戸精品高潮呻吟旡码| 亚洲春色一区二区三区| 激情小说在线视频| 伦激情人妻另类人妻| 麻豆久久精品亚洲精品88| 久久女人| 日本一区二区中文字幕久久| 亚州欧美色图| 婷婷超| 大香蕉欧美| 色臀av| 日韩91网站| 欧美78P| 日本加勒比无码专区| 黑丝制服中文字幕| 屁股久久久久久久| 婷婷丁香九月| 日本岛国黄色网址| 天天爱天天韩国日本牛牛牛牛| 亚洲精品视频在线| 久久久久久久 九九九九九九九| 男人的天堂亚洲| 天天日日舔舔| 97天天操天天干| 欧美韩国你懂得在线 | 在线观看一卡二卡| 五月婷婷色| 久久久一级| 久九九九九九九热| 色好看av| 伊人久久大香线综合无码| 久久精品亚洲东京热色播| 久久精品—区二区三区内射| 精品久久久久久无码| 久久精品日韩专区免费观看| 蜜臀久久99精品久久久久电影| 精品综合久久久久久97| 欧美三级偷拍| 国产精品操| 无码直播久久久| av天堂精品久久| 久久久国产亚洲精品系列| 免费观看国产小粉嫩喷水精品午| 78久久久| 91青青在线视频| 92大香蕉| 日韩兔费看黄片| 国产福利视频精品视频| 婷婷丁香五月综合| 欧美综合色站| 亚洲做性| 日韩有码 一区二区三区| 久久久久亚洲三级电影| 日韩不卡av一二三| 色爽爽文学| 久久夜夜夜夜| www久久精品| 另类图片综合| 亚洲AV噜噜狠狠网址蜜桃动漫| 久精品无码av一区二免费国产在线观看 | 欧美少妇大量自拍视频在线观看| 日韩操呦呦影院在线观看| 另类老少妇| 久久久久白虎| 欧美日韩色综合网| 五月婷婷大香蕉| 99热导航| 大香蕉狠狠爱| 69精品久久久久中文字幕| 日本三级韩国三级99| 九九九九免费高| 欧美美女视频| 欧美日韩精品一区二区三区高清| 日韩成人色图| 十八禁电影伊人网| 久久粉色| 无码乱人伦中文视频| 熟妇在线视频一区二区| 操91| 亚洲无码com| 亚洲激情四射| 国桃视频产巨乳精品一区二区在线| 欧美色偷偷| 福利视频一区二区微拍| 色五月天AV| 国产精品午夜精品| 9久久久久| 国产成人主播| 高潮毛片无遮挡高清免费| 蜜桃臀 后入 一区 二区 三区 在线| 精品午夜福利| 综合亚洲欧美| 亚洲色 国产 欧美 日韩| 成人熟女视频一区二区三区| 久区视频| 午夜丁香| 久久精品毛片免费不卡| 九九九午夜| 精品无码少妇| 强奸乱伦AV网站| 色婷婷丁香五月| 天堂无码| 国产农村妇女精品一二区| 国内毛片无码一级毛片| 999精品久久久久久久| 久久亚州精品成人Av无| 殴美牲| 美国三级日本三级久久99| 久久亚洲欧美中文字幕国语| 美女露胸露屁股| 欧美 亚洲精品首页| 中文字幕一区电影在线观看| 黄色十八禁| 性爱网站一区二区| 人妻在线臀日韩| 大香蕉视频啪啪啪啪| 夜夜草我| 亚洲色图a| 亚洲色婷婷久久91| 色九月综合| 先锋影音av先锋一区| 久久久不能久久久久| 97超碰超碰| 日韩精品 资源| 校园春色 欧美| 久久黄黄| 26UUU欧美日本| 欧美中文字幕男人天堂久久精品| 大JI巴好深好爽又大又粗视频| 狠狠干狠狠干| 熟妇乱伦一区二区| 精产国品一区二三产品| 国产在线激情视频| 4虎在线视频| 精品v日韩欧美国产| 97亚洲国产| 99久久综合网| 国产97在线视频| 久久久一热在线播放| 白嫩少妇| 久久99草| 开心五月激情网| 97免费在线观看| 宅男午夜在线视频| 黄色高清无码无码破解免费暗网| 91情色在线| 精品91摸| 国产无马视频| se..亚洲欧美| 夜夜爽爽夜夜精品视频| 无码抄逼网| 国语少妇精| 日影院久久婷婷夜夜网| 色爱综合网| 少妇久久久久久| 九九热视频这里只有精品| 人妻中文字幕日韩电影| 97在线免费看视频| 老熟妇一区二区三区啪啪| 欧美亚洲第1页| 日本淫乱女一区二区三区视频| 中文久久一区| 五月丁香激情综合网| 国产 日韩,欧美 自拍| 亚洲精品蜜桃久久久久久久| 亚洲五月天激情| 91成人高清在线观看| 综合97久久| 男人天堂2012| 爱媛媛久久国产福利| 激情小说亚洲色图| 亚洲天堂少妇| 欧美亚洲厕所精品偷拍91| 欧美色婷婷| 影视综合无码少妇| 亚洲成人ab| 亚洲怡春院| 天天综合日韩网| 久久久久久精品免费看A级| 97精品视频| 久久久精品,3| 国产情色第一第二页在线观看| 25国产精品免费观看| 操逼啊啊啊91| 亚洲人妻在线一区| 青娱乐国产剧情av一区| 欧美色91| 啊啊啊不要嗯嗯在线观看| 亚洲色图久久成人| 亚洲另类电影| 亚欧视频在线| 狠狠中文字幕| 天天看精品动漫视频一区| 欧美 亚洲| 伊人久久亚洲色欲综合网站| 亚洲青色欧美| 欧美大香蕉97| 欧美日韩人人精品| 亚洲精品美女久久久久久久久| 密乳无码| 岛国毛片在线观看免费| 国模私拍一区二区三区神乳| 欧美日韩啪啪电影| 国产精品99精品视频网站| 亚洲国产成人综合碰碰三级经典| 亚洲干B| 天堂av最新电影网| 色香综合天天影视综合 | 老熟乱一区二区三区四区| 欧美大色交| 神马久久久久久久久久| 天天做天天爱天天爽AV| yazhououmeizongya| 天天爽爽爽爽| 日韩久久三区| 欧美天天拍| 欧美日韩高潮喷水91| 精品四五区| 奸色色 男人天堂 天天射| 大香樵伊人网| 伊人影院中文字幕| 久草色悠悠在线视频| 蜜臀人妻少妇久久在线观看| 久久视网78| 欧美性天天影视| 欧美日本久久精品一区 | 久久香蕉综合一本到3atv| 久久一级无码精品毛片6| 性开放中文AV高清无码免费看| 国产高清26uuu| 国产AV久久久蜜爱影集| 久久婷婷五月天| 美中韩AV综合网| 欧美日日网| 伊人一区二区三区| 福利五区| 精品九九九九九九| 日韩人妻播放| 秋霞视频一区二区| 蜜桃色色网站视频三区| 超碰 另类 欧美| 激情四射五月天| 久久熟女嫩草成人片免费| 新91视频.cmp| 亚洲精品蜜桃久久久| 射久久| 亚洲国产91精品一区二区久久| 在线A日本| 激情99| 蜜桃臀 后入 一区 二区 三区 在线| 少妇69中文| 亚洲涩图欧美| 国产丝袜欧美在线视频| 免费久久精品麻豆一区二区av| 丁香五月大香蕉| 久久久久亚洲一区女同性恋中文字幕| 91九色丰满高潮| 97综合在线| 无码国产Av| 综合久草| 久热网| 欧亚无码视频| 久久男人的天堂国产| 九九毛片这里只有精品| 99在线视频播放| 日韩本不卡视频在线观看| 100啪啪视频大全| 亚洲av强奸乱伦| 96AV久久久| 亚洲天堂情色| 成人免费性爱视视| 激情小说五月天| 亚洲视频一二区| 久久啊啊| 国产成人久久久精品免费AV| 97内射偷拍| 综合97| 亚洲偷拍自拍在线视频| 天堂麻豆天美| 青娱乐91| 国产精品色色| 丝袜天堂网| 日韩一区二区精彩视频| 亚洲一二三精品久久网| 久久精品国产亚洲av水密被窝| 成年人三级黄色片视频| 亚洲最大的黄色电影网站。| 偷拍视频青青草在线视频| 国产美女mm131爽爽爽爽| 伊色综合天堂色97| 亚洲精品熟妇1区2区3区。| 男女性感激情网站| 好看的91视频| 十八禁视频一区二区| 6080yy午夜理论三级一区二区三区无码| 一区二区三区成人| 国产精品网站www| 好爽视频在线观看视频| 香蕉婷婷| 超碰午夜| 亚洲最大无码中文字幕网站| 国产AV人人夜夜澡人人爽麻豆| 一本色道久久天天射天天干| SS久久| 无码直播久久久| 黑丝91视频| 日本伦乱九九九综合| 丰满翘臀美女影院视频| 密乳视频在线| 久久久久久久久久久999| 五月天婷婷在线看 | 成全在线观看免费观看| 日韩99神马视频片| 国产亚洲精品无码三区| 国产青青美女玩逼视频| 国产成人手机视频激情| a人片中文字幕一区二区| 黄片aaaaa一区| 色偷偷男人的天堂麻豆| 无码乱人伦中文视频| 久草成人影片| 亚洲图片欧美91N| 久久六六| 亚洲成人精品久久久| 国产高清MV操逼视频| 日韩精品国模| 91久久久久久| 超碰成人人人爽人人爽| 激情五月天网站| 日韩一二三区| 97人亚洲综合字幕| 一本一道vs波多野结衣| 免费在线视频97| 鲁鲁色综合网| 亚洲熟女乱色一区二区三区 | 天天综合,91综合永久| 色妺妺AⅤ| 狠狠躁AV| 男人的天堂网页| 欧美天堂亚洲电影院一区在线播放| 亚洲成人无码影院| 亚洲a色| 人妻熟女一区二区三区在线| 操我无码| 欧美日韩中文视频播放| 夜色97| 精品区9| 午夜.DJ高清在线观看免费7| 99999亚洲另类| 91精品电影18| 青草青草久热| 92性色国产午夜福利在线661| 日韩精品国模| 天美AV片| 色99视频| 国产对白刺激视频| 国产精品久久久久久久久久久久久久| 日韩精品9999| 天天干,天天日| 国产无码精品高清| 高清无码人妻久久久一区二区三区aⅴ| 亚洲欧洲精品成人| 99久久99九九99九九九| 国产传媒操逼视频| 亚洲91网| 国产精品白丝AV| 蘋果手機免費看成人Av| 电影69乱码96| 国产精品无码久久久久2025| 超碰97人妻在线| 在线观看无码三级少妇| 中文字幕十五区| 后X久久| 国产女人成人精品视频| 亚洲开心网| 欧美激情在线观看视频| 日本中文字幕一区| 天天综合色电影| 狠狠色丁香| 亚洲国产麻豆一区二区三区 | 超碰久久综合| 精品久久久九九九孕妇| 99操逼| 91三级理论片播放器| 国语精品av| 高潮9999外国| 黄色av播放免不| 色鬼在线综合| 人妻插插人妻人| 碰碰在线视频| 一品道视频一区二区三区| 欧美性爱视频免费一区一A| 人人操人人插 - 百度 - 百度| 色妺妺AⅤ| 美女十八禁| 欧美黑人168页欧美黑人167| 中国黄色特级精品一区二区三区片| 亚州色站 日韩电影| 色av中文字| 一本一道人妻久久一区二区三区 | 岛国激情视频软件| 无码不卡八戒| 伦激情人妻另类人妻| 人妻天天爽天天爽三区| 丰满人妻-区二区三区| 久久在肏| 亚州性9| 最新制服中文第一页| 99re欧美| 操东北女人| 2019天天干| 永久免费av无码网站国产app| 一区在线精品中文字幕| 色妇综合网| 久久久久久久9| 夜夜爽夜夜| 国产AAAAAABBBBB| 日韩操p| 中文字幕久热视频在线| 影音先锋中文字幕日本好一区二区| 综合操逼| 国产精品久久久久久片| 欧美激情五月天| 欧美色偷拍 | 欧美一级色| 激情综合五月天| 久久久av爱| 亚洲激情色片| 综合熟妇一区二区三区| 天天综合网在线91| 草草电影院| 欧美强奸乱| 婷婷午夜| 一牛影视久久久一区二区三区| 99久久久久| 少妇99| 国产成人五月天丁香花| 91综合在线| 最新av中文字幕高清| 操逼视频亚洲| 中文字幕成人| 日韩无码嘿咻黑热久| 日本999精品| 欧美肥臀在线| 97在线观看| 日本色色色色色视频| 亚洲精品视频在线| 91处女视频在线观看| 亚洲国产av中文字幕久久| 亚洲AV性爱电影| 久久久精品国产亚洲伊人| 91美女视频在线| 亚洲玖玖爱| 51久久夜色精品国产麻豆| 亚洲古典另类欧美在线| 9999伦理视频| 一本色道久久综合狠狠操| 99无码狠狠久久| 久久东京国产精品视频| 一区二区 日韩 欧美 国产 传媒| 欧美综合传媒| 伦激情人妻另类人妻| 激情小说五月天| 亚洲日韩XXX| 亚洲麻豆av一区二区| 92午夜免费福利视频| 操学生天天| 女优大全 - 91n| 97精品一区二区视频| 丁香婷婷大香蕉| 无码男人天堂| 十八禁视频一区二区| 色拍偷亚洲| 超碰98综合网| 91日韩国产欧美亚洲另类精盘州至城都| 亚洲精品一二牛牛| 激情五月天视频| 91丝袜美腿片| 欧美一区二区日韩三区| 大奶啊啊好爽| 啊啊啊久久| 户外裸露刺激视频第一区| 四虎影视在线| 密乳视频在线| 五月天偷拍| 亚洲的天堂网| 超碰在线人妻中文字幕| 99热官网| 亚洲熟妇A V黑人| 日本精品不卡一二三区| 色综合五月天| 玖玖久久久| 精品国产肉丝袜在线拍国语| 色97综合中文字幕| 搡老女人老妇女AAA一VU麻豆| 99少妇精品视频| 综合久久97| 这里只有精品久久| 国产97免费视频| 五月丁香影视| 97K超碰在线| 男人的天堂2019AV| 中文字幕成人乱码熟女精品国50| 色婷视频| 国产97视频| 大香蕉九九| 色噜噜国产精品视频一区二区| 婷婷色播婷婷| 亚洲乱妇p22| 日本色婷婷| 欧成人精品H无码| 91大神电影天堂| 性色AV蜜色av色欲av| 欧美色66| 免费一级特黄特色大片在线观看看| 欧美九九爱| 日欧操屄| 高潮综合网| 日韩欧美俄罗斯A片| 色臀aV| 天天躁日日躁成人字幕aⅴ| 人人噜夜夜操| 国产中文字幕曰本毛片| 78操B| 校园春色之综合网| 13小男生GAY自慰脱裤子| 日韩国产十八禁| 95自拍视频在线观看| 九九九九一区| 综合网欧美在线| 大香蕉乱级| 天堂综合| 五月天社区| 欧美综合综合| 欧美老妇综合网| 人人贴人人摸| 干干干天天| 伊人少妇久久久| 日韩三四五区| 性爱视频啪啪啪啪| 精品制服美女中文一区二区三区| 激情综合久久| 91人妻人人澡人人爽人人精品| 日本免费不卡二区| 99在线免费公开视频| 99re6在线视频精品免费完整版安卓版| 日韩欧美经典在线观看| 久久中文字幕人妻熟av女蜜柚| 亚洲精品99| 亚洲欧美清纯| 粉嫩AV一区夜夜嗨| 色999五月色| 国产辣妈在线视频福利| 情色大香蕉| 蜜臀人妻少妇久久在线观看| 91操人视频| 亚洲av无码国产精品字幕| 久久大香蕉97| 色婷婷综合久久中文字幕雪峰| 不卡一区二区日本视频| 亚洲AV无码乱码| 91精品又粗又猛又爽| 在线观看十八禁| 男人的天堂一区三区| 国内精品a| 夫妻日逼| 东北女人被操| 九九久久一区二区三区| 午夜寂寞欧美| 亚洲国产尤物yw在线观看| 超碰99re| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 人妻久久久| 性在久久久久久| 亚洲欧洲中文日韩女优乱码| 蜜臀久久99精品久久久久电影| 美女的肌被草喷水视频| 超碰亚洲欧美日韩无| 国产一区二区在线电影| 人人操人人插人人摸人人干| 91视频在线观看18| 91老司机视频| 日韩电影免费网站麻豆视频| 人妻人妻天天碰| 国产日韩精品一区二区三区| 色丁香五月婷婷| 国产女性无套 免费观看| 久久免费99精品久久久久久| 人人么人人操| 国产精品一区二区三区免费视频| 一本色道久久综合亚洲二区三区| 夜草欧美| 久久久久久久一级黄色打同平台| 丁香五月婷婷色| 国产 丝袜 欧美中文 另类| 久久精品国产亚洲AV片多多 | 欧美日韩人妻少妇 一区二区三区| 午夜精品99久久久久传媒| 亚洲丝袜色| 婷色五月| 深夜啪啪啪视频免费| 四季AV一区二区凹凸精品小说| 淫荡少妇免费| 一级性爱视频免费观看 | 免费观看啪视频| 色婷婷五月天| 中精品一区二区三区| 夜夜综合| 99热aaa| 天天插夜夜爽| 日韩中文字幕av在线播放| 美女91在线观看| 欧美午夜色妇色鬼| 天天综合网入口~91| 1区2区3区中文字幕日韩| 性色av一区二区| 丰满精品人妻少妇久久字幕| 人妻久久久| 最新AVzaixian| 玖玖视频在线资源一区二区三区| 亚州情色j区| 99re9在线| 国产精品久久久蜜臀| 在线 亚洲 网爆 自拍| 妇女视频网站| 欧美成人色| 国产乱不卡| 国产一二三福利视频网| 好爽视频在线观看视频| 青娱乐淫乱1314| 日韩熟女三十乱伦| 综合久久久久久久综合网| 强奸国产精品视频| 国产超碰人人操| 欧美色五月| yazhousetuoumei| 最新精品久久蜜桃 | AVE乱伦| 可以在线观看的黄色网址| 成人a大片在线观看| 极品极品色影院| 艹我哪美一区无码| 试看福利| 91天天爽| 精品无码一区二区三区| 园内精品自拍视频在线播放| 久艾草在线精品视频在线观看| 国产精品久久久久久久毛片1| 久久露脸国产老熟女| 青娱乐av在线| 欧美91丝袜| 麻豆成人影音在线| 秋霞成人一级在线观看| 日韩无码专区| 国产SV一线| 91丝袜人妻| 日韩av性爱在线播放| 一区二区三区视频在线观看免费| 日本熟妇一区二区三区| 国产精品久久久久久久免牛肉蒲团 | 26uuu偷拍亚洲欧洲综合| 亚洲综合中文字幕有码| 亚洲有码 欧美精品| 1.igao73.com 加入收藏 免费专区 国产精品 中文字幕 日韩精品 欧美精品 精彩 | 亚洲欧美不卡线| www.yeyecao| 久久久久久国产精品| 久久伊人青青草| 91精品老女人| 欧美不卡二区| 口爆欧美91| 亚洲中文丝袜美腿诱惑字幕| 一类av片在线看| 亚洲少妇喷视频看| 青青草国产一区二区三区| 亚洲无992tv| 99碰碰| 久久精品人体AV| 蜜奶av| 久久粉色| 成人免费福利在线观看| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 日韩亚洲97| 欧美日韩黄片精品在线| 一区二区三区激情在线观看| 久久久专区| 色色色日本| J?P?NESEHD熟女熟妇伦| 亚州高清色综合| 日本精品国产视频| 成人av免费观看| 91久久18禁| 久操凹凸视频| 综合久久少妇中文字幕| 免费在线观看国内色片网站网址| 25国产精品免费观看| 亚洲 图片 欧美 色图| 久久国产精品视频| 99在线无码精品秘 入口黑人| 2017天天插| 神马久久久久久伦理片| 久久色激情一区二区三区| 精品久久久一本一道| 欧美亚洲| 亚洲夜夜欢无码一区二区| 91麻豆va国产精品| 久久亚州大香蕉| 波多野结衣之双飞调教在线播放| 丁香五月大香蕉| 玖玖资源视频一区二区三区| 顶级丝袜熟女一区二区三区| 97色论| 日本一区二区不卡| 婷婷色综合| 亚洲日韩精品一区二区| 婷婷中文网| 超碰97.com| 天天做日日爱夜夜爽| 久久9免费视频| 欧美丝袜制服久久| 蜜臀一二三区| 综合久久久久久久久91| 青青草视频久久久久| 日韩欧美女求操每天更新| 国内精品伊人久久久久影院会| 欧美激情久久久久| 被体育老师抱着c到高潮| 亚洲精品欧洲精品| 青青伊人这里只有精品| 久久熟妇五十路一区| 亚洲 无码 偷拍| 青青草国产盗摄一二三区| 国产精品一区av在线| 少妇丝袜在线观看AV| 性在久久久久久| 蜜汁欧美| 日韩人妻精品久久久久| 欧美性爱精品七区| 青青草大香蕉在线视频| 欧美人妻久久精品二区三区| 国产AV人人夜夜澡人人爽麻豆| 中文字幕一区日韩精| 青青草大香蕉视频| 99久久无色码| 国产一级高跟丝袜| KK色在线影院| 激情视频网址| 操国产逼| 青青草在线视频人人想人人上| 中国农村熟妇毛片视频| 97超视频在线观看| 国产美女裸体秘 永久无遮挡| 九九热在线精品视频| 黄色免费网页无码| 精品国产乱码久久久久久蜜臀| 操逼操操操91| 国产精品不卡高清在线观看| 天操老女人| 91天堂色男人的天堂| 超清中文乱码字幕| 大香蕉99热| 色色色色电影网| 最近二区三区视频大全| 330dv亚洲成年视频网| 999国产精品999| 日本成人免费一区二区三区| 啊啊啊啊啊,啊啊啊啊好舒服,操我舒服啊啊啊 | 亚洲熟女一区| 啪啪91| 亚洲性爱成人| 久久午夜神马| 久插综合| 人妻激情偷乱视频一区二区三区| 搡老熟女免费视频| 青青草原伊人网| 亚州色图欧美| AAA久久| 思思热在线cao| 伊人超碰97| 啊啊啊啊好疼视频| 欧美制服另类丝袜| 国产伦精品一区二区三区在线观 | 免费9 1久久| 亚洲二区精品在线观看| 国产主播福利| 97在线播放| 东京热熟女亚洲视频网站| 丁香激情网| 超碰人人超在线观看| 久久性爱视频免费看| 夜夜欧美| 国产乱婷婷精品二区三区| 人妻AV在线| 福利在线黄片| 91久久免费视频互動交流| 男同专区一区二区三区在线| www.AV有限公司一区| 大香蕉伊人一区在线观看| 亚洲超碰AV| 国产精品亚洲天堂网址| 超碰97导航| 男人的天堂日本东京热| 婷婷五月天久久精品视频一区二区三区 | 久久精9| 人妻在线臀日韩| 碰碰在线视频| 人人透人人操| 思思性爱| 中文字幕日韩精品久久| av三级电影在线播放| 夜夜久久久| 青青草影视蜜久久| 91老熟女91老女人| 91性高| 男人 天堂 日 亚洲| 麻豆天美国美国产| 96精品在线| 99色在线视频| 激情丁香五月婷婷| 夜夜操狠狠操| 欧美在线播放aaaa| 婷婷久久大香蕉| 国产小u女在线观看| 美国一区二区免费视频| 黄色视频特级毛片| 国产亚洲精品农村妇女 | 亚洲污污网站| 91综合国产精品| 青青草白白色| 一区二区三区成人| 欧美日韩亚洲电影| 日本欧美m v精品网站加| 啊啊啊啊啊啊啊啊要喷了| 狠狠夜色午夜久久综合在线| 九九九九九九九九九五码| 91欧美丨精品丨入口| 人妻人妻天天碰| 欧美影音在线| AV在线播放网址| 久久久久久十| 蜜臀99久久精品久久久懂爱| 免费网站观看www在线观| 黄片免费日韩| 国产精品99精品视频网站| 精品一区二区三区国产 | 亚洲国内精品成人不卡| 欧美熟女丝袜| 久偷拍| 91激情网| 国产自偷| 91高清欧美| 国产成人在线观看网址| 激情 欧美 亚洲 小说| 欧美性爱无码一区二区三区| 一级做a爰片久久毛片图片| 男人的天堂 在线一区| 亚洲日韩av专区无码| 久久av一级av少妇av高潮| 3P乱轮视频| 俺去也婷婷| 97干色天堂| 青青欧洲黑| 操一对老熟妇爽上天视频| 天天影视亚洲| 吖在线不卡一区二区国产剧情 | 美女诱惑一区| 国产9 9在线 | 亚洲| 琪琪精品免费一区二区三区 | 秋霞无码av鲁丝片一区| 亚洲情色中文字幕一区| 岛国艾薇凹凸视频天堂| 狠狠操夜夜操蜜桃视频三区| 熟女丰满人妻一区| 亚洲精品国产AV天美传媒| 亚洲精品97久久中文字幕|