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

Flutter开发中实现TikTok类应用Duet Video合拍功能的方案咨询

Flutter 实现TikTok同款合拍(Duet)功能方案

TikTok合拍的核心逻辑是原视频与用户新录制视频同轨同步播放+录制,最终合并为固定布局的单条视频,音轨完全对齐,结合你已有的技术栈可以按以下步骤实现:

1. 录制页面适配改造

  • 基于现有Img.ly录制页面新增双视图预览层:底层固定播放待合拍的原视频,上层为摄像头实时预览画面,默认配置9:16分辨率下的左右分屏布局,也可扩展支持上下分屏、画中画布局,两个视图强制统一宽高比避免拉伸
  • 新增同步触发逻辑:点击录制按钮的瞬间同时触发原视频播放、摄像头录制、麦克风音频录入三个动作,全程控制三者时间戳差值在100ms以内,避免后期出现音画不同步问题

2. 录制阶段参数统一

  • 用Img.ly SDK录制用户侧画面时,强制锁定分辨率、帧率与原视频完全一致,默认统一为1080*1920 30fps,避免后期合并出现掉帧、变形问题
  • 录制过程中分别暂存两路独立音频:原视频提取的音频流、用户麦克风录入的音频流,不要提前混合,方便后期单独调整音量

3. FFmpeg合成核心逻辑

直接复用你现有的FFmpeg能力即可完成最终合成:

3.1 视频画面合并

左右分屏合成命令示例:
ffmpeg -i original.mp4 -i user_recorded.mp4 -filter_complex "[0:v]scale=540:960[v0];[1:v]scale=540:960[v1];[v0][v1]hstack=inputs=2[v]" -map "[v]" -c:v libx264 -crf 23 temp_video.mp4
需要上下分屏时把hstack替换为vstack,画中画布局用overlay滤镜调整坐标即可。

3.2 音轨混合对齐

ffmpeg -i temp_video.mp4 -i original_audio.aac -i user_audio.aac -filter_complex "[1:a][2:a]amix=inputs=2:duration=shortest[a]" -map 0:v -map "[a]" -c:a aac -b:a 128k final_duet.mp4

3.3 细节对齐优化

如果需要和TikTok完全一致的中间分隔线、原视频作者水印,直接在滤镜链中加drawbox、drawtext参数即可实现。

4. 体验对齐优化

  • 支持原视频变速合拍的话,录制阶段给原视频播放加对应变速参数,后期合成时用户侧视频也同步做变速处理即可
  • 需要支持两路音频单独调节音量的话,在amix滤镜中加weights参数调整两路音频的占比即可

内容的提问来源于stack exchange,提问作者Mukund Jogi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 06:39:04