CMS2.0时代,EFV智能云转码CMS变革更新,超百项细节优化,3000行代码,40小时全心投入

CMS

2022-04-06T03:18:31.723Z

EFV智能云转码自带的CMS当时设计的时候,没有考虑那么多,仅仅是作为一个静态前端展示页面在做,但是随着后台转码系统的越发强大,CMS逐渐已经跟不上转码核心的更新了,所以我在5月劳动节的关头,花费了几乎40个小时,整个重写了CMS,没仔细数过,但是跟CMS相关的优化至少也有上百项,包括CMS模板,后台CMS设置,剧集管理,视频管理等。今天我就来讲讲到底我们做了怎样的优化。

CMS2.0设计理念

易用,高效,速度极快,尽量减少JS,CSS加载,拿来即用,运营便利,所有页面瀑布流改造(首页,分类,标签,播放页,用户页,搜索页),所有页面无限加载,提升用户心流体验,在兼具无限加载加载的基础上提供良好的SEO效果。

优化项目节选

一、整个重写的模板,我称之为projectx,整个利用uikit构建编写,极少调用其他第三方库,整个CSS和js仅加载5个文件,速度极快。
二、导航全面优化,在一个前端设计中,导航至关重要,一个好的导航就已经成功一半。
三、PC导航增加全分类,全标签的入口,用户体验极佳。

2

四、移动端顶部导航增加跟随便捷菜单,让用户无论在何种页面都能点击进入目标页面。

3

五、针对移动端完全重新设计的滑动导航,所有分类,标签,常用导航都在里边。用户可一次点击就前往自己想要的页面。

6

六、所有聚合页面瀑布流改造,因为要做瀑布流所有数据类型都新增了海报2字段,并且在上传海报的时候,自动生成瀑布流使用的海报字段,并且自动获取到海报的宽高属性,此字段可通过API获取,用于瀑布流APP的制作,后面我也会推出瀑布流无限的EFV专用APP。

1

七、重写云储存代码,上传失败自动重试,改进流程,云储存同步源码基本上重写,而且也独立出了一个单独的云储存同步的子系统,可以分离于主程序运行,不影响主程序运行,独立版本的云储存更加强大,自由设置要监听的文件夹,要监听的文件类型,是否上传完成删除,上传完成删除是否过滤一些文件后缀不删除等,支持wasabi,s3,minio,阿里OSS,七牛云,又拍云等国内外大部分知名云储存服务,详情介绍链接:https://express-ffmpeg-vip.moejj.com/blog/5ec4a5d0e84cb5c0e1a32845
八、增加试看时长设置。修复多分辨率排序问题,修复播放器竖屏问题,优化播放页加载速度,后台可自定义用户试看的时长了,随意设置,用户无权限时可观看多少秒的试看内容后台可自定义了,修复了多分辨率可能出现的排序问题,修复了播放器竖屏撑大页面的问题。
九、再次修复一个ffmpeg社区存在的BUG,一些录屏软件录屏视频转码失败的问题,因为间隔关键帧过大导致的BUG。
十、改造积分价格和最低消费资金,使推广和上传等获取积分的设置更加灵活。原来CMS中积分价格的设置是一个积分多少钱,并且至少只能设置一个积分一元钱,非常不灵活,这次改造成一元钱可购买多少积分,可以设置一元钱购买10个积分,这样设置例如签到获取积分,推广获取积分,上传获取积分,积分点播,积分购买下载权限将会更加灵活,还改造了原来最低购买积分数,改成了最低消费金额,也就是至少购买多少钱的积分。
十一、实时生成的供下载mp4随机命名,增加movie字段download和downloadprice。这次设计和制作的下载权限功能太强大了,甚至无需你保留有MP4,后台新增了一个超级API,在提供下载的视频没有mp4的情况下,系统会直接实时根据m3u8生成一个mp4,然后再返回下载,并且缓存至视频下载字段,下次同一个视频再点下载就直接从文件夹中返回,不再实时生成。详情介绍:https://express-ffmpeg-vip.moejj.com/blog/5ebf6daee84cb5c0e1a32844
十二、增加 下载 权限购买机制,根据积分数,下载权限持续时长来判定。新增了CMS中的积分下载视频的功能,详情介绍可参照前一项的连接,并且有下载权限时长判断,后台可设置默认下载权限的积分价格和下载权限持续时长,也可以单独针对某视频设置下载权限所需积分数,此下载权限在有效时长内可无限下载,超过有限时长之后需再次使用积分购买下载权限。
十三、fluent API 之实时生成指定视频指定分辨率MP4并且返回path。FluentAPI是EFV系统后面的核心价值所在,根据调用api将可达到所有转码或者切片,甚至截图,动态图,生成试看视频等一切功能,第三方调用将可把EFV作为转码SAAS服务实现一切功能。这次为了配合下载功能制作了第一个Fluent API,即传递apikey,apisecret,id,hd就可实时根据ID查询出的视频,根据hd指示的分辨率的m3u8生成一个mp4,并且返回path路径,然后再根据path路径做处理。
十四、后台增加用户积分购买记录,后台新增了用户积分消费记录,所有消费管理员都可一目了然。
十五、子系统分离计划之二直播服务系统脱离,很多用户不使用直播功能,所以这次直接把直播服务功能脱离运行,有需要可一键运行。
十六、projectx增加了对剧集,电影,资讯,图集漫画的支持,音频和直播后面会慢慢支持。
十七、CMS可自定义导航,导航现在可自定义了,在config中新建navbar.js,其中便可自定义导航,projectx模板中会自动加载其中的配置。配置案例:

