You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React在线录屏App:如何通过AWS分片上传合并MP4至S3?

分片录屏上传与AWS视频合并解决方案

一、替代S3 Multipart Upload的分片上传方案

既然S3 Multipart Upload的5MB最小分片限制不符合你的需求,你可以直接用普通对象上传处理小片段:把前端录制的小分片(比如1-2MB级)逐个上传到S3,不需要依赖Multipart API。Laravel后端接收前端传来的分片后,通过AWS SDK直接上传到S3,同时记录每个分片的文件名、顺序编号和所属的用户录制任务ID。

二、AWS视频合并服务推荐

1. AWS Elemental MediaConvert

这是最适配的托管式视频处理服务,支持将S3上的多个视频片段按顺序合并为标准MP4:

  • 所有分片上传完成后,Laravel后端创建MediaConvert作业,指定输入为S3上的分片文件列表(严格按录制顺序排列),输出格式设为MP4,输出路径指向S3目标存储位置。
  • MediaConvert会自动处理分片的编码一致性问题(只要前端录制的分片保持相同分辨率、帧率、编码格式),无需手动处理编码逻辑。
  • 优势:完全托管,支持大规模并发任务,提供作业状态回调,无需维护服务器。

2. AWS Lambda + FFmpeg

如果需要自定义合并逻辑,可采用Lambda运行FFmpeg的方案:

  • 分片上传完成后,Laravel后端触发Lambda函数,函数从S3下载所有分片到临时存储,执行FFmpeg合并命令(例如ffmpeg -f concat -safe 0 -i <(printf "file '%s'\n" ${分片路径列表}) -c copy output.mp4),再将合并后的MP4上传回S3。
  • 注意事项:Lambda临时存储默认512MB,若分片总大小超出需挂载EFS扩展;可使用预打包FFmpeg的Lambda层简化环境配置。
  • 优势:小任务场景成本更低,自定义程度高,适合有特殊合并规则的需求。

三、前后端配合关键要点

  • 前端录制时按固定时长(如10秒)生成小分片,上传时携带任务ID和分片序号,确保后端能正确排序。
  • Laravel后端维护每个录制任务的分片上传状态,待所有分片上传完成后再触发AWS合并服务。
  • 合并完成后,后端可通知前端结果,同时可清理S3上的临时分片文件(按需选择)。

内容的提问来源于stack exchange,提问作者Matteo Robert

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 19:57:37