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

如何用ffmpeg正确拼接25fps 1920x1080的普通视频与延时摄影视频

确认视频兼容性与正确拼接方法

一、先验证两个视频的兼容性

用ffmpeg自带的ffprobe工具检查核心参数是否完全匹配:

  • 检查视频流关键参数:
    分别执行以下命令分析两个视频:
    ffprobe -v error -show_streams input1.mp4
    ffprobe -v error -show_streams input2.mp4
    
    重点核对以下字段必须完全一致:
    • codec_name(视频编码,例如h264)
    • width/height(分辨率,需均为1920x1080)
    • r_frame_rate(帧率,必须是25/1)
    • pix_fmt(像素格式,例如yuv420p)
  • 确认延时摄影视频的帧完整性:
    检查输入2的实际帧数是否符合预期:
    ffprobe -v error -count_frames -show_entries stream=nb_read_frames input2.mp4
    
    用ffprobe -v error -show_entries format=duration input2.mp4获取视频时长,计算理论帧数:时长×25,如果实际帧数远小于理论值,说明生成延时摄影时就出现了错误,需要重新生成。

二、正确拼接的解决方案

方案1:统一编码后用concat协议拼接(推荐)

如果两个视频参数存在差异,先转码为统一标准再拼接:

  1. 分别转码两个视频,确保参数一致:
    ffmpeg -i input1.mp4 -c:v libx264 -r 25 -s 1920x1080 -pix_fmt yuv420p -an temp1.mp4
    ffmpeg -i input2.mp4 -c:v libx264 -r 25 -s 1920x1080 -pix_fmt yuv420p -an temp2.mp4
    
    (-an用于移除音频,若要保留输入1的音频,去掉第一个命令中的-an即可)
  2. 创建filelist.txt文件,内容如下:
    file 'temp1.mp4'
    file 'temp2.mp4'
    
  3. 执行拼接命令:
    ffmpeg -f concat -safe 0 -i filelist.txt -c copy output.mp4
    

方案2:直接用concat滤镜拼接(参数完全匹配时使用)

如果确认两个视频所有核心参数一致,可直接用滤镜拼接,避免转码损耗:

ffmpeg -i input1.mp4 -i input2.mp4 -filter_complex "[0:v][1:v]concat=n=2:v=1:a=0[v]" -map "[v]" output.mp4

(若要保留音频,将a=0改为a=1,并添加-map "[a]",前提是输入1的音频参数无异常)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 11:31:11