体育站群批量导入赛事录像:避坑清单与效率优化实录
手头赛事录像一多,后台一个个传就有点扛不住了。我们这套体育站群系统带批量导入赛事录像的功能,原本最耗人力的环节算是能自动化跑起来。不过刚上手那会儿,我按默认流程走了一遍,转码队列直接卡了两个小时,后来来回调了几次参数才跑顺。下面就把这套方案实际跑下来的路数拆开聊聊,给准备批量传录像的同行提个醒。

批量导入前的文件命名与目录规范
不少人以为批量导入就是框选一堆文件点上传,真正费工夫的其实是前面的准备。我们这套程序对文件命名有隐含要求,比如“赛事ID_主队VS客队_日期.mp4”这种格式,导进去之后系统能自动匹配到对应的赛事节点和分类。最早没当回事,随手用手机默认的“VID_20240612_1932”这种名字,进库后全堆在未分类里,再手动归位比重新传一遍还折腾。
建议在本地先按项目把目录建好:联赛名称/赛季/轮次,视频文件按这个层级放。这套方案批量上传时支持保留目录结构,导进去之后后台媒体库直接就是现成的分类树。单次批量导入的文件数量我实测控制在200个以内比较稳,超过这个量,浏览器端的上传队列容易超时,走FTP或者后台的定时扫描目录更靠谱。
转码队列与入库去重的实际配置
体育赛事录像动辄几个G,原片直接入库对存储和带宽都是压力。这套体育站群系统内置了转码队列,批量导入时可以选择统一转码到720p或者1080p。我们的做法是队列并发数设成2,别贪多,设到4以上CPU直接跑满,站点前台响应跟着变慢。转码完成后的文件会自动替换原片链接,播放页不用手动改。
去重这块也值得提一句。早期没开去重,同一场比赛不同来源的录像传了两遍,站群同步之后几个子站全重复了。后来在批量导入的设置里勾选“按文件MD5+赛事ID双重校验”,重复文件会直接跳过并写入日志。日志里能看到哪些文件被忽略、原因是什么,排查起来不用翻数据库。
定时任务与站群同步的衔接
批量导入不一定非得手动点。我们现在的流程是摄像设备或者采集端把录像放到指定目录,这套程序配置一个cron任务,每15分钟扫描一次新文件,自动跑导入流程。时间间隔看比赛密度,周末赛事多可以临时改成5分钟一次,平时15分钟足够。扫描目录记得单独挂一块盘,别和系统盘放一起,转码临时文件占空间挺凶的。
导入完成后,站群同步是另一道工序。主站入库的录像,通过站群分发规则推送到各个子站,推送时只传转码后的播放文件和封面图,不传原片。我们在分发规则里限定了只有“已审核”状态的录像才触发同步,避免批量导入时误传了测试文件。子站接收后生成独立的播放页,URL按子站域名加赛事ID拼接,对搜索引擎收录也比较友好。
几个容易忽略的细节
批量导入时封面图的处理要单独说。系统默认抽视频第一帧当封面,但体育录像第一帧经常是黑屏或者广告板,前台列表页看着很乱。我们的做法是在导入前把封面图按同名jpg放在视频旁边,导入时勾选“优先使用同名封面文件”,这样列表页的观感直接上一个档次。
另外,导入日志要定期清理。这套方案默认保留30天的导入记录,数据库表膨胀得很快。我们改成保留7天,历史记录导出到文本文件存档,后台查询速度明显回升。还有一点,批量导入期间别同时跑站群的全量同步,两个任务抢IO,转码时间会翻倍。
整体跑顺之后,一场比赛从录像落地到全站群可播放,基本不用人工介入。前期把命名规范、转码参数、去重规则这几项定好,后面就是看日志、调间隔的日常维护了。这套流程我们跑了小半年,中间只因为存储盘满了停过一次,其他时候还算省心。