centos 7 ffmpeg 批量 转码 mp4 kvm ts shell 懒人系列 -7

29 篇文章 1 订阅
29 篇文章 0 订阅

特别注意:本人很懒就搞了些懒人办法

1.建立个文本。shell.sh,复制下面代码保存。
打开终端(建议直接root用戶运行)。

2.sudo chmod +x sheell.sh

3.sudo ./shell.sh 文件名.avi (扩展名可以任意) 使用方法

4.这段代码 支持H264 h265 支持60针视频

5.shell.sh 文件要和视频文件同一目录,视频文件放多少转多少,批量转码。

6.转换完的文件被保存在finish文件夹中

#!/bin/bash
##i-合并视频
##-change(转换)
##i用法i(./shell.sh $1 $2) $1=mp4要输出的文件格式i $2="" i直接转码i $2="h264" ih264转码i $2="h265" ih265转码i
sudo echo '开始转码'
############################################i选择开始i################################################
read -p "输入转码的格式(mp4|mkv|ts|mp4264|mkv264|ts264|mp4265|mkv265|ts265|mp460|mkv60|ts60|mp4s60|mkvs60|tss60 )?" choice;
case "$choice" in 
  mp4|mkv|ts|mp4264|mkv264|ts264|mp4265|mkv265|ts265|mp460|mkv60|ts60|mp4s60|mkvs60|tss60 ) 
############################################################i###########################################
if [ ! -d "finish" ];then
  mkdir finish
  chmod -R 777 finish
else
echo 'finis文件夹存在'
fi
############################################i################################################
##获取当前目录的函数
axdir=$(cd $(dirname $0); pwd)
##########################################i这部分只转码i########################################
##mp4转码
if [ $choice == "mp4" ]
then

