海洋 CMS 播放器切换清晰度如何配置
海洋 CMS 要让播放器能切换清晰度,实际只有两条路:一是用「播放组」把同一部影片的高清、标清地址分开写,前台那个播放器下拉框就变成了清晰度选择;二是改播放器 JS,让一个播放地址内部带多码率(HLS 多码率 m3u8)来实现真正的无刷新切换。前者在后台改数据 5 分钟能搞定,适合采集站;后者需要播放器本身支持,画质切换不重载页面。
海洋 CMS 的清晰度切换是怎么实现的?
结论:海洋 CMS 没有单独的「清晰度」字段,线路和清晰度共用同一套播放组结构,播放组下拉框就是用户看到的清晰度按钮。
海洋 CMS 的播放地址存在影片表的 vod_play_url 字段里,格式为:播放组之间用 $$$ 分隔,同一个组内多集用 # 分隔,单集的名称和地址之间用 $ 分隔。字段值的形态大致如下:
高清$https://cdn.a.com/hd/01.m3u8#高清$https://cdn.a.com/hd/02.m3u8$$$标清$https://cdn.a.com/sd/01.m3u8#标清$https://cdn.a.com/sd/02.m3u8
你在 phpMyAdmin 里打开任意一条影片记录看这个字段,就能确认自己站点的分隔符和组名长什么样——照着改,最不容易出错。
在后台手动配置清晰度具体怎么做?
结论:直接在影片编辑页的播放地址框里追加一组播放地址,组名写「高清」「标清」,保存后前台下拉框会自动多出一项。
步骤:
- 后台进入影片管理,找到目标影片,点编辑;
- 定位到「播放地址」输入框,里面已有第一组(比如标清)的完整串;
- 在末尾加
$$$,然后按集名$地址的格式写第二组,多集之间用#连接; - 组名统一写成「高清」「标清」「1080P」这类用户能直接看懂的词,不要写「线路1」「线路2」;
- 保存后刷新前台播放页,播放器上方的下拉框里就会出现两个可选项。
如果影片是采集来的,组名由采集源决定,你不用手动改每一部——在采集规则或入库后的批量替换里,把源站组名(如「hls」「mp4」)统一替换成「高清」「标清」即可。
播放器内部切换清晰度怎么改?
结论:想让切换不刷新页面、不丢播放进度,必须用支持多清晰度的播放器配置,海洋 CMS 里改的是 js/player/ 目录下对应的播放器 JS 文件。
三种常见做法:
- HLS 多码率:把每个清晰度切片成独立 m3u8,再写一个 master playlist(主播放列表),内容形如
#EXT-X-STREAM-INF:BANDWIDTH=2000000,RESOLUTION=1280x720后跟720p.m3u8,每个清晰度一段。播放器读取 master 后即可自动或手动切档,播放地址只需要填这一个。 - ckplayer:在播放器初始化对象里用
video数组,每项带definition字段,例如{file:'...hd/index.m3u8', definition:'高清'},ckplayer 会自动渲染清晰度切换按钮。 - DPlayer:原生只有单清晰度,不写额外逻辑就只能靠上面的播放组方案;要真多清晰度,得换成阿里云 aliplayer 或接 hls.js 的 levels 手动切档。
注意:改 JS 前先备份原文件,海洋 CMS 升级会覆盖 js/player/ 目录。
配置时要注意什么?
结论:用播放组做清晰度,切换时会重新加载播放器,进度不保留;用多码率 m3u8,切换平滑但需要准备多套转码文件。
几点实操提醒:
- 播放组数量每增加一组,播放页要输出的地址就多一份,移动端下拉框太长会难选,清晰度控制在 2-3 档最合适;
- 用播放组方案时,集数顺序必须一一对应,高清第 3 集和标清第 3 集要指同一集,否则切换后会串集;
- 域名带 https 的站点,播放地址也必须是 https,否则浏览器会拦截混合内容,表现为清空列表或黑屏;
- 多码率方案下,master m3u8 里的
BANDWIDTH值要和实际码率接近,填错会让播放器选错默认档位。
总的来说,海洋 CMS 的清晰度配置就是「播放组 = 清晰度」这一条主线:采集站用播放组最快,想要无缝切换就上 HLS 多码率并在播放器 JS 里配好 definition。改之前先备份字段和 JS 文件,改完在一部多集影片上验证集数对应关系。
原文链接:https://www.gj0.com/thread-747.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。