:免費接入 VAST 廣告的 HTML5 視頻播放器一小時搞定)
Fluid Player 實戰(zhàn)免費接入 VAST 廣告的 HTML5 視頻播放器一小時搞定【免費下載鏈接】fluid-playerFluid Player - an open source VAST compliant HTML5 video player項目地址: https://gitcode.com/gh_mirrors/fl/fluid-player廣告方甩來一個 VAST 標(biāo)簽、要求你的視頻頁加上前貼片廣告時你才發(fā)現(xiàn)頁面上那個video標(biāo)簽只是個半成品。Fluid Player 就是干這個的——免費開源的 HTML5 視頻播放器把video變成帶完整控制欄、多清晰度切換、HLS/DASH 流媒體和 VAST 4.0 廣告能力的成品播放器。 第一步十分鐘跑通最小示例先不碰廣告讓播放器轉(zhuǎn)起來。下面是夠用的最小結(jié)構(gòu)video idplayer source srcmovie.mp4 typevideo/mp4 /video script srcdist/fluidplayer.min.js/script script var player fluidPlayer(player, { layoutControls: { posterImage: poster.jpg } }); /script這段在干嘛fluidPlayer接收視頻元素的 id或元素本身返回播放器實例posterImage只是加一張封面刪掉這行照樣能跑。所有能力都是往第二個參數(shù)里塞配置對象。 第二步四種播放場景各配各的本地視頻與多清晰度同一個視頻準(zhǔn)備幾個碼率寫在video里就是video idplayer source srcmovie-1080p.mp4>var player fluidPlayer(player, { vastOptions: { adList: [ { roll: preRoll, vastTag: https://example.com/pre.vast }, { roll: midRoll, timer: 30%, vastTag: https://example.com/mid.vast }, { roll: postRoll, vastTag: https://example.com/post.vast } ], allowVPAID: true } });preRoll片頭、midRoll中插、postRoll片尾中插必須配timer告訴播放器什么時候插秒數(shù)或百分比都行。allowVPAID默認(rèn)是關(guān)的要跑 VPAID 創(chuàng)意必須顯式打開。廣告加載失敗時播放器會把進度條上的廣告標(biāo)記markers和跳過按鈕一起接管廣告商只負(fù)責(zé)給 VAST交互不用你操心。片尾推薦視頻Suggested Videos視頻播完別讓用戶走掛一個推薦列表。推薦內(nèi)容由一個 JSON 配置驅(qū)動只填一個 URLvar player fluidPlayer(player, { suggestedVideos: { configUrl: suggested_videos.json } });JSON 里每項帶標(biāo)題、封面和各自的播放源點擊某格會直接把新視頻灌進同一個播放器實例繼續(xù)播。? 第三步調(diào)參速查布局和控制欄常用項配置項類型默認(rèn)值一句話說明layoutControls.posterImagestring無播放前的封面圖layoutControls.autoPlaybooleanfalse自動播放瀏覽器策略下一般需靜音layoutControls.controlBar.autoHidebooleanfalse控制欄無操作后自動隱藏layoutControls.controlBar.autoHideTimeoutnumber3隱藏前等待秒數(shù)layoutControls.controlBar.animatedbooleantrue控制欄顯隱是否帶動畫layoutControls.subtitlesEnabledbooleanfalse顯示字幕按鈕配 VTT 源layoutControls.playbackRateEnabledbooleanfalse顯示倍速菜單廣告相關(guān)常用項配置項類型默認(rèn)值一句話說明vastOptions.adListarray[]廣告列表每條一個 VAST 來源adList[].rollstring必填preRoll / midRoll / postRoll / onPauseRolladList[].timernumber|stringmidRoll 必填中插觸發(fā)點秒數(shù)或百分比字符串a(chǎn)dList[].fallbackVastTagsarray[]主標(biāo)簽失敗后的瀑布流備用 VASTvastOptions.allowVPAIDbooleanfalse是否放行 VPAID 廣告vastOptions.skipButtonCaptionstringSkip Ad跳過按鈕文案vastOptions.vastTimeoutnumber—VAST 請求超時時間完整類型定義都寫在 src/index.d.ts 里找不到某個開關(guān)時直接查它最快。 第四步踩坑與自救現(xiàn)象VPAID 廣告完全不出現(xiàn)。原因allowVPAID默認(rèn)是false播放器出于安全考慮不放行 VPAID 腳本。 解法在vastOptions里顯式設(shè)allowVPAID: true再確認(rèn)廣告商給的確實是 VPAID 創(chuàng)意而非普通 VAST?,F(xiàn)象midRoll 設(shè)了廣告但永遠(yuǎn)不插。原因中插必須帶timer缺了它播放器不知道觸發(fā)時機。 解法補上timer支持秒數(shù)如30或百分比如50%長視頻建議用百分比?,F(xiàn)象主廣告源經(jīng)常超時播放器直接干等。原因只給了一個vastTag請求失敗就沒有后手。 解法給同一條廣告加fallbackVastTags數(shù)組播放器按順序逐個請求直到拿到能出廣告的那個——這就是倉庫測試用例里反復(fù)覆蓋的瀑布流場景?,F(xiàn)象頁面看起來糙——控制欄一直杵著、視頻上下留黑邊。原因autoHide默認(rèn)關(guān)閉fillToContainer等布局項用的是默認(rèn)值。 解法打開controlBar.autoHide并調(diào)短超時視頻鋪不滿容器時檢查fillToContainer與封面尺寸posterImageSizecover/contain?,F(xiàn)象運行時切換 HLS 源后播放進度被重置iOS 尤其明顯。原因這是項目已知的問題類型倉庫 special-cases 目錄里有對應(yīng)復(fù)現(xiàn)頁。 解法暫時避開頻繁動態(tài)換源把多清晰度寫進初始source列表讓播放器內(nèi)部管理切換。生產(chǎn)環(huán)境組合拳真實業(yè)務(wù)里這些配置是疊在一起用的一份完整長這樣fluidPlayer(player, { layoutControls: { posterImage: poster.jpg, controlBar: { autoHide: true, autoHideTimeout: 3 } }, vastOptions: { adList: [ { roll: preRoll, vastTag: pre.vast, fallbackVastTags: [fallback1.vast] } ], allowVPAID: true }, suggestedVideos: { configUrl: suggested.json } });上生產(chǎn)前建議照著 test/html/ 目錄里的hls_vod_vast、suggested_videos等現(xiàn)成頁面逐項核對自己的配置廣告和推薦列表各走一遍完整流程?;氐介_頭那個 VAST 需求現(xiàn)在廣告方再來要貼片你只需要在adList里多填一行。下一步動作就一個——把 test/html/ 下對應(yīng)你業(yè)務(wù)場景的示例頁在本地跑起來對著抄?!久赓M下載鏈接】fluid-playerFluid Player - an open source VAST compliant HTML5 video player項目地址: https://gitcode.com/gh_mirrors/fl/fluid-player創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考