如何用Python yt-dlp提取YouTube音频?脚本下载视频问题求解
解决yt-dlp Python脚本下载视频而非音频的问题
你的问题出在Python脚本的配置参数不够完整——命令行的--extract-audio其实隐含了「选择最佳音频流」的逻辑,但Python API里仅设置extract_audio: True不足以强制程序只选音频流。
直接用下面的修正脚本即可解决:
import yt_dlp def download_audio(link): # 完善配置参数,明确指定音频流和转码选项 ydl_opts = { 'extract_audio': True, 'format': 'bestaudio/best', # 优先选择最佳质量的音频流 'postprocessors': [{ 'key': 'FFmpegExtractAudio', 'preferredcodec': 'mp3', # 直接转成MP3格式,无需手动改扩展名 'preferredquality': '192', # 音频质量,可选128/192/256等 }], 'outtmpl': '%(title)s.%(ext)s', # 输出文件名格式(可选,保持默认也可以) } with yt_dlp.YoutubeDL(ydl_opts) as ydl: info_dict = ydl.extract_info(link, download=True) print(f"已下载音频:{info_dict['title']}.mp3") download_audio('https://www.youtube.com/watch?v=cJuO985zF8E')
关键修改点说明:
- 添加
format: 'bestaudio/best':强制yt-dlp只抓取音频流,避免选中包含视频的混合流 - 加入
postprocessors配置:调用FFmpeg直接将音频转成MP3(需要你的系统已安装FFmpeg,如果不想转码,删掉这部分即可得到webm格式音频) - 可选的
outtmpl:自定义输出文件名,避免默认的复杂命名
如果不需要转MP3,只想保留webm格式,简化配置如下:
ydl_opts = { 'extract_audio': True, 'format': 'bestaudio/best', }
内容的提问来源于stack exchange,提问作者404
相关产品推荐
相关产品推荐

