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

ffmpeg实现多个MP4文件拼接同时叠加stdin图像流的解决方案

可行方案

方案说明

GoPro同一段拍摄生成的分片文件编码参数完全一致,优先使用FFmpeg的concat分离器实现无损快速拼接,无需对原视频分片重新编码,处理效率最高,且兼容你原有Python图像流叠加的逻辑。

步骤1:准备分片列表

按播放顺序将所有分片路径写入一个文本文件(例如命名为input_list.txt),格式如下:

file 'GH070061.MP4'
file 'GH080061.MP4'
file 'GH090061.MP4'

如果使用bash环境,也可以直接通过命令自动生成排序后的列表,无需手动创建文件:

printf "file '%s'\n" ./GH*.MP4 | sort > input_list.txt

步骤2:执行拼接+叠加命令

基础版本(无需保留特殊数据流)

ffmpeg -y -f concat -safe 0 -i input_list.txt \
-f rawvideo -framerate 10.0 -s 1920x1080 -pix_fmt rgba -i - \
-r 30 \
-filter_complex "[0:v][1:v]overlay,scale=-1:720" \
-vcodec libx264 -crf 18 -preset veryfast \
-acodec aac -b:a 192k \
output.mp4

进阶版本(保留GoPro未知编码数据流)

添加流映射参数即可直接复制所有GoPro特有的时间码、运动传感器、位置等未知编码数据流:

ffmpeg -y -f concat -safe 0 -i input_list.txt \
-f rawvideo -framerate 10.0 -s 1920x1080 -pix_fmt rgba -i - \
-r 30 \
-filter_complex "[0:v][1:v]overlay,scale=-1:720[v]" \
-map "[v]" -vcodec libx264 -crf 18 -preset veryfast \
-map 0:a -c:a copy \
-map 0:d -c:d copy \
output.mp4

参数说明

  • -f concat -safe 0:启用concat分离器,允许读取任意路径的输入文件
  • -map 0:a -c:a copy:直接复制原分片的音频流,无需重新编码
  • -map 0:d -c:d copy:直接复制原分片的所有数据类流,包含你提到的unknown codec流,完整保留GoPro拍摄的元数据
  • 所有图像流叠加逻辑和你原有命令完全一致,Python端无需做任何调整

免文本文件方案(仅bash环境可用)

如果不想生成中间的列表文件,可以使用进程替换直接传入排序后的分片列表:

ffmpeg -y -f concat -safe 0 -i <(printf "file '%s'\n" ./GH*.MP4 | sort) \
-f rawvideo -framerate 10.0 -s 1920x1080 -pix_fmt rgba -i - \
-r 30 \
-filter_complex "[0:v][1:v]overlay,scale=-1:720[v]" \
-map "[v]" -vcodec libx264 -crf 18 -preset veryfast \
-map 0:a -c:a copy \
-map 0:d -c:d copy \
output.mp4

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 04:39:02