module.exports = {
    navbar: [{
        title: '热门视频',
        href: '/hots'
    }, {
        title: '试试手气',
        href: '/random'
    }, {
        title: '资讯',
        href: '/articles'
    } , {
        title: '图集漫画',
        href: '/imageslist'
    } , {
        title: '发现更多',
        href: '/discover'
    }]
}

如上配置,即模板中PC导航和移动端头部跟随便捷导航,还有滑动导航中都会加载这个导航配置。
十八、后台视频库增加实时反馈转码进度,做到不同分辨率的进度实时返回,通过使用socketio强大的实时功能,初步实现了转码进度实时返回,而且是不同分辨率的实时返回,视频:https://www.leimulamu.com/movie/5ec4dcf131ec047e1d7686ed
十九、选择分辨率,记录分辨率信息,下次默认加载此分辨率,用户在前端播放视频时选择的分辨率会记录至后台,后面播放所有视频都默认选择这个分辨率。
二十、根据视频ID记录播放时长 对应视频刷新自动加载到记录的播放时长 切换分辨率也从记录的播放时长进行播放,用户在任意视频播放时的播放时长都将记录,后面重新进入此视频,会直接从记录的播放时长处开始播放,切换分辨率也会从记录的播放时长处开始播放。
二十一、推广可以设置积分,后台可自行设置推广可获取的积分数了,目前可获取积分的途径为:每日签到,推广,上传视频,购买积分。配合一元可购买积分数设置,效果极佳。
二十二、新模板增加每日签到功能,新模板有多个每日签到的按钮入口,增强用户每日登录的动力。
二十三、新增了用户可直接购买VIP用户组的功能,原来是只能通过购买积分,然后再使用积分购买VIP用户组,现在在保留了积分购买用户组的功能下新增了用户可直接购买VIP用户组的功能。
二十四、修改动态图截图为智能截图,从视频中间截图,摒弃开始时长设置。根据测试发现,如果设置了动态图开始截取的时长,如果时长超过视频本身的长度就会不产生动态,改进代码,自动截图视频时长中间位置进行动态图生成。
二十五、改进剧集正式发布流程,增加剧集正式发布按钮,添加剧集之后,可能会因为剧集中没有任何内容,导致前台展示出错,所以这次添加了正式发布的功能,用户可在添加好了分集之后,再点击正式发布,这样可做到随心可控。

总结

在短短一篇博文中没办法阐述这20天来我所做的所有努力,可前往https://www.leimulamu.com 自行体验。