基于打golf人群常常需要剪辑自己的高光视频,开发一款自动合成个人golf合集与高光时刻以及球轨迹曲线的app。
主要包含绘制球轨迹,合成洞牌合集视频,生成高光时刻海报三部分功能;
绘制球轨迹:用户上传自己的golf视频,然后可以进行选择球的击球点和落点,绘制出一条球轨迹,导出后播放视频可以很明显看到球沿着轨迹运行的过程;
合成洞牌合集视频:用户上传自己多个golf片段视频(同一场比赛),拍照上传计分卡自动识别成绩,然后在每个视频上利用洞牌实时切换显示成绩,最终合成完整视频合集;
生成高光时刻海报:用户上传自己的战绩成绩,同时上传一张自己的形象照,最终会生成一张用户的高光时刻海报,满足golf用户的心里情绪价值。
项目简介:高尔夫视频创作 App,前端基于 Flutter 开发,服务端基于 SpringBoot 提供计分卡 OCR、AI 成绩海报、权益校验、视频历史等接口;围绕「视频导入 → 球迹绘制 → 轨迹动画 → 赛事感叠层 → 视频 / 海报导出」构建完整创作闭环。
- 移动端架构:依托 Flutter 路由管理搭建整体页面体系,实现视频剪辑、轨迹编辑、模板预览、导出、历史记录等核心功能;封装草稿状态管理,统一编辑、预览与导出参数,做页面状态持久化,处理页面跳转、前后台切换场景下编辑数据丢失问题;分层封装业务组件,抽离视频编辑、轨迹绘制通用业务逻辑,实现组件复用,优化页面构建性能,处理多页面之间的数据通信。
- 球轨迹绘制:基于 CustomPaint 贝塞尔曲线绘制高尔夫球路,结合 GestureHandler 手势交互与动画框架实现轨迹点位拖拽调节;适配横竖屏、多视频比例与精细缩放调校,提升标注精度;做手势冲突处理,区分缩放、拖动、点位编辑多种手势,处理大尺寸视频画布下渲染性能优化,避免手势操作时页面卡顿,支持轨迹点增删、撤销重做能力。
- 轨迹动画与球速控制:依据视频帧位置、飞行时长与控制点计算播放进度,支持球速、尾迹、时间、距离标签等参数调节,实现贴合视频节奏的轨迹动态展开与尾迹跟随效果;对齐视频播放器时间轴,动画与视频帧精准同步;支持动画预览、暂停、跳转定位,提供多套轨迹动画模板,可自定义尾迹颜色、粗细、透明度。
- 视频导出:整合剪辑、轨迹、标签、叠层等编辑参数,对接平台原生音视频合成能力,支持多片段合成、进度监听、任务复用、取消操作及前后台中断重试;导出任务做队列管理,避免多任务并发内存溢出;支持不同分辨率、码率输出,导出过程做内存管控,适配低配置设备,导出完成后本地缓存,支持预览、分享。
- AI 成绩海报:后端对接 AI 绘图服务,通过 SpringBoot 异步线程池 + Redis 实现海报生成异步任务调度,支持状态轮询、失败重试、数据入库,成品自动归档 OSS,可历史回看与导出;封装异步任务统一异常处理,任务超时管控,任务状态持久化,前端轮询获取任务进度,支持取消海报生成任务,历史海报列表分页加载。
- iOS 内购:接入 App Store 内购,完成购买、监听、取消、恢复购买与异常重试;本地持久化交易数据实现异常自动补验,后端通过官方 API 校验交易、幂等发放会员权益,有效避免掉单问题;封装统一支付中间层,隔离平台差异,完善订单日志,交易全链路埋点,处理网络异常、购买中断、重复回调等边界场景。
- 后端拓展能力:封装统一接口返回格式、全局异常处理器、请求参数校验;实现用户权限、会员权益模块,做接口鉴权;OCR 识别服务做接口封装,支持图片上传、异步识别、结果缓存;对接 OSS 对象存储,管理视频、海报、图片资源