Python结合FFmpeg实现批量提取视频音频
<div id="navCategory"><h5 class="catalogue">目录</h5><ul class="first_class_ul"><li><a href="#_label0">一、环境准备</a></li><ul class="second_class_ul"><li><a href="#_lab2_0_0">安装 Python</a></li><li><a href="#_lab2_0_1">安装 FFmpeg(关键)</a></li></ul><li><a href="#_label1">二、项目目录结构</a></li><ul class="second_class_ul"></ul><li><a href="#_label2">三、完整 Python 脚本</a></li><ul class="second_class_ul"></ul><li><a href="#_label3">四、运行方式(全平台通用)</a></li><ul class="second_class_ul"></ul></ul></div><p>在日常开发或音频处理场景中,我们经常需要<strong>从大量视频文件中批量提取音频</strong>,例如:</p><ul><li>从课程视频中提取音频</li><li>将短视频转为 MP3</li><li>做语音识别 / 音频分析前处理</li></ul>
<p>本文介绍一种 <strong>使用 Python 调用 FFmpeg</strong> 的通用方案,<strong>同时支持 Windows、macOS 和 Linux</strong>。</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202601/2026113144741611.png" /></p>
<p class="maodian"><a name="_label0"></a></p><h2>一、环境准备</h2>
<p class="maodian"><a name="_lab2_0_0"></a></p><h3>安装 Python</h3>
<p>确保已安装 Python 3.7+</p>
<div class="jb51code"><pre class="brush:bash;">python --version
</pre></div>
<p class="maodian"><a name="_lab2_0_1"></a></p><h3>安装 FFmpeg(关键)</h3>
<p>FFmpeg 是跨平台音视频处理神器,本脚本依赖它。</p>
<p><strong>Windows</strong></p>
<p>1.下载 FFmpeg</p>
<p>2.解压后,将 bin 目录加入 系统环境变量 PATH</p>
<p>3.验证:</p>
<div class="jb51code"><pre class="brush:bash;">ffmpeg -version
</pre></div>
<p><strong>macOS(推荐 Homebrew)</strong></p>
<div class="jb51code"><pre class="brush:bash;">brew install ffmpeg
</pre></div>
<p>验证:</p>
<div class="jb51code"><pre class="brush:bash;">ffmpeg -version
</pre></div>
<p><strong>Linux(Ubuntu / Debian)</strong></p>
<div class="jb51code"><pre class="brush:bash;">sudo apt update
sudo apt install ffmpeg
</pre></div>
<p>CentOS / Rocky:</p>
<div class="jb51code"><pre class="brush:csharp;">sudo yum install ffmpeg
</pre></div>
<p class="maodian"><a name="_label1"></a></p><h2>二、项目目录结构</h2>
<blockquote><p>project/<br />├── v/ # 存放视频文件<br />│ ├── a.mp4<br />│ ├── b.mkv<br />│ └── c.mov<br />├── mp3/ # 输出 MP3 音频<br />└── extract_audio.py</p></blockquote>
<p>支持格式:mp4 / mov / avi / mkv(可自行扩展)</p>
<p class="maodian"><a name="_label2"></a></p><h2>三、完整 Python 脚本</h2>
<div class="jb51code"><pre class="brush:py;">import os
import subprocess
def extract_audio(video_file, output_dir):
# 构建输出文件路径
output_file = os.path.join(
output_dir,
os.path.splitext(os.path.basename(video_file)) + '.mp3'
)
# ffmpeg 命令
command = [
'ffmpeg',
'-i', video_file,
'-vn', # 不处理视频流
'-acodec', 'libmp3lame',# MP3 编码器
'-ab', '192k', # 音频码率
output_file
]
try:
subprocess.run(command, check=True)
print(f"✅ 音频已提取:{output_file}")
except subprocess.CalledProcessError:
print(f"❌ 处理失败:{video_file}")
def process_videos(input_dir, output_dir):
os.makedirs(output_dir, exist_ok=True)
for file_name in os.listdir(input_dir):
if file_name.lower().endswith(('.mp4', '.mov', '.avi', '.mkv')):
video_path = os.path.join(input_dir, file_name)
extract_audio(video_path, output_dir)
if __name__ == "__main__":
input_dir = './v'
output_dir = './mp3'
process_videos(input_dir, output_dir)
</pre></div>
<p class="maodian"><a name="_label3"></a></p><h2>四、运行方式(全平台通用)</h2>
<p>在项目根目录执行:</p>
<div class="jb51code"><pre class="brush:bash;">python extract_audio.py
</pre></div>
<p>运行后效果:</p>
<blockquote><p>mp3/<br />├── a.mp3<br />├── b.mp3<br />└── c.mp3</p></blockquote>
頁:
[1]