以下是一个示例的Bash脚本,可以将给定目录下的所有子目录中的视频文件进行转换:
#!/bin/bash
# 设置转换参数
output_format="mp4" # 输出格式
output_codec="h264" # 输出编码器
# 转换函数
convert_video() {
input_file="$1"
output_file="${input_file%.*}.${output_format}" # 构建输出文件名
# 使用ffmpeg进行转换
ffmpeg -i "$input_file" -c:v $output_codec -c:a copy "$output_file"
}
# 遍历目录函数
traverse_directory() {
directory="$1"
# 遍历目录中的文件和子目录
for file in "$directory"/*; do
if [ -d "$file" ]; then
# 如果是子目录,则递归调用此函数
traverse_directory "$file"
elif [ -f "$file" ]; then
# 如果是文件,则检查文件类型是否为视频
file_type=$(file -b --mime-type "$file")
if [[ $file_type == video/* ]]; then
# 如果是视频文件,则调用转换函数
convert_video "$file"
fi
fi
done
}
# 获取用户输入的目录路径
read -p "请输入目录路径: " input_directory
# 调用遍历目录函数开始转换
traverse_directory "$input_directory"
在此示例中,脚本首先定义了要转换的视频的输出格式和编码器,然后定义了两个函数:convert_video
用于将单个视频文件进行转换,traverse_directory
用于遍历目录并调用convert_video
函数。最后,脚本从用户输入中获取目录路径,并调用traverse_directory
函数开始转换。