天天记事 1276 / 2020-04-28 18:08:30
将下面脚本保存到文件(mediainfo),最好放到可PATH变量指定的地址(随意一个可找到的位置即可),之后修改文件掩码为执行权限
chmod 755 mediainfo
之后就能执行了,使用方法:
===========================================
文件转换脚本
===========================================
1. 获取视频尺寸
mediainfo <SourceFilePath>
2. 获取视频转换信息
mediainfo <SourceFilePath> <ToWidth>
3. 视频转换
mediainfo <SourceFilePath> <ToWidth> <SaveFilePath> [ffmpegArguments]
例如:
mediainfo demo.avi
结果
===========================================
视频尺寸: 1024x780
转换例子
mediainfo demo.avi 512 demo-512.mp4 -vcodec libx264 -preset faster -tune film -b:v 300k
脚本代码:
#!/bin/sh
function get_video_size() {
ffmpeg -i "$1" 2>&1| while read line
do
result=$(echo $line | grep "Stream " && grep "Video:")
if [ -n "$result" ]; then
echo $(echo $line |grep -E -o '[0-9]{2,}x[0-9]{2,}')
fi
done
}
function get_video_fit_size() {
if [ $1 -gt $3 ]; then
dw=$3
dh=`echo $2 \* $dw \/ $1 |bc`
echo $dw"x"$dh
else
echo $1x$2
fi
}
if [ -f "$1" ]; then
video_size=`get_video_size "$1"`
if [ -n "$video_size" ]; then
if [ $# == 1 ]; then
clear
echo "==========================================="
echo "视频尺寸: $video_size"
elif [ $# == 2 ]; then
iw=$(echo $video_size |grep -E -o '^[0-9]{2,}')
ih=$(echo $video_size |grep -E -o '[0-9]{2,}$')
vcc_size=`get_video_fit_size $iw $ih $2`
if [ -n $vcc_size ]; then
clear
echo "==========================================="
echo "视频尺寸: $video_size => $vcc_size"
fi
elif [ $# -ge 3 ]; then
iw=$(echo $video_size |grep -E -o '^[0-9]{2,}')
ih=$(echo $video_size |grep -E -o '[0-9]{2,}$')
vcc_size=`get_video_fit_size $iw $ih $2`
if [ -n $vcc_size ]; then
filepath="$1"
savepath="$3"
shift;shift;shift
clear
echo "==========================================="
echo "视频尺寸: $video_size => $vcc_size"
execmd="ffmpeg -y -i $filepath -s $vcc_size $@ $savepath"
echo $execmd
`$execmd`
fi
else
echo "参数错误"
fi
else
echo "不识别的文件"
fi
else
clear
echo "==========================================="
echo "文件转换脚本"
echo "==========================================="
echo "1. 获取视频尺寸"
echo " mediainfo <SourceFilePath>"
echo "2. 获取视频转换信息"
echo " mediainfo <SourceFilePath> <ToWidth>"
echo "3. 视频转换"
echo " mediainfo <SourceFilePath> <ToWidth> <SaveFilePath> [ffmpegArguments]"
fi
上一篇:Windows下视频文件处理脚本
下一篇:HTTP协议下的消息分段