色五月色开心色婷婷色丁香,五月婷婷丁香花综合网,婷婷丁香五月激情综合在线,五月婷婷六月丁香动漫,婷婷丁香五月激情综合在线,丁香花中文字幕在线观看,播五月色五月开心五月网,开心激情综合网,狠狠色丁香婷婷综合最新地址,丁香视频在线观看,狠狠做六月爱婷婷综合av,久久激情五月丁香伊人

ARTICLE DETAIL

資訊詳情

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

前端Canvas截取視頻首幀封面:跨域、黑屏與移動端兼容實戰(zhàn)

前端Canvas截取視頻首幀封面:跨域、黑屏與移動端兼容實戰(zhàn) 1. 視頻封面首幀截取的整體設(shè)計思路視頻列表里那一排灰撲撲的默認(rèn)播放器圖標(biāo)大概是每個做過內(nèi)容平臺的人都繞不過去的坎。用戶上傳完視頻后臺轉(zhuǎn)碼還沒跑完前端總得先給個像樣的封面占位不然整個列表看起來就像半成品。用 canvas 截取視頻首幀作為封面就是解決這個問題的經(jīng)典方案——不需要后端參與不需要額外上傳圖片瀏覽器里幾行代碼就能把視頻第一幀畫面摳出來變成一張圖。這個方案的核心邏輯其實很樸素視頻文件在瀏覽器里加載后通過 video 元素解碼出畫面再把當(dāng)前幀繪制到 canvas 上最后用 toDataURL 或 toBlob 導(dǎo)出成圖片。聽起來簡單但真正落地時會遇到一堆細(xì)節(jié)問題——跨域、黑幀、異步時序、移動端兼容性每一個都能讓你多調(diào)半天。先說清楚這個方案適合誰。如果你是前端開發(fā)正在做視頻上傳、內(nèi)容管理、短視頻列表這類功能需要在前端快速生成封面預(yù)覽那這套方案直接能用。如果你是完全沒接觸過 canvas 的新手也不用慌核心代碼不超過三十行我會把每一步為什么這么寫都講透。如果你已經(jīng)在用類似方案但總遇到黑屏或者跨域報錯那正好后面排查部分就是給你準(zhǔn)備的。為什么選 canvas 而不是其他方案有人可能會想能不能用 CSS 直接把 video 元素當(dāng)封面顯示可以但 video 元素始終是視頻它會加載、會緩沖、會占內(nèi)存一個列表里放幾十個 video 元素頁面性能直接崩掉。而 canvas 截出來的是一張靜態(tài)圖片體積小、渲染快、可以緩存、可以上傳到 CDN這才是封面該有的樣子。另一個思路是后端用 ffmpeg 截幀這當(dāng)然更穩(wěn)定但需要服務(wù)端資源而且用戶上傳后要等后端處理完才能看到封面體驗上有延遲。前端 canvas 方案的優(yōu)勢就是即時性——視頻選完封面立刻出來用戶馬上能看到效果。還有一個容易被忽略的點首幀截取和任意幀截取是兩回事。首幀截取的目標(biāo)是視頻的第一幀畫面但瀏覽器的 video 元素在 loadedmetadata 階段其實還沒有真正解碼出畫面你必須等到 loadeddata 或者 seek 到某個時間點之后才能拿到有效幀。很多人第一次寫的時候在 loadedmetadata 里就去 drawImage結(jié)果截出來一片黑就是因為這個時序問題。理解這一點后面很多坑就都能預(yù)判了。2. 核心細(xì)節(jié)解析與實操要點2.1 video 元素的關(guān)鍵屬性與事件時序要讓 canvas 截取到正確的首幀你得先搞清楚 video 元素從加載到可繪制經(jīng)歷了哪些階段。這個過程不是一步到位的而是分了好幾個事件節(jié)點每個節(jié)點能做的事情不一樣。當(dāng)你給 video 元素的 src 賦值后瀏覽器開始加載視頻文件。首先觸發(fā)的是 loadedmetadata這時候瀏覽器已經(jīng)解析了視頻的元信息——時長、寬高、編碼格式都知道但畫面數(shù)據(jù)還沒解碼出來。如果你在這個階段調(diào)用 drawImagecanvas 上畫出來的就是空白或者黑色。接下來是 loadeddata這時候當(dāng)前幀的數(shù)據(jù)已經(jīng)可用了理論上可以繪制。但實際測試下來loadeddata 觸發(fā)時當(dāng)前幀往往是第一幀但有些瀏覽器或者某些編碼格式下這個時機仍然可能拿到黑幀。更穩(wěn)妥的做法是監(jiān)聽 seeked 事件。具體操作是在 loadedmetadata 之后把 video.currentTime 設(shè)置為一個極小值比如 0.001 秒然后等 seeked 事件觸發(fā)這時候畫面一定已經(jīng)解碼完成drawImage 就能拿到有效畫面。為什么是 0.001 而不是 0因為某些瀏覽器在 currentTime 為 0 時不會觸發(fā) seek 操作設(shè)一個極小值可以強制觸發(fā) seeked 事件確保畫面已經(jīng)渲染。還有一個關(guān)鍵屬性是 crossOrigin。如果你的視頻文件和頁面不同源比如視頻存在 CDN 上那必須給 video 元素設(shè)置 crossOriginanonymous否則 canvas 會被標(biāo)記為 tainted后續(xù)調(diào)用 toDataURL 或 toBlob 會直接拋安全錯誤。這個屬性必須在設(shè)置 src 之前就設(shè)好順序反了不生效。另外 preload 屬性建議設(shè)為 auto確保瀏覽器主動加載視頻數(shù)據(jù)。如果設(shè)成 none瀏覽器可能不會主動加載事件也不會觸發(fā)。muted 屬性也建議加上雖然截幀不需要播放但某些瀏覽器對未靜音的視頻有自動播放限制加上 muted 可以避免一些意外情況。2.2 canvas 尺寸計算與繪制參數(shù)選擇canvas 的尺寸設(shè)置看起來簡單但直接決定截出來的封面質(zhì)量。最直覺的做法是把 canvas 的 width 和 height 設(shè)成 video 的 videoWidth 和 videoHeight這樣截出來就是原始分辨率。但實際業(yè)務(wù)中往往不需要那么大的圖一個列表封面 400px 寬就夠了截個 1920px 的圖既浪費帶寬又浪費內(nèi)存。我的做法是設(shè)一個目標(biāo)寬度比如 480px然后按視頻的寬高比算出高度。具體計算是先拿到 video.videoWidth 和 video.videoHeight算出寬高比 ratio videoHeight / videoWidth然后 canvas.width 480canvas.height Math.round(480 * ratio)。這樣截出來的圖寬度固定高度按比例自適應(yīng)不會變形。繪制的時候用 ctx.drawImage(video, 0, 0, canvas.width, canvas.height)。這里第四個和第五個參數(shù)是目標(biāo)繪制尺寸不是源尺寸。drawImage 會自動把視頻畫面縮放到你指定的尺寸。注意不要寫成 drawImage(video, 0, 0, video.videoWidth, video.videoHeight)那樣畫出來的圖尺寸是原始分辨率和你設(shè)的 canvas 尺寸不匹配會被裁剪。導(dǎo)出格式方面toDataURL(image/jpeg, 0.8) 是最常用的組合。JPEG 格式體積小0.8 的質(zhì)量系數(shù)在肉眼觀感和文件大小之間平衡得比較好。如果封面需要透明背景那就用 PNG但體積會大很多。toBlob 比 toDataURL 更適合后續(xù)上傳因為它直接給你一個 Blob 對象不用再做 base64 轉(zhuǎn)二進(jìn)制。不過 toBlob 是異步回調(diào)寫法上要注意。提示canvas 的 width 和 height 屬性是繪圖緩沖區(qū)尺寸CSS 的 width 和 height 是顯示尺寸兩者不要混淆。截幀時只需要設(shè)屬性尺寸不需要設(shè) CSS 尺寸。2.3 跨域問題的根源與解決路徑跨域是 canvas 截視頻幀最容易翻車的地方。根本原因在于瀏覽器的同源策略當(dāng) video 元素的源和頁面不同源時視頻數(shù)據(jù)被視為跨域資源繪制到 canvas 后canvas 會被標(biāo)記為 tainted被污染此時任何試圖讀取 canvas 像素數(shù)據(jù)的操作——包括 toDataURL、toBlob、getImageData——都會拋出 SecurityError。解決路徑有兩條。第一條是讓視頻源支持 CORS。具體來說視頻服務(wù)器需要在響應(yīng)頭里加上 Access-Control-Allow-Origin同時前端給 video 元素設(shè)置 crossOriginanonymous。這兩者缺一不可。如果服務(wù)器沒配 CORS 頭前端設(shè)了 crossOrigin 反而會導(dǎo)致視頻加載失敗。所以這條路徑需要后端配合不是前端單方面能搞定的。第二條路徑是走同源代理。如果視頻源不受你控制沒法加 CORS 頭那可以在自己的服務(wù)器上做一個代理接口把視頻流轉(zhuǎn)發(fā)一遍讓前端從同源地址加載視頻。這樣就不存在跨域問題canvas 也不會被污染。代價是服務(wù)器要承擔(dān)流量適合視頻量不大的場景。實際項目中我一般優(yōu)先走第一條路徑因為現(xiàn)在主流對象存儲和 CDN 都支持配置 CORS 規(guī)則加一個響應(yīng)頭的事。如果實在搞不定再考慮代理方案。需要注意的是crossOrigin 屬性必須在設(shè)置 src 之前賦值順序反了瀏覽器不會重新發(fā)起帶 CORS 的請求。3. 完整實操流程與核心代碼實現(xiàn)3.1 從零搭建截幀工具函數(shù)下面這套代碼是我在實際項目中反復(fù)打磨過的版本處理了時序、跨域、尺寸、異常等各個細(xì)節(jié)。你可以直接復(fù)制到項目里用也可以按自己的需求調(diào)整參數(shù)。function captureVideoFirstFrame(videoUrl, options {}) { const { targetWidth 480, quality 0.8, format image/jpeg, timeout 10000 } options; return new Promise((resolve, reject) { const video document.createElement(video); video.crossOrigin anonymous; video.preload auto; video.muted true; video.playsInline true; let settled false; const timer setTimeout(() { if (!settled) { settled true; cleanup(); reject(new Error(截幀超時)); } }, timeout); function cleanup() { clearTimeout(timer); video.removeAttribute(src); video.load(); } video.addEventListener(loadedmetadata, () { // 強制 seek 到極小時間點確保畫面解碼完成 video.currentTime 0.001; }); video.addEventListener(seeked, () { if (settled) return; try { const ratio video.videoHeight / video.videoWidth; const canvas document.createElement(canvas); canvas.width targetWidth; canvas.height Math.round(targetWidth * ratio); const ctx canvas.getContext(2d); ctx.drawImage(video, 0, 0, canvas.width, canvas.height); canvas.toBlob( (blob) { if (settled) return; settled true; cleanup(); if (blob) { resolve({ blob, dataUrl: canvas.toDataURL(format, quality), width: canvas.width, height: canvas.height }); } else { reject(new Error(封面生成失敗)); } }, format, quality ); } catch (err) { settled true; cleanup(); reject(err); } }); video.addEventListener(error, () { if (settled) return; settled true; cleanup(); reject(new Error(視頻加載失敗)); }); video.src videoUrl; }); }這段代碼有幾個設(shè)計決策值得展開說。第一用 Promise 封裝是因為整個流程是異步的而且有多個可能的失敗點Promise 的 reject 能統(tǒng)一處理錯誤。第二加了超時機制因為網(wǎng)絡(luò)異常時 video 的 error 事件不一定觸發(fā)沒有超時的話 Promise 可能永遠(yuǎn) pending。第三cleanup 函數(shù)里把 video 的 src 移除并調(diào)用 load()這是為了釋放視頻資源避免內(nèi)存泄漏。第四seek 到 0.001 而不是 0前面解釋過是為了確保 seeked 事件觸發(fā)。3.2 在真實上傳流程中集成截幀單獨一個截幀函數(shù)還不夠?qū)嶋H業(yè)務(wù)中它通常是上傳流程的一環(huán)。用戶選完視頻文件后你需要先用 URL.createObjectURL 生成本地預(yù)覽地址然后截幀再把封面和視頻一起上傳。async function handleVideoSelect(file) { // 生成本地預(yù)覽地址 const objectUrl URL.createObjectURL(file); try { // 截取首幀 const cover await captureVideoFirstFrame(objectUrl, { targetWidth: 480, quality: 0.8 }); // 展示封面預(yù)覽 previewImg.src cover.dataUrl; // 上傳視頻和封面 const formData new FormData(); formData.append(video, file); formData.append(cover, cover.blob, cover.jpg); const res await fetch(/api/upload, { method: POST, body: formData }); const result await res.json(); console.log(上傳成功, result); } catch (err) { console.error(處理失敗, err); // 降級使用默認(rèn)封面 previewImg.src /assets/default-cover.png; } finally { // 釋放 objectURL URL.revokeObjectURL(objectUrl); } }這里有個關(guān)鍵點URL.createObjectURL 生成的地址是同源的 blob 地址不存在跨域問題canvas 不會被污染。所以本地文件截幀是最順暢的場景。如果你截的是遠(yuǎn)程視頻地址那就要面對前面說的跨域問題。另一個細(xì)節(jié)是 finally 里的 revokeObjectURL。objectURL 不釋放的話對應(yīng)的 Blob 數(shù)據(jù)會一直占著內(nèi)存用戶連續(xù)選幾個大視頻內(nèi)存就上去了。這個釋放操作很容易被忘記但養(yǎng)成習(xí)慣就好。3.3 參數(shù)調(diào)優(yōu)與不同場景的適配targetWidth 設(shè)多少合適這取決于你的使用場景。列表頁的小縮略圖240px 到 320px 就夠了。詳情頁的大封面640px 到 960px 比較合適。如果是視頻管理后臺可能需要 480px 左右的中等尺寸。我的經(jīng)驗是設(shè)一個比實際顯示尺寸大 1.5 到 2 倍的寬度這樣在高分屏上也不會模糊。quality 參數(shù)只對 JPEG 和 WebP 有效范圍是 0 到 1。0.8 是通用推薦值0.6 以下會有明顯壓縮痕跡0.9 以上文件體積增長很快但畫質(zhì)提升有限。如果封面文字比較多可以適當(dāng)提高到 0.85。format 的選擇上JPEG 適合大多數(shù)場景WebP 體積更小但兼容性稍差不過現(xiàn)在主流瀏覽器都支持了PNG 只在需要透明通道時使用。實際項目中我一般用 JPEG兼容性和體積平衡得最好。超時時間設(shè)多少本地文件截幀通常幾百毫秒就完成了遠(yuǎn)程視頻取決于網(wǎng)絡(luò)速度。10 秒是個比較安全的默認(rèn)值如果視頻特別大或者網(wǎng)絡(luò)特別慢可以適當(dāng)延長。但也不宜太長否則用戶等太久體驗不好。4. 常見問題與排查技巧實錄4.1 截出來是黑屏的幾種原因黑屏是最高頻的問題沒有之一。我遇到過的情況大概分三類。第一類是時序問題在 loadedmetadata 階段就 drawImage畫面還沒解碼自然是黑的。解決辦法就是等 seeked 事件或者至少等 loadeddata。這個前面已經(jīng)詳細(xì)講過。第二類是視頻編碼格式問題。某些視頻的編碼格式瀏覽器不支持解碼video 元素能加載元信息但畫不出畫面。這種情況可以通過 video.canPlayType 提前檢測或者監(jiān)聽 error 事件做降級處理。實測下來 H.264 編碼的 MP4 兼容性最好HEVC 和 AV1 在部分瀏覽器上支持不完整。第三類是 seek 時間點的問題。有些視頻的第一幀本身就是黑場比如淡入效果的開頭那截出來就是黑的。這種情況可以把 currentTime 往后調(diào)一點比如設(shè)成 0.1 秒或者視頻時長的 1%避開黑場。但要注意別調(diào)太多否則就不是首幀了。排查的時候可以用一個簡單的方法把 video 元素直接掛到頁面上加 controls 屬性手動播放看看第一幀到底長什么樣。如果手動播放能看到畫面但截幀是黑的那就是時序或代碼問題如果手動播放也是黑的那就是視頻本身或編碼的問題。4.2 跨域報錯的具體表現(xiàn)與處理跨域問題的報錯信息很明確Uncaught DOMException: Failed to execute toDataURL on HTMLCanvasElement: Tainted canvases may not be exported. 看到這個報錯基本就是跨域沒處理對。排查步驟是這樣的先確認(rèn) video 元素的 crossOrigin 屬性是否設(shè)置且是否在 src 之前設(shè)置。然后打開瀏覽器開發(fā)者工具的 Network 面板看視頻請求的響應(yīng)頭里有沒有 Access-Control-Allow-Origin。如果請求頭里沒有那就是服務(wù)端沒配 CORS需要后端加。如果請求頭里有但前端還是報錯檢查 crossOrigin 的值是不是 anonymous寫成 use-credentials 的話需要服務(wù)端額外支持 credentials。還有一種隱蔽的情況視頻請求被重定向了重定向后的響應(yīng)沒有 CORS 頭。這種情況在 CDN 配置不當(dāng)時會出現(xiàn)需要在 Network 面板里仔細(xì)看每一條請求。如果服務(wù)端實在加不了 CORS 頭降級方案是用同源代理。在自己的服務(wù)器上開一個接口把視頻流轉(zhuǎn)發(fā)一遍。前端從同源地址加載就不存在跨域問題了。這個方案會增加服務(wù)器帶寬消耗適合視頻量不大的場景。4.3 移動端兼容性注意事項移動端瀏覽器對 video 元素的處理比桌面端更嚴(yán)格。iOS Safari 有幾個特殊限制video 元素默認(rèn)不加載數(shù)據(jù)必須用戶交互后才開始加載playsInline 屬性必須設(shè)置否則視頻會全屏播放某些 iOS 版本對 crossOrigin 的支持也有差異。實測下來iOS 上截幀的成功率比 Android 和桌面端低一些。主要問題是 seeked 事件有時候不觸發(fā)或者觸發(fā)時畫面還沒準(zhǔn)備好。應(yīng)對方法是在 seeked 之后加一個小的延遲比如 requestAnimationFrame 或者 setTimeout 100ms再執(zhí)行 drawImage。這個延遲雖然不優(yōu)雅但確實能提高成功率。Android 上的問題主要是碎片化不同廠商的瀏覽器對視頻編碼的支持不一樣。建議在截幀失敗時做好降級顯示一個默認(rèn)封面不要讓用戶看到空白。還有一個移動端特有的問題內(nèi)存限制。移動端瀏覽器對 canvas 的尺寸有限制太大的 canvas 會創(chuàng)建失敗。所以 targetWidth 不要設(shè)太大480px 在移動端已經(jīng)足夠了。如果確實需要大圖可以分塊繪制或者用 OffscreenCanvas。4.4 常見問題速查表問題現(xiàn)象可能原因排查方法解決方案截出來全黑時序不對畫面未解碼檢查 drawImage 調(diào)用時機等 seeked 事件后再繪制截出來全黑視頻首幀本身是黑場手動播放查看第一幀currentTime 往后調(diào)一點截出來全黑編碼格式不支持檢查 video.canPlayType轉(zhuǎn)碼或降級處理toDataURL 報錯canvas 被跨域污染檢查 Network 面板 CORS 頭配置 CORS 或走同源代理視頻加載失敗crossOrigin 設(shè)置順序錯誤檢查屬性賦值順序crossOrigin 必須在 src 之前截幀超時網(wǎng)絡(luò)慢或視頻大檢查 Network 加載時間延長超時或降級移動端截幀失敗iOS 限制或內(nèi)存不足真機調(diào)試查看報錯加延遲或減小 canvas 尺寸封面模糊targetWidth 太小對比顯示尺寸提高到顯示尺寸的 1.5 到 2 倍4.5 幾個我踩過的坑和對應(yīng)技巧第一個坑是忘記釋放 objectURL。早期做上傳功能時沒注意用戶連續(xù)選了十幾個視頻后頁面直接卡死排查半天才發(fā)現(xiàn)是 objectURL 沒釋放導(dǎo)致內(nèi)存暴漲。后來養(yǎng)成習(xí)慣只要用了 createObjectURL就在 finally 里 revoke 掉。第二個坑是 canvas 尺寸設(shè)成了 video 的原始尺寸。有個項目上傳的是 4K 視頻canvas 設(shè)成 3840x2160結(jié)果在低端機上直接創(chuàng)建失敗。后來改成固定寬度 480px問題解決。封面圖根本不需要原始分辨率按顯示需求設(shè)尺寸就行。第三個坑是沒做超時處理。有次線上環(huán)境視頻加載特別慢截幀的 Promise 一直 pending用戶界面卡在 loading 狀態(tài)。后來加了超時機制超時后走降級顯示默認(rèn)封面體驗好很多。第四個坑是忽略了視頻旋轉(zhuǎn)信息。手機拍的視頻有時候帶有旋轉(zhuǎn)元數(shù)據(jù)video 元素播放時會自動旋轉(zhuǎn)但 canvas 繪制時不一定應(yīng)用這個旋轉(zhuǎn)。結(jié)果截出來的封面是橫著的。解決辦法是讀取視頻的旋轉(zhuǎn)角度在 canvas 上做對應(yīng)的旋轉(zhuǎn)繪制。不過這個情況比較少見大部分視頻上傳前都會被處理過。注意截幀操作會消耗 CPU 和內(nèi)存如果列表頁需要批量截幀建議加并發(fā)控制比如同時只處理 2 到 3 個視頻避免頁面卡頓。5. 性能優(yōu)化與進(jìn)階擴展思路5.1 批量截幀的并發(fā)控制與緩存策略列表頁如果有幾十個視頻需要截幀不加控制地同時處理會直接把瀏覽器卡死。每個 video 元素解碼都要占 CPU每個 canvas 都要占內(nèi)存并發(fā)數(shù)太高的話低端設(shè)備直接崩潰。我的做法是做一個簡單的任務(wù)隊列控制同時處理的視頻數(shù)量不超過 3 個。每完成一個就從隊列里取下一個直到全部處理完。這樣既能利用多核 CPU 的并行能力又不會把資源耗盡。class CaptureQueue { constructor(concurrency 3) { this.concurrency concurrency; this.running 0; this.queue []; } add(task) { return new Promise((resolve, reject) { this.queue.push({ task, resolve, reject }); this.next(); }); } next() { if (this.running this.concurrency || this.queue.length 0) { return; } this.running; const { task, resolve, reject } this.queue.shift(); task() .then(resolve) .catch(reject) .finally(() { this.running--; this.next(); }); } }緩存策略也很重要。同一個視頻不需要重復(fù)截幀截過一次就把結(jié)果存起來。可以用 Map 以視頻 URL 為 key 緩存結(jié)果或者存到 IndexedDB 里做持久化緩存。這樣用戶刷新頁面或者重新進(jìn)入列表時直接讀緩存不用重新截。5.2 用 OffscreenCanvas 提升渲染性能OffscreenCanvas 是較新的 API可以在 Web Worker 里進(jìn)行 canvas 繪制不阻塞主線程。對于批量截幀場景用 OffscreenCanvas 能明顯提升頁面流暢度。不過 OffscreenCanvas 的兼容性還不是特別完美而且 video 元素本身不能直接在 Worker 里創(chuàng)建需要配合 ImageBitmap 或者 VideoFrame 使用。實現(xiàn)起來比主線程方案復(fù)雜一些適合對性能要求很高的場景。如果只是偶爾截幾個封面主線程方案完全夠用。5.3 封面截取之外的擴展玩法首幀截取只是最基礎(chǔ)的需求實際業(yè)務(wù)中可能還有更多玩法。比如讓用戶從視頻的多個時間點選擇封面這就需要截取任意幀。實現(xiàn)思路和首幀類似只是把 currentTime 設(shè)成用戶選擇的時間點等 seeked 后繪制。還可以做智能封面選擇通過分析視頻前幾秒的畫面自動選一張最清晰的、人臉最多的、或者色彩最豐富的幀作為封面。這需要引入一些圖像分析算法復(fù)雜度高不少但效果確實更好。另一個擴展方向是封面編輯截出來的封面允許用戶裁剪、加文字、加濾鏡。這些操作都可以在 canvas 上完成截幀只是第一步后續(xù)的編輯能力才是完整的產(chǎn)品體驗。5.4 服務(wù)端兜底方案的設(shè)計前端截幀雖然方便但總有失敗的時候——瀏覽器不支持、視頻格式特殊、網(wǎng)絡(luò)異常等等。所以服務(wù)端兜底是必要的。我的做法是前端截幀成功后把封面一起上傳如果前端截幀失敗就上傳一個標(biāo)記后端收到標(biāo)記后用 ffmpeg 截幀生成封面。這樣既保證了大多數(shù)情況下的即時體驗又確保了極端情況下封面不會缺失。后端 ffmpeg 截幀的命令大概是這樣的ffmpeg -i input.mp4 -vf selecteq(n\,0) -vframes 1 -q:v 2 cover.jpg這條命令的意思是選取第 0 幀輸出一幀畫面質(zhì)量等級 2范圍 1 到 31值越小質(zhì)量越高。如果首幀是黑場可以把 select 條件改成選取第 10 幀或者按時間選取。前后端配合的完整流程是前端截幀成功則上傳封面失敗則上傳空標(biāo)記后端收到視頻后檢查是否有封面沒有就用 ffmpeg 補上。這樣無論前端環(huán)境如何最終每個視頻都有封面。6. 一些實際項目中的經(jīng)驗體會這套方案我在幾個內(nèi)容管理項目里都用過整體穩(wěn)定性不錯但每次都會遇到一些新的邊界情況。最深的體會是截幀這件事代碼本身不復(fù)雜復(fù)雜的是各種環(huán)境差異和異常處理。把超時、降級、跨域、移動端兼容這些邊角都處理好代碼量會比核心邏輯多好幾倍但正是這些邊角決定了功能能不能真正上線用。另一個體會是關(guān)于用戶體驗的。截幀需要時間哪怕只有幾百毫秒用戶也能感知到。所以界面上要有 loading 狀態(tài)不要讓用戶覺得卡住了。截幀失敗時要有降級方案顯示默認(rèn)封面比顯示空白好得多。如果截幀時間超過一兩秒可以考慮先顯示一個模糊的占位圖等截幀完成再替換。最后分享一個小技巧如果視頻本身有 poster 屬性或者后端已經(jīng)生成了封面優(yōu)先用現(xiàn)成的封面截幀只作為兜底。這樣既省性能又保證質(zhì)量。截幀方案最大的價值在于沒有封面時能快速生成一個而不是替代所有封面來源。把這個定位搞清楚方案的設(shè)計和取舍就清晰了。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
男女啊啊啊啊啊| 91天堂视频| 传媒在线观看一区二区三区| 色九月| 99久在线精品99re8蜜桃| www.91久久| 殴美色网| 天天影视射综合网| 色婷婷综合网站| 欧美激情亚洲| 国产精品。| 污污汅18禁网站在线永久免费观看 | 国产人妻天天干精品| 熟妇人妻丰满久久久久久久无码| 一个人在线看的黄色电影网站| 日本操逼无码| 日韩有码回春沙龙第一页| 91色情黑丝搞鸡在线观看一区二区三区三州| 97美日韩视频| 欧美aⅴ99久久黑人专区| 免费毛片在线播放| 人人艹亚洲| 亚州色图欧美色图| 亚洲一区二区专区-国产丝袜精品丝袜-成人AV| 久久成人午夜精品影院| 999综合网| 青娱乐蜜桃臀AV色婷| 亚洲欧美中文日韩视频中国语| 国产精品乱码久久久久久久久| 欧洲熟妇xxXx欧美老妇裸体 | 激情抓乳插进去啪啪啪日韩| 精品国产乱子伦一区二区三区,精品一 | 粉嫩AV一区二区夜夜| 久草草一二三四区久久| 91狠婷| 69精品久久久久中文字幕| 中文操逼字幕| 日本加勒比无码专区| 鸥美极品| 白丝jkav| 久久一二三四五六七八九区区| 俺去也婷婷| 亚洲精品亚洲人成在线麻豆| 第四色奇米影视777| 天堂性色| 中文有码9| 中文欧丝袜诱惑| 伊人玖玖网| 欧中日成人免费影视| 色999人与兽| 九九碰九九爱97超碰| 粉嫩av在线一区二区| 粉嫩粉嫩一区性色AV片| 国产一级特黄大片处女| 香港澳门日本三级网站| dy888午夜老子影视达达兔| 男人天堂最新手机版在线青青草| 亚洲男人天堂2013| 亚洲蜜臀视频精品久久| 久久爱超碰网| 91真人天天在线| 亚洲蜜臀懂色| 久久久久网站-538在线视频-欧美永久乱码| 人妻精品综合中文字幕在线 | 大香蕉中文aV在线| 伊人操操| 97精品人妻一二三四| 久久噜| 日日骚精品视频| 天天情欲宗合网| KK色在线影院| 欧美色欧美| 蜜臀久久99精品久久久久久酒店| 黄骗免费网站| 91激情国产| 国产无遮挡| 极品少妇99| 午夜福利区| 日韩午夜国产| 人妻少妇无码| 亚洲色欧美| 亚洲精品97| 国产精品一区二区手机看片| 女人被男人桶爽视频网站| 中国女人内射6XXXXX| 丰满人妻-区二区三区免费看 | 九九碰九九爱97| 中文字幕在线24| 嗯嗯啊啊啊好舒服| 久久影视二区三区行押| 中文乱码字字幕在线第5页| 国产成人欧美精品在线| 日韩欧美中文日韩欧美色| 五月丁香色婷婷| 99啪啪视频| 超碰在线1234区| 手机看片91人妻| 操逼逼中文字幕| 成人精品在线| 天天激色| 天天激清| 91色婷婷综合久久中文字幕二区| 欧美大香蕉久| 日本色色色| laoshunv91| 日韩欧美传媒一区国产| 人人操人人精品影片| 俞拍久久国应视频| 国产精品视频麻豆入口| 欧美72网页| 九热久| 天天干夜夜操网| 黑人中出21连凳花野真衣| 中文字幕一区二区三区四五区| 高潮的A片激情扒开一区| 欧美三级一级| 人人操人人摸人人骑| 色牛牛AV| 久超碰这里只有精品| 中文字幕aⅴ在线视频| 综合激情97| 天天伊人| 黄色大片一区二区密桃丝袜| 起碰97| 插入综合网| 精品美女少妇一区二区| 五月丁香综合激情| 国产搭汕a级片| 六月丁香久久| 夜夜性| 人妻熟女字幕一区二区| 亚洲精品九九九| 黄aaaaaaaaaaaaaaaaaa色网站| 超碰1997| 91狠狠综合久久久| 九九九热| 96国产污污污丝袜| 欧美视频在线视频免费va| 超碰97COm中文| 五月丁香六月综合缴清无码| 国产精品第二页| 欧美黄色片在线播放| 日本999精品视频| 91东京热男人的天堂| 久久色一区| 啪啪视频亚洲第一| 九九九不卡| 香蕉99秘 精品一区丁香| 中文字幕精品探花视频| 久噜噜| 国产做?爰片久久毛片?片美国| 青青草色AV| 香一区二区三区| 欧美一级美片在线观看免费| 精品人妻一二三四区视频| 丝袜美腿诱惑亚洲欧美视频在线观看| 俞拍久久国应视频| 国产一级久久久| 操美女高潮抽搐白浆| 嗯嗯啊啊好爽| 亚洲少妇综合| 天堂国产AV| 亚洲欧洲网站免费观看| 中文字幕精品一区欧美| 人人澡人人干| 超碰中文字幕人妻草一区| 精品亚洲国产成人AV制服丝袜| 97欧美日韩| 91精品人妻五十路| 久久久久9999妇女| 国产av白丝| 久久久麻豆精品| 立川理惠被中出无码| 久久久国产护士丝袜美腿一| 美女91在线观看| 狠狠操天天干| 在线另类| 国产精品免费视频人成| 亚洲AV无码国产成人| 情趣丝袜无码操逼视频| 麻豆国产精品午夜视频| 夜色综合| 五十路一区无码| 白嫩91在线亚洲| 中文字幕久久亚州无码| 1024亚洲中文字幕久在线看片你懂的 | 97日韩超碰超碰中文字幕| 欧美日本视频一区| 亚洲欧美日韩电影网站一区| 97亚洲综合电影| 亚洲综合小说另类图欧美视频激情小说色五月天 | 亚洲天天天| 九九热只有精品| 精品玖九九久| 992大香蕉| 99热国产精品| 亚洲区 欧美区| 蜜桃午夜视频一区二区 | 日产成人久久| 深喉吞精| 狠狠爱夜夜| 91N综合网| 人妻久久| 无码精品久久久久久亚洲| 日本视频在线中文字幕| 操www| 内射老妇BBWX0C0CK| 中文字幕乱码人妻二区三区| 色网在线视频观看免费| 操逼逼无码| 亚洲中文字母在线播放| 人人色人人操在线| 一区二区三区日韩欧美 | 操逼日韩无码| 91天天日| 欧美熟妇人体| 韩日精品福利视频一区不卡在线免| 欧美熟女妇同| 麻豆一区二区三区在线看 | 日韩成人午夜精品久久高潮| 亚洲综合贴图91 | 久久无码精品| 一本久道在线综合视频| 另类天堂| 狠色婷婷久久一区二区三区_| 51一区二区三区| 国产精品熟女一区二区三区| 牛牛操视频逼| 超碰人人干| 高树玛利亚无码流出| 91老熟女老女人国产老太| 欧美日韩小说| 亚洲?V无码专区在线电影| 啊啊啊男女| 欧美gv在线观看| 日本片日本片祼观看网站在线看中文版网页在线看 | 91超碰丝袜制服| 人妻少妇精品久久久久久| 日韩一级久久毛片| 五月婷婷基地| 色香综合天天影视综合 | 精品对白久久不卡| 亚洲综合色婷婷| 欧美亚洲AN| 久草资源在线| 操人91| 一区,二区,三区视频| 91黄站| 午夜男女爽爽爽在线视频| 亚洲999综合| 欧美成人色| 欧美丝袜91| 日韩精品在线观看网站| 99热线麻豆 | 国产精品无码久久久久2025| 欧美97在线观看| 中文字幕三四五区| 99啪啪| 亚洲男人天堂视频| 亚洲欧美国产日本一区二区三区| 中出91视频| av网页一区二区三区| 97天天搞在线| av三级电影在线播放| 91九色在线| 国产sv美女内射| 青青国产精品在线| 亚洲综合第一页| 人妻熟女一区在| 五十路三区在线| 超91综合网| 99999精品| 久久人妻四季| 午夜影美女日鸡鸡天天视频国产| 亚洲男人天堂2| 人妻日日干| 任我爽在线视频免费观看 | 日天天九九天堂666| 操逼日韩无码 | 日本免费一级AAA大片器| 久久色AV线| 美女黄频a美女大全免费皮| 果冻传媒A片一二三区| 婷婷在线视频在线观看| 美骚妇av高清在线| 中文字幕性感少妇av| 色九九久九九| 一区二区 电影 亚洲| 福利视频一区二区微拍| 丰满人妻-区二区三区免费看 | 亚洲中文字幕97久久精品少妇| 91国产丝袜美女| 久久无码电影| 精品一区二区三区免费古装毛片香港三级日本三级人妇 | 久热精品在线| 丁香六月婷| 久久 国产 无码| 丝袜色综合| 日韩精品 资源| 精品久久久久久中文| 91精品国产91熟女| 免费超碰97久久| 99精彩视频| 黄片免费日韩| 男人的天堂kva| 精品视频123区小说区| 日韩人妻免费精品| 九月激情婷婷| 999综合网| 天天综合,91入口| 天天操天天日天天干| 夜夜中出国产| 亚洲乱熟女一区二区三区大香蕉| 久久欲| 亚洲交换| 怡红院亚洲怡春院av| 97精品一二区| 午夜视频久久久| 97 超碰 人人做 人人爱| 五月天激情国产综合婷婷婷| 久久99人妖视频国产| 99精品国产户外露出| 麻豆 美女 丝袜 人妻 中文| 亚欧美无遮挡| 亚洲系列欧美| 青青青艹在线视频| A啊啊在线观看| 久操99| 婷婷激情一区二区三区俺也去| 亚 欧 美 综合| 丁香六月婷婷| 色综合五月天| 欧美综合自拍成人自拍第二十页| 九色视频91| 亚洲欧美精品福利在线| 操操碰| 手机在线观看不卡无码av| 偷拍导航视频网站| 久久久999国产精品| 91欧美巨乳| 久热99999| 无码精品啪啪啪一区二区三区三州| 人妻丝袜肏逼| 亚洲情色 自拍| 国产日本一区二区三区蜜臀在线观看| 欧美夜夜草视频| 天堂v无码免费视频| 亚洲天堂在线怕怕视频| 日va操| 日本狠狠干| http://qxhbdz.com| 亚洲一二三四区机械| 青草香蕉网| 欧美日韩精品国产91| 智利AV在线网| 99热在线观看| 操美女高潮抽搐白浆| 亚洲人人操| 第四色色综合91| 国产超碰人人操| 亚洲国产一区二区三区四区国产| 大香蕉 222| 黄色网址在线免费观看| 日日碰狠狠添天天爽超| 亚洲久久天堂| 亚洲精品 大香蕉| 男人的天堂99| 青青草自拍视频在线播放| 69视频入口| 白丝少妇一区二区| 无码乱人伦中文视频| 久艹视频在线| 色av中文字| 免费一二区| 五月婷婷丁香六月| 日韩人妻一区二区| 91美女色视频亚洲| 九九色逼| 91欧美色| 大香蕉伊在线久草麻豆天堂故事| 大香网站| 日韩欧美亚洲自拍偷拍| 国产乱码精品久久久久久 | 思思热在线观看| 97在线资源| 亚洲性爱无码乱伦av| 91丝袜视频在线观看| 中文字幕制服欧美久久一区| 日操粉逼逼| 美女91AV| 蘋果手機免費看成人Av| 丁香五月天激情| 蜜乳视频网站| 亚洲美女高潮喷水视频| 插老姨肥穴| 国产一级片| 亚洲婷婷综合网| 大干人妻| 国产污视频麻豆传媒一区二区 | 97精品97| 67914亚洲精品| 污污汅18禁网站在线永久免费观看 | 日本精品一区三区| 逼逼逼逼操操操操操操操操操午夜剧场| 99夜夜操| 插入粉嫩少妇视频| 天天干天天干天天干| 日日夜夜精品| 国产极品馒头逼| 日本不卡二三区| 伊人久久88国产女| 国产精品久久伊人| 久久透逼视频| 美女久久久久久久久久久| 午夜综合在线| 亚洲AO在线| 久久久久9| 秋霞成人一级在线观看| 在线视频97| 欧美高清91| 久偷拍欧美日韩三区| 婷婷四五区| 插穴性爱视频在线观看| 亚洲中字幕日本一区二区三区| 久久久91福利姬| 亚洲AV无码天美传媒一区| 精品国产www久久| 精品人妻中文字幕高清| 96麻豆精品一区二区三区| 91N综合网在线| 欧美 传媒 麻豆 日韩 偷拍| 国产av高清版| 九九AV| 欧美亚洲日本激情在线| 九色在线熟女国产黑人| 操逼视频国产无套| 91综合网站| 性爱乱伦一区| 亚洲91大片| 自拍丝袜美腿人妻| 天天内射| 精品人妻一区二区三区夜夜| 土豪酒店各种姿势玩弄极品幼稚| 日韩天天综合| 日韩三级av片| 国产精品3| 久久久久成人亚洲国产| 91麻豆一二三区| 麻豆天天躁天天揉揉AV| 丁香七月婷婷| 91 丝袜在线播放| 无码直播久久久| 我想要啊 啊 啊| 欧美一二在线| 91 丝袜在线观看| 欧美在线第五页| 久久久久久久9最新免费视频观看| 激情文学 亚洲图片| 欧美亚洲第1页| 蜜桃久久综合视频| 国产精品色哟哟| 久久久久国产精品片区无码直播| 久久精品国产精品一区 | 有码免费观看| 日韩熟女操逼| 麻豆精品.欧美精品.日韩精品.| 黑人性暴力毛片| 欧美日韩不卡传媒| 丝袜AV一区二区三区| 东北熟女91| 超碰色老头| 午夜福利合集| 蜜臀网 一区| 天天亚洲| 亚洲午夜未满十八勿入网站日本又色又爽又黄 | 成·人免费午夜在线观看| 国产成年女黄特黄| 超碰成人人人爽人人爽| 伊人网青青| 尤物网址| 91小视频| 六月丁香啪啪| 亚州成人a∨| 伊人久久大香蕉线AV五月天| 中文久久96| 青青欧洲黑| 精品人妻一区二区蜜桃视频 | 天天操夜夜操| 啊啊啊好舒服好爽啊啊啊视频| 综合天天。| 日韩97视频!在线| 亚洲自拍一区夜夜操| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 99只有精品| 天天透伊人| 日日躁夜夜躁狠狠躁超爽| 亚洲超碰AV| 精品久久久久久中文字幕视频免费| 精品久久久久久久| 国产精品人妻一区二区| 免费作爱一级视频| 六月丁香啪啪| 嗯嗯嗯嗯啊啊啊好紧好大| 熟女丰满人妻一区| 中出789在线视频| 日本黄色XXX| 高清视频一区| 欧美黄色大片在线观看 | 丁香六月激情| 97精品综合| 成人无码专区精品视频| 亚洲文学偷乱拍啪啪啪啪| 999精品女人| 老熟女搡BBBB搡BBBB视频| 国产成人bd在线观看| 亚洲成人av色网| 欧美97视频| 狠狠躁伊人中文字幕| 激情小说图片亚洲首页| 亚洲各类熟们中文字幕| 精品美女在线视频| 色九九久九九| 精品成人亚洲午夜电影| 激情av| 欧美激情1区| 国产67194| 日本熟妇人妻中出视频| 玖玖视频在线资源一区二区三区| 人妻少妇色综合| 猛猛干| 人人艹亚洲| 五月丁香啪啪啪| 欧美精品久久| 999久久久免费精品国产牛牛| 黄色小视频日本txt| 中日无幕一二三四区| 插B在线观看| 国产狂喷潮在线精品| 91人妻Pr| 亚洲精品 欧美精品| 亚洲精品久久久久毛片A片拉屎| aaaa少妇高潮大片| 乱色视频中文字幕| 大香蕉啪啪啪啪在线| 懂色AV中文| 96久久久久| 女人 A一级| 亚洲av热热色| 午夜操一操| 欧美日韩一区二区三区四区蜜桃| 麻豆AV一区二区| 国产精品久久久亚洲第一牛牛_在线观看| 思思视频免费看网站| 亚洲天堂男人在线| 中文字幕一区二区三区人妻不卡 | 阿姨一区二区免费视频-高清正片西瓜视频下载app-T450AV | 青青草一区二区高清无码视频 | 免费97视频| 久久亚洲中文字幕视频| 大香蕉97久久| 色淫网站优优视频| 色情五月综合婷婷| 97超碰这里只有精品| 国产精品盗摄 偷窥盗摄| 青青草原人妻| 无马一区二区| 天天干天天操天天干天天操| 亚洲综合性网址| 青娱乐福利99| 性色中出| 亚欧免费观看视频| 夜夜嗨AV蜜臀av| 精品人妻av区天天看片| 成人五月香网在线| 亚洲高清色综合| 欧美性爱五月天| 久久久天堂| 韩日性爱av| 久草色悠悠在线视频| 黄色大片视频在线免费看| 久久这里都是精品| 大香蕉视频啪啪啪啪| 国产97色在线| 情色大香蕉| 婷婷色综合| 97鸡把在线视频| 91啪啪视频| 96超碰网| 亚洲黑丝在线| 精品熟妇视频一区二区| 丁香九月激情啪| 国产97色在线 | 亚洲| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 97亚洲综合在线| 久久久五月天| 91亚洲人| 厕所偷拍在线| 日韩黄色av中文字幕| 美女淫穴| 亚洲最新av无码成人精品区 | 国产亚洲精品玖玖玖在线观看| 岛国艾薇凹凸视频天堂| 大香交| 欧美99热| 老熟女网站| 中文字幕在线高清男人的天堂 | 中国人高清www色视频免费| 尻女朋友一夜| 成人97人人超碰人人| 久久超碰98| 日本一级二级三级网站| 日比av无码| 亚州情色j区| 久久无码一区二区二三区性色| 亚洲免费97免费| 91人妻精华帖| 久久亚洲日韩国产欧| 99色婷婷| 2018天天日天天日| 九九国产热| 乱色视频中文字幕| 欧美欧美啪啪视频| 欧美影音在线| 天天做天天爽| 中文字幕一区二区三区字幕| 97伦乱| 99综合网| 欧洲亚洲国产综合在线| 久久成人精品| 超碰国产情侣自拍网| 欧美日本中字另类在线| 欧中美三级一区二区三区| 成人影 天天操 亚洲| 人妻81p| 天堂岛av| 欧美精品日韩久久久九| 国产精品在线免费| 在线观看A啊啊啊| 丝袜熟女一区二区三区| 人妻三级在线中文字幕| 色亚州人久干视频在线观看免费版| 色婷婷九月| 男女做爰猛烈动高潮A片免费应用| 舔舔啊| 久草久热| 7777奇米影视久久| 干B网| 国产精品在线网站| 红杏大香蕉| 18禁美女裸体无遮挡啪啪| 久操国产在线| 日韩欧美天天爽爽爽天天爽爽| www.狠狠干.coom | 3P乱轮视频| 青青在线视频日韩欧美| 五十路人妻在线| 亚洲色图久久成人| 黄色一级视| 美国日韩黄片| 亚洲欧美天| 国产精品情侣啪啪| www.99在线| 交换娇妻呻吟声不停中文字幕| 大香蕉中文201| 激情综合网一盗摄| 五月天伊人| 日韩中文字幕精品一区在线| 天天射日日干| 2020中文字幕在线| 四季AV一区二区凹凸精品小说| 98色网| 国产精品久久久久久久久AV大片| 久久久久亚洲三级电影| 97av在线观看| 麻豆天天躁天天揉揉AV| 啊啊啊要高潮了| 亚洲色图 欧美热图 清纯唯美 另类自拍 | 久久永久无码人妻视频| 97欧美资源| 久久一区二区加油站| 观看视频图片一区二区三区| 黄色污污污污污污网站| 丁香九月激情| 国产精品美女久久久久AⅤ国产馆| 丁香九月婷婷| 日韩精品午夜操呦呦不卡影院| 中文一区在线日| 欧美性爱一内片一区二区三区| 五月综合视频| 综合色播| 国产高清精品福利| 免费看国产曰批40分钟怎么下载| 免费成人在线观看91| 农村少妇久久久久久久| 久久9精品网站| 亚洲 综合 第一页| 欧美亚洲涩涩| 天天色怡春院| 99精品丰满人妻| 欧美人妻二区三区| 中文字幕一区 二 区 三 四 五 区日 日 骚 | 亚洲素人综合| 日本道日本道中文字幕日本道最新日本道在线观看 | 久久超碰网| 日日操夜夜操天天操免费观看麻豆| 日韩精品人妻中文字幕不卡乱码| 青青草一区二区三区四| 天天干1区2区在线| 极品一区二区三区免费| 熟女91网| 91老妇女| 加勒比性爱成人在线| 久久美国毛片| 国产人妖的免费的视频| 激情小说在线视频| 青青久久艹| 999精品乱码| 久久九九97| 少妇的嫩逼图片| 人妻熟女一区二区三区视频| 国产精品乱码久久久久久| 亚洲熟女乱综合一区二区三区 | 天天肏美女| 色婷婷五月天| 久久色人体| 久久不卡一区二区| 亚洲有码 欧美精品| 久无码| 日韩精品高清资源在线| juliaann精品熟女一区| 亚洲宗合电影| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 我想要 啊 啊 啊| 亚洲少妇视频| 99久草| av网站免费看| 搡老女人911熟妇老熟女| 97资源视频| 亚洲精品影视老司机| 一级啊性爱在线视频| 三级三久久线久久99久目本WW| 欧美顶级黄色大片免费| 亚洲一本色道中文无码aV天美| 精品一区二区人妖| 免费看毛片操穴| 影音综合网| 亚洲伊人久久精品影院| 另类视频在线| 99热精品青草在线 | 热热色91| 五十路六十路素人熟女| 亚洲最新a在线观看| 五月天开心网| 天天肏美女| 国产黄色动态精品| 极品内射| 深夜激情| 亚洲午夜未满十八勿入网站日本又色又爽又黄| 日韩三A大片在线观看| 日本www操操操| 欧美精品1区2区3区| 精品少妇高潮久久| 青青草AV色| 欧洲精品二区| 91搞逼视频| 一区二区三区激情在线观看| 亚洲国产精品无码AV久久| 后入国产| 久久东京热成人| 狠狠久久手机视频精品| 亚洲成人福利电影免费| 最新欧洲欧美日本激情网站| 欧美激情超碰777| 亚洲综合首页| 欧中日成人免费影视| 色五月婷婷网| 久久亚洲熟妇在线视频| 玖玖爱在线视频免费观看| 亚洲精品毛片在线观看| 婷婷天堂站| 国产在线视视频有精品| 日本性爰一道本| 国产探花日韩援交| 九t超碰| 亚洲性猛| 色婷婷国产精品一区在线观看| 超碰成人公开| 天天日老熟妇| 试看福利| 好爽视频在线观看视频| 成人乱码一区二区三少妇| 超AV色女| 蜜臀中文无码午夜| 樱花蜜乳av| 大香网伊人久久综合| 激情终合网| 欧美综合亚洲综合| 欧美系列在线一区二区| 伊人国产av| 日夜精品| 日韩99精品视频综合区| 黄页大片在线观看| 久热这里| 热久久国产| 综合色图亚洲欧美| 国产精品对白自产拍| 97操| www.狠狠| 久久原创中文| 久久这里是精品| 久久发布国产伦子伦精品| 懂色AV网| 九九探花视频在线观看| 久干网| 欧美 日韩 另类 亚洲| 亚洲精品97| 中文字幕色AV| 成人性交午夜免费片| 粉嫩久久久久| 97久久超碰亚洲| 色婷婷一区二区三区久久| 一起草精品人妻| 性交一区二区在线播放| 国模无码人体一区二区三| 情色AV电影| 亚洲黄色电影| 90后性网国产欧美| 欧美日韩精品青青| 淫荡熟女乱伦网| 综合 青草 伊久久 影院 综合| h无码动漫在线观看| 中文乱码字幕观看| 日本在线不卡一二区| 国产亚热在线久久| 日韩欧美aⅴ综合网站发布| 成人综合网 欧美| 男人天堂资源| 发朗少妇买婬全视频中文| 操一对老熟妇爽上天视频| 日韩精品在线观看网站| 中文熟女五十乱码在线| 日韩免费三级黄片电影| 国内黄色精品| 日本爽爽爽爽爽爽免费视频| 丝袜内射| 国产在线综合福利网站| 欧美嫩性色| 久草精品在线| 婷婷丁香在线| 美女诱惑久久| 韩国久久97| 久久久亚洲熟妇熟女| 99国产精品人妻人伦| 日本大香蕉综合网红本杳社区| 久综合网| 91综合熟女| 九九热九九热| 中文字幕在线免费观看2| 有码免费观看| 91综合网| 打av高清| 噜噜噜在线视频| 丰满人妻一区| 人人艹亚洲| 亚洲十八禁止| 欧美黄色大香蕉一区二区| 日产成人久久| 在线国产探花| 97超碰中文在线| 夜夜狼人妻| 午夜一级免费毛片| 免费草草草草草视频| 97摸视频| 人人妻人人爽| 无码一区二区三区四区五区六区七区八区九区十区视频 | 日本十八禁免费看污网站| 日本九九久久99| 日韩成人性爱AV| 亚洲第一页色网| 狠狠欧美| 久久久久久无码人妻中文字幕| 日本道久久综合色色| 婷婷激情四射| 精品久久久久黄少妇| 亚洲成人日韩小说| 日本高清熟女久久一区| 男人的天堂网页| 欧美狠狠弄| 色网在线视频观看免费| 国内精品久9| 亚洲成人av色网| 国产精品高清2021在线| 欧美一区二区三区成人性生活| 久久精品国产亚洲AV无码电影| 人妻在线臀日韩| 99热啪啪| 99热这里都是精品| 亚洲色图8| 校园春色 亚洲| 人妻熟妇一区二区三区| 超碰97综合网| 91综合网站| 欧美中字不卡| 日日夜夜精品视频| 热热热热日日漂亮永久永久国产日| 亚洲国产麻豆一区二区三区| 九九草| 人人爽人人精品乱人伦AV| 九色婷婷| 亚洲色综合| 亚洲人在线| 国产精品免费视频人成| 亚洲加勒比久久日本道| 肉丝无码中文高清| 天综合网| 免费强奸av| 美女被啪到深处抽搐视频| 韩国嫰模上门援交视频| 97操97色| 中文字幕av乱伦| 东京热毛片177b2viP| 亚洲欧美精品久| 91国产精品在线看| 国产女人极品高潮毛片| 欧美少妇人妻| 怡红院亚洲怡春院av| 亚洲射综合网| 2020中文字幕| 欧美一区二区亚洲天堂| 国产99精品一区二区三区免费| 超碰97综合| 女人天堂网| 人人爽人人精品乱人伦AV| 高清不卡一二三区视频......| 午夜精品久久久久久久99蜜桃一| 性色AV网站| 久久久久国色αv免费观看| 区一在线观看| 五月天婷婷色| 美女操逼福利视频| 91久久九九精品国产综合| 蜜桃午夜视频一区二区| 久操 高清| 日韩人妻资源网| 1769精品一区二区三区| 国产午夜在线观看| 91痴汉| 99在线啪| 熟女欧美日韩综合婷婷| 天美av在线观看| 中文字幕jul-617人妻熟女| 午夜福利激情在线视频| 91操操操操| 超碰97国产欧美| 熟女露脸激情自拍视频| 91日日| 久久99国产综合精品女同| 亚洲一区中文字幕一区| 99精品视频在线观看免费| а√天堂资源官网在线资源| 欧美美女视频| 亚洲熟女乱综合一区二区在线-...亚洲国产日韩欧美一区二区三区,久久久久久精 | 国产日本久久免费精品| 国产精品毛片?v一区二区三区| 91色宗合| 久久久久久久久久久久97| 综合天天。| 热久久国产精品视频大陆精品| 91女网站| 99综合免费视频| 国人欧美精品一区二区| 日韩Va亚洲va欧美Ⅴa久久| 黄色成人网久久久久久| 伊色久人大在线| 蜜臀va69| 丰满欧美放荡少妇在线| 综合激情一一91| 大吊色| 第二页中文字幕| 国产精品小视频一区二区三区| 久久久久成人蜜桃精品| 日本一级真人黄色性爱视频| 9美女超碰在线免费观看| 天天综合网亚洲综合网| 91天美传媒在线观看| 99国产精品久久久久久久成人热| 久久综合乱子伦国产免费| 69人妻人人揉人人躁人人精品| 欧美色图天堂在线| 综合婷婷| 国产免费久久久久| 久久精品国产免费观看99| 久久鲁干| 久久久久久国产手机AV| 国产精品自在线发布| 91c色| 黄片aaaaa一区| 国产色呦呦| 国产美女高潮叫床视频| 国产树林里野战在线看| 极品色www影院| 婷婷久热| 3p国产欧美99热| www99热| 日本有码久久| 丰满少妇一区二区三区专区| 人妻啊啊人妻啊| 东北黄色电影| 亚洲AV资源| 亚洲少妇在线影音| 91nbbbbbb| 男女香蕉一区二区| 亚洲女优有码无码高清| 91综合中文字幕| 日日操免费视频| 精品国产乱码| 欧美东京热精品A∨| 天天日天天插| 75大香蕉| 久久女女| 熟妇女伦乱视频| 内射老妇BBWX0C0CK| 亚州操逼图| 五月激情综合网| 久久久久久国产精品| 粉嫩国产精品久久久| 伊人午夜福利视频| 2017亚洲天堂| 在线观看免费视频国产| 91精品无码人妻系列| 亚洲情色91| 日韩资源网| 亚洲美女精品九九视频| 操婢日韩| 岛国片国产成人亚洲播放| 成人性爱电影一区二区| 熟妇熟女视频一区二区三区| 色眯眯射| 亚洲熟女少妇免费视频| 香蕉99秘 一区精品蜜桃臀| 日韩av在线精品观看| 熟女人妻久久中文字幕一二区| 26uuu性| 亚洲精品天堂久久A∨51成人漫| 97爱爱爱| 国产一二三福利视频网| 色色青青久久| 亚洲午夜蜜臀| 精品白丝一区| 久草久日| 后入式福利| 久艹日日日| 亚洲一区二区久久久久| 91人妻尻屄视频| 亚洲国产日韩欧美熟妇在线| 亚洲AV无码国产精品久久久久| caopeng97| 图片区小说区| 第四色色综合91| 久久这里只精品| 中文字幕国产| 日韩美脚一区二区网站| 大屁股国产在线视频| 97视频网站| 狠狠色综合网| 亚洲综合骚逼| 精品人成视频在线观看| 亚洲强奸乱伦影视网| 日少妇亚洲版| 国产精品夜夜| 男人的天堂一区三区| 美女裸体麻豆天美蜜桃91| 99少妇内射| 婷婷午夜成人色中色| 青青草原综合久久大伊人精品| 青青操在线视频| 国产 日韩 欧美 中文 另类,国产 欧美 另类 制服 变态,高清 日韩 欧美 中文,高 | 99蜜桃臀亚洲成人在线观看| 色综合91好| 日本一区二区成人在线| 加勒比AV网| 97色碰| 91九色精品熟女内射| 少妇精品久久久| 久久精品人妻一区| 色色婷婷五月天| 久久久96精品| 国产精品自拍xxxx| 操b网站亚洲无码| 福利视频网站| 色婷婷狠狠| 亚欧操逼片在线观看 | 91天天爱| 国产日韩无码一区二区三区久久区| 国产91美女高潮| 日韩精品亚洲一二三| 亚洲欧洲日韩国产自在线| 四季AV一区二区凹凸精品小说| 97在线看| 精品一区二区三区蜜桃臀赵总 | 九久久精品| 视频国产精品未满十八禁止在线观看| 久久久久国产亚洲一区欧美色图日韩| 91第一页| 天天综合精品| 中文字幕一区二区无码成人| 极品色www影院| 伊人色综合欧美| 中文字幕一区电影在线观看| 亚洲揄拍网| 天天躁日日躁AAAAXXXX国产| 97人亚洲综合字幕| 91精品人| 日韩欧美麻豆大片| 夜夜精品视频| 日日夜夜天天| 9精品久久久久| 欧美色性爱| 黑人精品久久97| 国产日韩区| 亚洲精品1区| 日韩亚洲国产视频| 一本久久精品中文字| 欧美另类综合久久| 欧美日韩青操| 亚欧无码在线| 加勒比久久av| 熟女突然公开看18禁影片 | 97视频网站在线观看| 久操大香蕉超碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰 | 亚洲视频精选| 精品国产乱码久久久久久影片| 成年人黄色| 亚洲天天艹| yaouchengrenav| 人人澡综合涩| 亚洲天堂中文字| 黄久在线| 金莲网址| 亚洲人人夜夜澡人人爽| 日韩一级片在线看| 精品少妇99| 麻豆蜜桃视频在线观看 | 熟女被操视频网址| 夜夜欧美| 嗯啊啊啊轻点视频| 久操操AV电影| 国产精品久久久久久久久久久久久久久 | 青草伊人久久| 色婷婷六月| 国产老太乱伦一区| 330Dv国产女人终合视频极品人与兽| 一个国产在线综合网站| Julia Annxxxxx| 婷婷伊人网| 亚洲97| 熟女网站最新| 精品少妇一区二区三区在线视频| 久久老熟女| 三级片大波波|