因为一些视频分发的需求所以写了个ffmepg合并视频的bash脚本,写个文章稍微记录一下。

首先了解一下写之前的原理。

1、ffmpeg合并视频最好是合并ts格式的,如果不是ts格式就需要转化为ts格式,常见的视频格式多为mp4格式,所以默认视频为mp4格式。

2、合并ts格式的两个视频并且输出成mp4

我合成是一个片头文件,以及一堆正片。pre.ts为片头文件,

echo 视频合成脚本
read -p "请输入第一个视频名不含后缀(默认MP4格式):" name
echo "您输入的文件名是:$name"
#转化为ts格式
ffmpeg -i $name.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb $name.ts 
#合并视频
ffmpeg -i "concat:pre.ts|$name.ts" -acodec copy -vcodec copy -absf aac_adtstoasc pre_$name.mp4 

合成之后的文件名会多一个pre_前缀。

如果是两个MP4文件合并可以用下面这个脚本。

echo 视频合成脚本
read -p "请输入第一个视频名不含后缀(默认MP4格式):" name1
read -p "请输入第二个视频名不含后缀:" name2
echo "您输入的文件名是:$name1 , $name2"
ffmpeg -i $name1.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb $name1.ts
ffmpeg -i $name2.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb $name2.ts
ffmpeg -i "concat:$name1.ts|$name2.ts" -acodec copy -vcodec copy -absf aac_adtstoasc $name1_$name2.mp4