一个脚本合并目录下所有视频并获取子视频时间节点【ffmpeg】

76 阅读1分钟
%!/bin/bash


# 移动所有子文件夹中.mp4文件到目录下
find ./ -name "*.mp4" | xargs -I file mv file ./

echo "修改所有视频名称"
rename -v 's/ /./' *.mp4
rename -v 's/,/./' *.mp4
rename -v 's/:/./' *.mp4
rename -v 's/【/./' *.mp4
rename -v 's/】//' *.mp4
rename -v 's/!/!/' *.mp4
rename -v 's/(/(/' *.mp4
rename -v 's/)/)/' *.mp4

echo "获取所有视频信息"
find . -type f -name "*.mp4" | sort | awk '{sub(/\.\//,""); print "file '\''" $1 "'\''"}' > vmerger.txt

echo "合并本文件所有视频"
ffmpeg -f concat -safe 0 -i vmerger.txt -c copy output.mp4

# 获取所有视频时间节点问题
echo 'l=$(ffmpeg -i $1 2>&1 | grep 'Duration' | cut -d "'" "'" -f 4 | sed s/,//);echo "${1:2} ${l:0:8}"' > ./ff
chmod +x ./ff
find . -type f -name "*.mp4" | sort | awk '{system("./ff " $1)}' > time.txt