Fluid Player 实战:免费接入 VAST 广告的 HTML5 视频播放器一小时搞定 Fluid Player 实战免费接入 VAST 广告的 HTML5 视频播放器一小时搞定【免费下载链接】fluid-playerFluid Player - an open source VAST compliant HTML5 video player项目地址: https://gitcode.com/gh_mirrors/fl/fluid-player广告方甩来一个 VAST 标签、要求你的视频页加上前贴片广告时你才发现页面上那个video标签只是个半成品。Fluid Player 就是干这个的——免费开源的 HTML5 视频播放器把video变成带完整控制栏、多清晰度切换、HLS/DASH 流媒体和 VAST 4.0 广告能力的成品播放器。 第一步十分钟跑通最小示例先不碰广告让播放器转起来。下面是够用的最小结构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只是加一张封面删掉这行照样能跑。所有能力都是往第二个参数里塞配置对象。 第二步四种播放场景各配各的本地视频与多清晰度同一个视频准备几个码率写在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告诉播放器什么时候插秒数或百分比都行。allowVPAID默认是关的要跑 VPAID 创意必须显式打开。广告加载失败时播放器会把进度条上的广告标记markers和跳过按钮一起接管广告商只负责给 VAST交互不用你操心。片尾推荐视频Suggested Videos视频播完别让用户走挂一个推荐列表。推荐内容由一个 JSON 配置驱动只填一个 URLvar player fluidPlayer(player, { suggestedVideos: { configUrl: suggested_videos.json } });JSON 里每项带标题、封面和各自的播放源点击某格会直接把新视频灌进同一个播放器实例继续播。⚡ 第三步调参速查布局和控制栏常用项配置项类型默认值一句话说明layoutControls.posterImagestring无播放前的封面图layoutControls.autoPlaybooleanfalse自动播放浏览器策略下一般需静音layoutControls.controlBar.autoHidebooleanfalse控制栏无操作后自动隐藏layoutControls.controlBar.autoHideTimeoutnumber3隐藏前等待秒数layoutControls.controlBar.animatedbooleantrue控制栏显隐是否带动画layoutControls.subtitlesEnabledbooleanfalse显示字幕按钮配 VTT 源layoutControls.playbackRateEnabledbooleanfalse显示倍速菜单广告相关常用项配置项类型默认值一句话说明vastOptions.adListarray[]广告列表每条一个 VAST 来源adList[].rollstring必填preRoll / midRoll / postRoll / onPauseRolladList[].timernumber|stringmidRoll 必填中插触发点秒数或百分比字符串adList[].fallbackVastTagsarray[]主标签失败后的瀑布流备用 VASTvastOptions.allowVPAIDbooleanfalse是否放行 VPAID 广告vastOptions.skipButtonCaptionstringSkip Ad跳过按钮文案vastOptions.vastTimeoutnumber—VAST 请求超时时间完整类型定义都写在 src/index.d.ts 里找不到某个开关时直接查它最快。 第四步踩坑与自救现象VPAID 广告完全不出现。原因allowVPAID默认是false播放器出于安全考虑不放行 VPAID 脚本。 解法在vastOptions里显式设allowVPAID: true再确认广告商给的确实是 VPAID 创意而非普通 VAST。现象midRoll 设了广告但永远不插。原因中插必须带timer缺了它播放器不知道触发时机。 解法补上timer支持秒数如30或百分比如50%长视频建议用百分比。现象主广告源经常超时播放器直接干等。原因只给了一个vastTag请求失败就没有后手。 解法给同一条广告加fallbackVastTags数组播放器按顺序逐个请求直到拿到能出广告的那个——这就是仓库测试用例里反复覆盖的瀑布流场景。现象页面看起来糙——控制栏一直杵着、视频上下留黑边。原因autoHide默认关闭fillToContainer等布局项用的是默认值。 解法打开controlBar.autoHide并调短超时视频铺不满容器时检查fillToContainer与封面尺寸posterImageSizecover/contain。现象运行时切换 HLS 源后播放进度被重置iOS 尤其明显。原因这是项目已知的问题类型仓库 special-cases 目录里有对应复现页。 解法暂时避开频繁动态换源把多清晰度写进初始source列表让播放器内部管理切换。生产环境组合拳真实业务里这些配置是叠在一起用的一份完整长这样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 } });上生产前建议照着 test/html/ 目录里的hls_vod_vast、suggested_videos等现成页面逐项核对自己的配置广告和推荐列表各走一遍完整流程。回到开头那个 VAST 需求现在广告方再来要贴片你只需要在adList里多填一行。下一步动作就一个——把 test/html/ 下对应你业务场景的示例页在本地跑起来对着抄。【免费下载链接】fluid-playerFluid Player - an open source VAST compliant HTML5 video player项目地址: https://gitcode.com/gh_mirrors/fl/fluid-player创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考