当前位置: 首页 > 教程资源 > FFmpeg 教程 > 正文
使用 FFmpeg 批量转换音视频的高级用法

使用 FFmpeg 批量转换音视频的高级用法

作者:大眼仔~旭 日期:2个月前 (07-28) 评论:0 条

摘要:批量转换视频和媒体文件是可以通过软件和在线工具实现自动化的常见用例之一。要批量转换视频有很多原因,包括: 从视频中提取音轨,创建 MP3 音频文件。例如,您可能想创建讲座或演示的音频版本。 将多种格式的视频转换为 MP4 等统一格式,以提高设备和应用程序之间的兼容性。 通过调整尺寸和压缩设置,实现视频设置标准化。这有助…

批量转换视频和媒体文件是可以通过软件和在线工具实现自动化的常见用例之一。要批量转换视频有很多原因,包括:

  • 从视频中提取音轨,创建 MP3 音频文件。例如,您可能想创建讲座或演示的音频版本。
  • 将多种格式的视频转换为 MP4 等统一格式,以提高设备和应用程序之间的兼容性。
  • 通过调整尺寸和压缩设置,实现视频设置标准化。这有助于释放磁盘空间,同时保持较高的视觉质量。

在本指南中,大眼仔将展示如何使用 FFmpeg 为不同的使用情况批量转换多个视频。

FFmpeg 是一款处理多媒体文件的开源工具。通过其命令行界面,我们可以编写脚本并自动完成整个批量转换过程。

FFmpeg 批量转换音视频

要遵循本指南中的说明,你需要对如何在终端上执行命令有基本的了解。此外,请确保您的系统已安装 FFmpeg。如果尚未安装,可访问 FFmpeg 官方下载页面,为操作系统安装最新的稳定版本。

设置目录结构

在开始之前,请确保已建立适当的目录结构:

  • 创建一个名为 batch 的主文件夹。
  • 在批处理文件夹中,创建两个名为输入和输出的子文件夹。
  • 将所有要转换的视频放入输入文件夹。
  • 在执行任何命令前,请确保导航到 batch 的父目录。

为了执行批量转换,我们将使用 for 循环迭代处理输入文件夹中的每个视频。具体语法因操作系统而异。

使用 FFmpeg 将 MP4 批量转换为 MP3

在第一个示例中,我们将探讨如何使用 FFmpeg 将 MP4 视频批量转换为 MP3。在之前的指南中,大眼仔向你展示了如何将视频转换为 MP3,这次我们将批量转换。

在 Windows 上

导航至批处理目录并执行以下命令:

1
FOR /F "usebackq delims=|" %F IN (`dir /s /b /A:-D "input\*.mp4"`) DO ffmpeg -i "%F" -acodec mp3 "output\%~nF.mp3"

该命令的作用如下:

  • 循环播放输入目录中的 .mp4 文件。%F 代表循环中的每个文件。我们使用 dir /s /b /A:-D 来获取目录中的 .mp4 视频。
  • 每次迭代都会执行 ffmpeg -i “%F” -acodec mp3 “output\%~nF.mp3” 命令。我们使用 -i 选项指定输入文件,使用 -acodec 选项指定 mp3 音频编解码器。最后,我们使用 output\%~nF.mp3 将转换后的文件存储在输出目录中,并使用原始视频的名称为每个文件命名。

根据视频的数量和持续时间,处理时间可能会有所不同。处理完成后,你就可以在输出目录中看到 mp3 音频文件了。

在 Linux 和 Mac (OS X) 上

对于基于 Linux 的系统,包括 Mac OS X,我们可以使用这条命令:

该命令的作用如下:

