shell脚本递归转码视频文件通过ffmpeg

#!/bin/bash -e
# author:phpwyl
# url:https://www.cnblogs.com/phpwyl
file_names="$1"
new_root_names="$2"
demoFun() {
  root_name=$1
  new_root_name=$2
  #获取所有的目录
  for file_a in ${root_name}/*; do
    if test -d "$file_a"; then
      project_name="${file_a##*/}"
      new_root_name=$2"/"$project_name
      #创建目录
      if [ ! -d $new_root_name ]; then
        mkdir $new_root_name
      fi
      demoFun $(expr $file_a) $(expr $new_root_name)
    else
      #这里需要进行文件的复制
      project_name="${file_a##*/}"
      #获取后缀
      suffix="${project_name##*.}"
      case "$suffix" in
      "mp4" | "mpg" | "mov")
        #这里进行转码
        sleep 1
        ffmpeg -i $file_a -codec copy $2"/"${project_name%%.*}".ts"
        ;;
      *)
        #这里进行cp
       cp $file_a $2"/"$project_name
        ;;
      esac

    fi
  done
}
#判断是否安装ffmpeg
if [ -f /usr/local/bin/ffmpeg ]; then if [[ -n "$file_names" ]]; then # 判断是否是目录 if test -d "$file_names"; then #递归调用 demoFun $(expr $file_names) $(expr $new_root_names) else echo "参数 【1】 不是目录!" exit 0 fi else echo "请输入参数路径" exit 0 fi else echo "请安装ffmpeg 并在/usr/local/bin下设置环境变量" exit 0 fi
 脚本执行方式:Pffmpeg.sh  /Volumes/xxx    /Volumes/exfat/xxx

posted @ 2022-06-06 19:31  phpwyl  阅读(163)  评论(0编辑  收藏  举报