使用shell实现 判断给定文件夹及子文件夹下的视频文件是否为avc编码 如果是 调用ffmpeg -i 文件名 -c:v libx265 转换到当前文件所在文件夹下新建的h265文件夹下 视频名保持一致 扩展名统一为mp4 如果ffmpeg编码命令执行成功 最终删除原始文件

#!/bin/bash

# 检查是否提供了文件夹路径
if [ "$#" -ne 1 ]; then
    echo "用法: $0 <文件夹路径>"
    exit 1
fi

# 获取输入的文件夹路径
input_dir="$1"

# 创建 h265 文件夹
output_dir="$input_dir/h265"
mkdir -p "$output_dir"

# 遍历文件夹及子文件夹中的所有文件
find "$input_dir" -type f | while read -r file; do
    # 检查文件是否为视频文件
    if [[ "$file" =~ \.(mp4|mkv|avi|mov|flv|wmv)$ ]]; then
        # 检查视频编码是否为 AVC
        codec=$(ffprobe -v error -select_streams v:0 -show_entries stream=codec_name -of default=noprint_wrappers=1:nokey=1 "$file")
        
        if [ "$codec" == "h264" ]; then
            # 获取文件名和扩展名
            filename=$(basename "$file")
            # 生成输出文件的路径
            output_file="$output_dir/${filename%.*}.mp4"
            # 转换视频编码
            ffmpeg -i "$file" -c:v libx265 "$output_file" -y
            
            # 检查 ffmpeg 命令是否成功执行
            if [ $? -eq 0 ]; then
                echo "转换成功: $file -> $output_file"
                # 删除原始文件
                rm "$file"
                echo "已删除原始文件: $file"
            else
                echo "转换失败: $file"
            fi
        fi
    fi
done