配置步骤

PbootCMS 视频自动播放 · 落地步骤

目标:首页大图放视频并自动播放,同时让所有"能填图片"的地方(幻灯片、产品/案例缩略图、栏目封面、内容主图)都能直接填视频。


一、改后台上传白名单(必须做,否则传不上去)

1. 主配置

文件:/config/config.php(网站根目录),约第 30~42 行

// 上传配置
'upload' => array(
    'format' => 'jpg,jpeg,png,gif,webp,xls,xlsx,doc,docx,ppt,pptx,rar,zip,pdf,txt,mp4,webm,ogv,mov,m4v,mp3,otf,ttf',
    'max_width' => '1920',
    'max_height' => ''
),

默认其实已经带 mp4,avi,flv,rmvb主要补 webm,ogv,m4v 这几种兼容性更好的格式。

2. UEditor 编辑器配置(正文里插视频才需要)

文件:/core/extend/ueditor/php/config.json

"videoAllowFiles": [".mp4", ".webm", ".ogv", ".m4v", ".mov"],
"videoMaxSize": 204800000

改完到后台 清空缓存(系统设置 → 清理缓存)再试上传。


传法一:宝塔直接传(推荐,最稳)​

宝塔 → 文件 → 进网站根目录的 /static/upload/,新建个 video 文件夹
把压好的 banner.mp4 和 banner.jpg(同名海报)一起拖上去
回 PbootCMS 后台 → 幻灯片管理 → 图片地址框直接填 /static/upload/video/banner.mp4
这条路绕开了 PHP 上传限制,视频再大也不怕,而且不用动后台任何设置。

传法二:后台直接传(视频小于 20M 时用)​

后台 → 基础内容 → 幻灯片管理 → 编辑某张幻灯片,图片地址框旁有上传按钮,点它选 mp4
如果弹出的文件选择框里看不到视频文件(按钮把类型过滤成只显示图片了),别折腾,直接换传法一
或者在任何内容编辑页,用编辑器工具栏的回形针图标(附件上传)传,传完把生成的地址复制出来备用
动手前先确认一件事:你截图停在第二节那个表 —— 宝塔里 PHP 的 upload_max_filesize 改了没?还是默认 8M 的话,走后台传会直接失败(进度条卡住或提示失败)。走传法一的话这步可以先不管。

传完自测一下:浏览器直接访问 http://你的域名/static/upload/video/banner.mp4,能正常播放说明路径和服务器都没问题,再把路径粘进幻灯片,前台清缓存刷新就该出效果了。

二、放行上传体积(最容易卡在这一步)

PHP 默认 upload_max_filesize = 8M,一个 banner 视频随随便便就超了。

宝塔面板操作路径:

项目 位置 建议值
PHP 上传限制 软件商店 → PHP-版本 → 配置修改 → upload_max_filesize 200M
POST 上限 同上 → post_max_size 220M
脚本超时 同上 → max_execution_time 300
Nginx 请求体 网站 → 设置 → 配置文件 → client_max_body_size 200m

Nginx 那一行加在 server {} 里:

client_max_body_size 200m;

改完重启 PHP 服务,然后后台 → 系统设置 → 头像旁边看"上传限制"是否生效(PbootCMS 后台首页会显示环境信息)。


三、把视频填进"图片位置"

方法 A:直接填路径(最省事,推荐)

  1. 后台 → 文件管理 / 附件 → 上传 mp4
  2. 复制得到的路径,例如 /static/upload/video/banner.mp4
  3. 幻灯片管理(或产品编辑页的封面图),把这个路径直接粘贴进图片地址输入框

PbootCMS 的封面图字段本质是文本框,粘什么路径都认。

方法 B:直接点上传按钮

如果上传按钮的文件选择器过滤了 image/*,选不到 mp4,就用方法 A。想彻底解决就搜一下后台模板里的 accept= 把限制去掉(不同版本位置不一样,不推荐折腾)。

海报图约定(重要)

视频旁边放一张同名 jpg,脚本会自动当作首帧:

/static/upload/video/banner.mp4
/static/upload/video/banner.jpg   ← 自动识别为 poster

没有海报图的话,视频加载完之前是一片黑,首屏体验会很差。


四、视频必须压缩(不做等于自毁首屏)

自动播放的视频不能有音轨(浏览器要求 muted 才能 autoplay),音轨纯属浪费体积。

# 首页 banner:20 秒以内,1920 宽,无音轨,目标 2~3MB
ffmpeg -i 原片.mp4 -t 20 -an \
  -vf "scale=1920:-2" \
  -c:v libx264 -profile:v baseline -level 3.0 \
  -pix_fmt yuv420p -crf 28 -preset slow \
  -movflags +faststart \
  banner.mp4

# 列表缩略图用的小视频:960 宽,10 秒,目标 500KB~1MB
ffmpeg -i 原片.mp4 -t 10 -an \
  -vf "scale=960:-2" \
  -c:v libx264 -profile:v baseline -pix_fmt yuv420p \
  -crf 30 -movflags +faststart \
  thumb.mp4

参数说明:

  • -an —— 去掉音轨,体积直接砍一截
  • -movflags +faststart —— 必须有,让视频边下边播,否则要整段下完才开始
  • -profile:v baseline —— 兼容老安卓 / 微信内置浏览器
  • -crf 28~30 —— 画质体积平衡点,数字越大越小

体积红线: 首页 banner ≤ 3MB,列表缩略图 ≤ 1MB。超了就砍时长或降分辨率。


五、自动播放不生效?按顺序排查

现象 原因 解决
完全不播 mutedplaysinline 脚本已自动加全,确认脚本真的加载了(F12 看元素是否变成 <video>
iOS 上不播 开了低电量模式 无解,Apple 系统级限制,靠 poster 兜底
安卓微信不播 x5-playsinline 脚本已加;仍不行就换腾讯域名白名单或引导"点击播放"
播放但卡 视频太大 / 没 faststart 按第四节重压
显示一片黑 没有 poster 放同名 jpg
控制台报 404 路径填错 路径以 / 开头,如 /static/upload/video/banner.mp4
移动端不播 省流量模式 / 2G 脚本主动降级,属正常行为

一句话:自动播放 = muted + playsinline + autoplay + 无音轨 + 体积够小,五缺一都可能失败。


六、部署清单


七、进阶建议

  1. 视频别放网站服务器:五金机械这类外贸站访客遍布全球,建议丢到 OSS/COS + CDN,或者直接用 Vimeo/YouTube 的 embed(但那样就不是自动静音循环背景了)。
  2. 确认服务器支持 Range 请求:mp4 靠 Range 分段加载,宝塔默认 Nginx 支持;用 curl -I 看响应头有没有 Accept-Ranges: bytes
  3. 首屏只放一个视频:首页 banner 那一屏放视频就够了,下面列表的小视频用 preload="metadata" 或滚动到再播(脚本已内置 IntersectionObserver,滚出视口自动暂停)。
posted @ 2026-09-12 16:49  璟君  阅读(5)  评论(0)    收藏  举报