特别注意:因为懒所以懒,做个shell一键执行。
1.建立个文本,改个扩展名shell.sh,复制下面代码-保存。
打开终端(建议直接root用戶运行)。
2.sudo chmod +x sheell.sh
3.sudo ./shell.sh 视频名.xxx (使用运行即可)
4.完成的文件在finish文件夹里
5.用法 shell.sh 视频名.xxx 注意这2个文件放在同一个文件夹里
6.测试环境 centos7 linux
#!/bin/bash
##i-bash是标准的shell标头
##i-
##i-判断文件目录是否存在,不存在就创建
if [ ! -d "finish" ];then
mkdir finish
chmod -R 777 finish
#else
#echo 'finis文件夹存在'
fi
##获取当前目录的函数
axdir=$(cd $(dirname $0); pwd)
##i-读取命令返回值写入文本
touch merge.txt
echo ' '>merge.txt
##读取运行命令的返回值
check_results=`ffmpeg -i $1 2>&1`
for i in $check_results
do
sed -i '$a'"$i" merge.txt
done
##判断程序是否执行成功
if [ "$?" == "0" ]; then
echo '命令运行成功'
else
echo '命令运行失败'
fi
##建立新文本
touch 1.txt
touch 2.txt
##截取文本后21行写入文本
echo $(tail -n 9 merge.txt)>2.txt
##读取文本第一行
x2line=$(awk 'NR==1' 2.txt)
##获取第三位的字串值
echo ${x2line:0:3}
if [ "${x2line:0:3}" == "pic" ];then
echo "i可以执行i";
else
echo "i不可以执行i";
exit
fi
##建立新文本
touch 1.txt
##截取文本后21行写入文本
echo $(tail -n 51 merge.txt)>1.txt
##读取文本第一行
x1line=$(awk 'NR==1' 1.txt)
##i从右向左最后一个#号截取
x2line=${x1line#*#};
##获取第三位的字串值
axtrack=${x2line:2:1};
if [ "$axtrack" == "2" ];then
axmap="-map 0:1";
fi
if [ "$axtrack" == "3" ];then
axmap="-map 0:1";
bxmap="-map 0:2";
fi
if [ "$axtrack" == "4" ];then
axmap="-map 0:1";
bxmap="-map 0:2";
cxmap="-map 0:3";
fi
if [ "$axtrack" == "5" ];then
axmap="-map 0:1";
bxmap="-map 0:2";
cxmap="-map 0:3";
dxmap="-map 0:4";
fi
if [ "$axtrack" == "6" ];then
axmap="-map 0:1";
bxmap="-map 0:2";
cxmap="-map 0:3";
dxmap="-map 0:4";
exmap="-map 0:5";
fi
if [ "$axtrack" == "7" ];then
axmap="-map 0:1";
bxmap="-map 0:2";
cxmap="-map 0:3";
dxmap="-map 0:4";
exmap="-map 0:5";
fxmap="-map 0:6";
fi
ffmpeg -i $1 -map 0:0 $axmap $bxmap $cxmap $dxmap $exmap $fxmap -vcodec copy -acodec copy $axdir/finish/$1;
rm -rf merge.txt
rm -rf 1.txt
rm -rf 2.txt
exit
处理前
处理后