ffmpeg 视频拼接命令汇总

1,451 阅读1分钟

拼接

ffmpeg -i 540_header.mp4 -i 540_body.mp4 -filter_complex "[0:v:0][0:a:0][1:v:0][1:a:0]concat=n=2:v=1:a=1[outv][outa]" -map "[outv]" -map "[outa]" output.mp4

增加unsafe参数,忽略分辨率,sar值等不同

ffmpeg -i 360_head.mp4 -i 360_body.mp4 -filter_complex "[0:v:0][0:a:0][1:v:0][1:a:0]concat=n=2:v=1:a=1:unsafe=1[outv][outa]" -map "[outv]" -map "[outa]" output.mp4

修改分辨率

ffmpeg -i head.mp4 -vf scale=200:400,setsar=1:1 video_640x480.mp4

修改sar值

ffmpeg -i head.mp4 -vf setsar=9:16 video_640x480.mp4

待解决问题

  1. sar值修改为什么有时会不生效(可能是被强制纠正了)
  2. 分辨率和sar值的关系(修改分辨率和sar有独立的命令修改,不会同步)
  3. demuxer,协议,和滤镜拼接的区别不是太理解

参考文档: 官方文档 stackoverflow