1
for file in input/*.mp4; do ffmpeg -i "$file" -acodec mp3 "output/$(basename "$file" .mp4).mp3"; done

它在输入目录中启动一个 for 循环。

每次迭代都会执行以下命令:ffmpeg -i “$file” -acodec mp3 “output/$(basename ”$file” .mp4).mp3。我们使用 -i 指定输入文件,使用 -acodec 指定 mp3 音频编解码器,使用 output/$(basename “$file” .mp4).mp3 替换 .mp4 扩展名为 .mp3 来创建输出文件名。

使用 FFmpeg 将多种格式文件批量转换为 MP3

源文件可能不全是 mp4 文件,也可能是不同的文件,例如 .mp4、.mov 或 .avi 文件的集合。要批量转换多种格式,我们可以修改命令如下:

在 Windows 上

1
FOR /F "usebackq delims=|" %F IN (`dir /s /b /A:-D "input\*.mp4" "input\*.mov" "input\*.avi"`) DO ffmpeg -i "%F" -acodec mp3 "output\%~nF.mp3"

我们向目录列表命令传递了两个额外的文件扩展名。您可以根据需要添加任意数量的扩展名,以转换多种格式。

在 Linux/OS X 上

1
for file in input/*.{mp4,mov,avi}; do ffmpeg -i "$file" -acodec mp3 -q:a 3 "output/$(basename "$file" .${file##*.}).mp3"; done

在 Linux 命令中,我们在大括号内指定了扩展名列表。${file##*.} 会提取每个文件的扩展名,然后在输出文件中用 .mp3 替换原来的扩展名。

使用 FFmpeg 将通配符批量转换为 MP3

还可以转换一个目录中的所有文件,无论其扩展名是什么。让我们看看如何做到这一点:

在 Windows 上

1
FOR /F "usebackq delims=|" %F IN (`dir /s /b /A:-D "input\*.*"`) DO ffmpeg -i "%F" -acodec mp3 "output\%~nF.mp3"

我们使用 input\*.* 表达式来处理和转换输入目录内的所有文件,无论其表达式如何。

在 Linux/OS X 上

1
for file in input/*; do ffmpeg -i "$file" -acodec mp3 -q:a 3 "output/$(basename "$file" .${file##*.}).mp3"; done

在此命令中,我们指定 input/* 来处理目录中的所有文件。

请注意,使用通配符可能会尝试转换与 FFmpeg 不兼容的文件。

使用 FFmpeg 将多种格式文件批量转换为 MP4 格式

在第二个用例中,我们将把多种视频格式转换为 MP4。如果你想用一种格式编辑所有文件,或想在浏览器或特定播放器中支持视频文件,这可能会很有用。FFmpeg 可让你轻松转换文件格式,还能循环运行,批量处理转换过程。

在 Windows 上

1
FOR /F "usebackq delims=|" %F IN (`dir /s /b /A:-D "input\*.mov" "input\*.mkv" "input\*.avi" "input\*.flv"`) DO ffmpeg -i "%F" -c:v libx264 -c:a aac "output\%~nF.mp4"

对于每个文件,我们执行以下命令(ffmpeg -i “%F” -c:v libx264 -c:a aac “output\%~nF.mp4” )将其转换为 mp4 并保存到输出目录。在转换过程中,我们使用 libx264 视频编解码器和 AAC 音频编解码器。

在 Linux/OS X 上

1
for file in input/*.{mov,mkv,avi,flv}; do ffmpeg -i "$file" -c:v libx264 -c:a aac "output/$(basename "$file" .${file##*.}).mp4"; done

对于每个输入文件,我们执行命令 ffmpeg -i “$file” -c:v libx264 -c:a aac “output/$(basename ”$file” .${file##*.}).mp4 转换为 mp4 格式并保存到输出目录。

使用 FFmpeg 批量压缩多种格式文件

视频文件会占用大量磁盘空间。清理空间的方法之一是转换视频、调整大小并使用有损压缩编解码器。MP4 是压缩效果最好的格式之一,当分辨率标准化后,文件大小会更小。

在下面的示例中,我们将批量转换视频,把它们的大小调整为 720p,使用 h264 MP4 压缩算法,恒定速率系数 (CFR) 为 23(高压缩,低视觉质量损失)。

在 Windows 上

1
FOR /F "usebackq delims=|" %F IN (`dir /s /b /A:-D "input\*.mov" "input\*.mkv" "input\*.avi" "input\*.flv"`) DO ffmpeg -i "%F" -vf "scale=-1:720" -c:v libx264 -crf 23 -c:a aac "output\%~nF_720p.%~xF"

在这条命令中,我们使用缩放过滤器将视频调整为 720p,-c:v 指定视频编解码器为 libx264,-crf 设置 CRF 为 23,-c:a 使用 AAC 编解码器对音频进行编码。“output/%~nF_720p.%~xF “会将分辨率附加到输出文件的名称中。

在 Linux/OS X 上

1
for file in input/*.{mov,mkv,avi,flv}; do ffmpeg -i "$file" -vf "scale=-1:720" -c:v libx264 -crf 23 -c:a aac "output/$(basename "$file" .${file##*.})_720p.${file##*.}"; done

与 Windows 命令类似,我们使用缩放、-c:v、-crf 和 -c:a 选项来压缩输入视频。output/$(basename “$file” .${file##*.})_720p.${file##*.}”部分会将分辨率附加到输出文件名中。

总结

FFmpeg 是一款功能强大、用途广泛的多媒体处理工具包,可简化视频的批量处理。在本指南中,我们探讨了如何使用 FFmpeg 的命令行界面在基于 Windows 和 Linux 的系统上转换各种视频格式。

声明:大眼仔旭 | 本文采用署名-非商业性使用-相同方式共享 4.0 国际许可协议[CC BY-NC-SA]进行授权
文章名称:《使用 FFmpeg 批量转换音视频的高级用法
文章固定链接:http://www.dayanzai.me/ffmpeg-batch-convert.html
本站资源仅供个人学习交流,请于下载后 24 小时内删除,不允许用于商业用途,否则法律问题自行承担。
转载声明
全部评论: (0条)
^_^ 暂无评论!

发表评论

返回顶部