在 Linux 中转换多个文件的 FFMPEG 脚本
在处理媒体文件时,通常会发现自己需要批量转换多个文件。在视频编辑、音频处理甚至简单地组织媒体库等领域尤其如此。此类任务的核心强大工具通常是 FFMPEG,这是一种多功能开源软件,可以处理几乎所有视频和音频格式。了解如何通过 shell 脚本来利用 FFMPEG 可以显着加快您的工作流程。
在本教程中您将学习:
- 如何创建一个基本脚本来使用 FFMPEG 根据文件扩展名转换多个文件。
- 如何编写脚本来转换特定目录中的所有文件,无论其扩展名如何。
FFMPEG 脚本简介
FFMPEG 是一个功能强大的命令行工具,允许操作音频和视频文件。它支持各种编解码器,可用于转换、压缩甚至流媒体等任务。编写脚本来自动化 FFMPEG 流程可以节省时间并提高工作效率,尤其是在处理大量文件时。 Linux 中的 Bash 脚本提供了一种可访问且有效的方法来实现此目的。在本教程中,我们将探讨如何在脚本中使用 FFMPEG 来批量处理媒体文件的两个示例。
根据扩展名转换文件:在第一个示例中,我们将创建一个脚本,将目录中特定扩展名的所有文件转换为不同的格式。当您需要将整个媒体文件集合转换为更兼容或压缩的格式时,这特别有用。
#!/bin/bash # Specify the input and output formats input_format="mp4" output_format="mkv" # Loop through all files with the input format for file in *.$input_format; do # Extract the base name without the extension base_name=$(basename "$file" .$input_format) # Construct the output file name output_file="${base_name}.${output_format}" # Use ffmpeg to convert the file echo "Converting file: $file" ffmpeg -loglevel quiet -i "$file" "$output_file" echo "Converted $file to $output_file" done
此脚本循环遍历当前目录中的所有
.mp4
文件,将它们转换为.mkv
格式。basename
命令提取不带扩展名的文件名,允许脚本创建具有所需输出格式的新文件名。根据不同文件类型的需要调整input_format
和output_format
变量。转换特定目录中的所有文件:第二个示例演示如何转换特定目录中的所有文件。当目录包含各种类型的媒体文件并且您希望将它们全部转换为单一格式时,此方法非常有用。
#!/bin/bash # Directory containing the media files directory="/path/to/your/media/files" # update your directory output_format="avi" # Change to the specified directory cd "$directory" # Loop through all files in the directory for file in *; do # Skip directories if [ -d "$file" ]; then continue fi # Extract the base name and extension base_name=$(basename "$file") extension="${file##*.}" # Construct the output file name output_file="${base_name%.*}.${output_format}" # Use ffmpeg to convert the file echo "Converting file: $file" ffmpeg -loglevel quiet -i "$file" "$output_file" echo "Converted $file to $output_file" done
此脚本更改到指定目录并将其中的每个文件转换为
.avi
格式。在继续转换之前,它会检查每个项目以确保它是文件而不是目录。可以调整脚本以排除某些文件类型或根据文件类型应用不同的转换设置。
结论
通过 Linux shell 脚本使用 FFMPEG 批量处理媒体文件可以显着简化您的工作流程。无论您处理的是特定类型的文件还是目录中的不同集合,这些脚本都为自动执行转换任务提供了起点。请记住,FFMPEG 是一种高度通用的工具,这些脚本可以进一步自定义以包含各种转换参数,例如比特率调整、编解码器更改,甚至添加水印。