使用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