前言
假设你有几百上千个短视频片段,想要将他们合成一个大的视频,这时候ffmpeg就能帮上忙了,ffmpeg是一个多媒体处理工具,linux中(termux也可以)可通过包管理器直接安装。三丰查了一下简单用法,写了一个简单的shell函数用于快速连接视频片段,具体如下:
利用ffmpeg编写的shell函数
# 连接视频片段
function catv() {
[[ "$1" == "" ]] || [[ "$1" == "-h" ]] && echo "usage: catv [1.mp4, 2.mp4, ...] target.mp4" && return 1
j=1 # 视频片段计数
# 获取除了最后一个参数外的参数
for i in ${@:1:-1};do
# 将片段转换为ts格式,以便直接连接
ffmpeg -i $i -vcodec copy -acodec copy -vbsf h264_mp4toannexb $j.ts
let j++
done
arg="concat:" # 最终连接的参数
for i in `seq 1 $[j-1]`; do
arg=${arg}$i.ts\|
done
ffmpeg -i $arg -acodec copy -vcodec copy -absf aac_adtstoasc ${@: -1}
rm -rf *.ts
return 0
}
使用时只需将上述函数粘贴至shell自定义配置文件中source一下即可,之后可以这样调用:
catv *.mp4 target.mp4