特别注意:本人很懒就搞了些懒人办法
1.建立个文本。shell.sh,复制下面代码保存。
打开终端(建议直接root用戶运行)。
2.sudo chmod +x sheell.sh
3.sudo ./shell.sh 文件名.avi (扩展名可以任意)
4.使用方法:支持wmv和mp4提取音频,自动转换成mp3
5.shell.sh 文件要和视频文件同一目录
6.转换完的文件被保存在finish文件夹中
7.注意事项,两段或几段视频的分辨率,音频的采样率,要一致。不一致会报错。
8.支持多段视频或音频的合并,放在同一个文件夹自动合并。
#!/bin/bash
#i-视频-音频 合并( mp4 mkv ts mp3)
##获取当前目录的函数
axdir=$(cd $(dirname $0); pwd)
touch merge.txt
echo ' '>merge.txt
############################################i################################################
##for循环读取
##$axdir/* 读取文件全名加路径
for axfile in $axdir/*
do
##axname文件名带扩展
axname=$(basename $axfile)
##bxname=文件名不带扩展
bxname=${axname%.*}
##文件扩展名
cxname=${axname##*.}
if [[ "$cxname" == "mp4" ]]||[[ "$cxname" == "mkv" ]]||[[ "$cxname" == "ts" ]]||[[ "$cxname" == "mp3" ]];then
sed -i '$a''file '"$axname" merge.txt
fi
done
##上面循环结束
##获取当前目录的函数
axdir=$(cd $(dirname $0); pwd)
##for循环读取
##$axdir/* 读取文件全名加路径
for axfile in $axdir/*
do
##axname文件名带扩展
axname=$(basename $axfile)
##bxname=文件名不带扩展
bxname=${axname%.*}
##文件扩展名
cxname=${axname##*.}
##-merge(合并)############################################
if [ $cxname == "mkv" ]
then
ffmpeg -f concat -i merge.txt -c copy $axdir/finish/$bxname.mkv
echo '视频合并完成'$2'.mkv'
fi
if [ $cxname == "mp4" ]
then
ffmpeg -f concat -i merge.txt -c copy $axdir/finish/$bxname.mp4
echo '视频合并完成'$2 '.mp4'
fi
if [ $cxname == "ts" ]
then
ffmpeg -f concat -i merge.txt -c copy $axdir/finish/$bxname.ts
echo '视频合并完成'$2 '.ts'
fi
##i-不支持中文歌名-有可能提示出错不过文件可以用
if [ $cxname == "mp3" ]
then
ffmpeg -f concat -i merge.txt -acodec copy $axdir/finish/$bxname.mp3
echo '音频合并完成'$2 '.mp3'
fi
##-merge(合并)############################################
done
##上面循环结束
############################################i################################################
rm -rf merge.txt
exit