##for循环读取
##$axdir/*  读取文件全名加路径 
for axfile in $axdir/*

do 
##axname文件名带扩展
  axname=$(basename $axfile)
##bxname=文件名不带扩展
  bxname=${axname%.*}
##文件扩展名
  cxname=${axname##*.}

 if [ "$cxname" != "mp4" ];then

ffmpeg -i $axname -vcodec copy -acodec copy $axdir/finish/$bxname.mp4;

  else
      echo '-------------';
fi 

done
##上面循环结束

echo '视频转换完成.mp4'
fi


##mkv转码
if [ $choice == "mkv" ]
then

##for循环读取
##$axdir/*  读取文件全名加路径 
for axfile in $axdir/*

do 
##axname文件名带扩展
  axname=$(basename $axfile)
##bxname=文件名不带扩展
  bxname=${axname%.*}
##文件扩展名
  cxname=${axname##*.}

 if [ "$cxname" != "mkv" ];then

ffmpeg -i $axname -vcodec copy -acodec copy $axdir/finish/$bxname.mkv;

  else
      echo '-------------';
fi 

done
##上面循环结束

echo '视频转换完成.mkv'
fi


##ts转码
if [ $choice == "ts" ]
then

##for循环读取
##$axdir/*  读取文件全名加路径 
for axfile in $axdir/*

do 
##axname文件名带扩展
  axname=$(basename $axfile)
##bxname=文件名不带扩展
  bxname=${axname%.*}
##文件扩展名
  cxname=${axname##*.}

 if [ "$cxname" != "ts" ];then

ffmpeg -i $axname -vcodec copy -acodec copy $axdir/finish/$bxname.ts;

  else
      echo '-------------';
fi 

done
##上面循环结束

echo '视频转换完成.ts'
fi
#####################################i这部分只转码i##########################################

##########################################i这部H264转码i########################################
##mp4转码
if [ $choice == "mp4264" ]
then

##for循环读取
##$axdir/*  读取文件全名加路径 
for axfile in $axdir/*

do 
##axname文件名带扩展
  axname=$(basename $axfile)
##bxname=文件名不带扩展
  bxname=${axname%.*}
##文件扩展名
  cxname=${axname##*.}

 if [ "$cxname" != "mp4" ];then

ffmpeg -i $axname -y -qscale 0 -vcodec libx264 $axdir/finish/$bxname.mp4;

  else
      echo '-------------';
fi 

done
##上面循环结束

echo '视频转换完成.mp4'
fi


##mkv转码
if [ $choice == "mkv264" ]
then

##for循环读取
##$axdir/*  读取文件全名加路径 
for axfile in $axdir/*

do 
##axname文件名带扩展
  axname=$(basename $axfile)
##bxname=文件名不带扩展
  bxname=${axname%.*}
##文件扩展名
  cxname=${axname##*.}

 if [ "$cxname" != "mkv" ];then

ffmpeg -i $axname -y -qscale 0 -vcodec libx264 $axdir/finish/$bxname.mkv;

  else
      echo '-------------';
fi 

done
##上面循环结束

echo '视频转换完成.mkv'
fi


##ts转码
if [ $choice == "ts264" ]
then

##for循环读取
##$axdir/*  读取文件全名加路径 
for axfile in $axdir/*

do 
##axname文件名带扩展
  axname=$(basename $axfile)
##bxname=文件名不带扩展
  bxname=${axname%.*}
##文件扩展名
  cxname=${axname##*.}

 if [ "$cxname" != "ts" ];then

ffmpeg -i $axname -y -qscale 0 -vcodec libx264 $axdir/finish/$bxname.ts;

  else
      echo '-------------';
fi 

done
##上面循环结束

echo '视频转换完成.ts'
fi
#####################################i这部H264转码i##########################################

##########################################i这部H265转码i########################################
##mp4转码
if [ $choice == "mp4265" ]
then

##for循环读取
##$axdir/*  读取文件全名加路径 
for axfile in $axdir/*

do 
##axname文件名带扩展
  axname=$(basename $axfile)
##bxname=文件名不带扩展
  bxname=${axname%.*}
##文件扩展名
  cxname=${axname##*.}

 if [ "$cxname" != "mp4" ];then

ffmpeg -i $axname -y -qscale 0 -vcodec libx265 $axdir/finish/$bxname.mp4;

  else
      echo '-------------';
fi 

done
##上面循环结束

echo '视频转换完成.mp4'
fi


##mkv转码
if [ $choice == "mkv265" ]
then

##for循环读取
##$axdir/*  读取文件全名加路径 
for axfile in $axdir/*

do 
##axname文件名带扩展
  axname=$(basename $axfile)
##bxname=文件名不带扩展
  bxname=${axname%.*}
##文件扩展名
  cxname=${axname##*.}

 if [ "$cxname" != "mkv" ];then

ffmpeg -i $axname -y -qscale 0 -vcodec libx265 $axdir/finish/$bxname.mkv;

  else
      echo '-------------';
fi 

done
##上面循环结束

echo '视频转换完成.mkv'
fi


##ts转码
if [ $choice == "ts265" ]
then

##for循环读取
##$axdir/*  读取文件全名加路径 
for axfile in $axdir/*

do 
##axname文件名带扩展
  axname=$(basename $axfile)
##bxname=文件名不带扩展
  bxname=${axname%.*}
##文件扩展名
  cxname=${axname##*.}

 if [ "$cxname" != "ts" ];then

ffmpeg -i $axname -y -qscale 0 -vcodec libx265 $axdir/finish/$bxname.ts;

  else
      echo '-------------';
fi 

done
##上面循环结束

echo '视频转换完成.ts'
fi
#####################################i这部H265转码i##########################################

##########################################i这部60帧转码i########################################
##mp4转码
if [ $choice == "mp460" ]
then
##for循环读取
##$axdir/*  读取文件全名加路径 
for axfile in $axdir/*

do 
##axname文件名带扩展
  axname=$(basename $axfile)
##bxname=文件名不带扩展
  bxname=${axname%.*}
##文件扩展名
  cxname=${axname##*.}

 if [ "$cxname" != "mp4" ];then

ffmpeg -i $axname -y -c:v h264 -c:a aac -r 60 $axdir/finish/$bxname.mp4;

  else
      echo '-------------';
fi 

done
##上面循环结束

echo '视频转换完成.mp4'
fi


##mkv转码
if [ $choice == "mkv60" ]
then

##for循环读取
##$axdir/*  读取文件全名加路径 
for axfile in $axdir/*

do 
##axname文件名带扩展
  axname=$(basename $axfile)
##bxname=文件名不带扩展
  bxname=${axname%.*}
##文件扩展名
  cxname=${axname##*.}

 if [ "$cxname" != "mkv" ];then

ffmpeg -i $axname -y -c:v h264 -c:a aac -r 60 $axdir/finish/$bxname.mkv;

  else
      echo '-------------';
fi 

done
##上面循环结束

echo '视频转换完成.mkv'
fi


##ts转码
if [ $choice == "ts60" ]
then

##for循环读取
##$axdir/*  读取文件全名加路径 
for axfile in $axdir/*

do 
##axname文件名带扩展
  axname=$(basename $axfile)
##bxname=文件名不带扩展
  bxname=${axname%.*}
##文件扩展名
  cxname=${axname##*.}

 if [ "$cxname" != "ts" ];then

ffmpeg -i $axname -y -c:v h264 -c:a aac -r 60 $axdir/finish/$bxname.ts;

  else
      echo '-------------';
fi 

done
##上面循环结束

echo '视频转换完成.ts'
fi
#####################################i这部60帧转码i#########################################

##########################################i这部s60帧转码i########################################
##mp4转码
if [ $choice == "mp4s60" ]
then
##for循环读取
##$axdir/*  读取文件全名加路径 
for axfile in $axdir/*

do 
##axname文件名带扩展
  axname=$(basename $axfile)
##bxname=文件名不带扩展
  bxname=${axname%.*}
##文件扩展名
  cxname=${axname##*.}

 if [ "$cxname" != "mp4" ];then

ffmpeg -i $axname -c:v libx264 -x264-params "level=4" -preset ultrafast -qp 0 -r 60 $axdir/finish/$bxname.mp4;
##i超级备选项
#ffmpeg -i $axname -c:v libx264 -x264-params "profile=high444:level=5" -preset ultrafast -qp 0 -r 60 $axdir/finish/$bxname.mp4;

  else
      echo '-------------';
fi 

done
##上面循环结束

echo '视频转换完成.mp4'
fi


##mkv转码
if [ $choice == "mkvs60" ]
then

##for循环读取
##$axdir/*  读取文件全名加路径 
for axfile in $axdir/*

do 
##axname文件名带扩展
  axname=$(basename $axfile)
##bxname=文件名不带扩展
  bxname=${axname%.*}
##文件扩展名
  cxname=${axname##*.}

 if [ "$cxname" != "mkv" ];then

ffmpeg -i $axname -c:v libx264 -x264-params "level=4" -preset ultrafast -qp 0 -r 60 $axdir/finish/$bxname.mkv;
##i超级备选项
#ffmpeg -i $axname -c:v libx264 -x264-params "profile=high444:level=5" -preset ultrafast -qp 0 -r 60 $axdir/finish/$bxname.mkv;

  else
      echo '-------------';
fi 

done
##上面循环结束

echo '视频转换完成.mkv'
fi


##ts转码
if [ $choice == "tss60" ]
then

##for循环读取
##$axdir/*  读取文件全名加路径 
for axfile in $axdir/*

do 
##axname文件名带扩展
  axname=$(basename $axfile)
##bxname=文件名不带扩展
  bxname=${axname%.*}
##文件扩展名
  cxname=${axname##*.}

 if [ "$cxname" != "ts" ];then

ffmpeg -i $axname -c:v libx264 -x264-params "level=4" -preset ultrafast -qp 0 -r 60 $axdir/finish/$bxname.ts;
##i超级备选项
#ffmpeg -i $axname -c:v libx264 -x264-params "profile=high444:level=5" -preset ultrafast -qp 0 -r 60 $axdir/finish/$bxname.ts;

  else
      echo '-------------';
fi 

done
##上面循环结束

echo '视频转换完成.ts'
fi
#####################################i这部s60帧转码i#########################################

##############################################i##############################################
echo $choice;;
  n|N ) echo "no";;
  * ) echo "invalid......";;
esac
############################################i选择开始i################################################
chmod -R 777 finish
############################################i选择开始i################################################
exit

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

新生魔王力量

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值