如何用Pytube获取320kbps比特率的YouTube音频并转为MP3?
使用Pytube获取可转换为320kbps MP3的YouTube音频
问题根源
你之前使用的progressive=True流是音视频合并流,这类流的音频比特率上限极低(通常在128-160kbps之间),所以无论怎么转换,都无法得到320kbps的MP3。YouTube的高比特率音频仅存在于单独的音频流(DASH流)中。
解决方案
要实现需求,需要分两步:下载YouTube提供的最高质量音频流,再转换为指定320kbps的MP3。
1. 下载最高质量的单独音频流
使用Pytube过滤仅音频的流,并按比特率降序选择最高质量的流:
from pytube import YouTube # 替换为你的YouTube视频链接 yt_link = YouTube("https://www.youtube.com/watch?v=xxx") download_folder = "你的保存路径" # 筛选仅音频流,按比特率从高到低排序,取第一个 highest_audio_stream = yt_link.streams.filter(only_audio=True).order_by("bitrate").desc().first() # 下载音频流(默认保存为mp4容器格式) audio_file = highest_audio_stream.download(output_path=download_folder)
你也可以先查看所有可用音频流的详细信息,手动选择特定itag:
for stream in yt_link.streams.filter(only_audio=True): print(f"itag: {stream.itag}, 比特率: {stream.bitrate}, 格式: {stream.mime_type}")
常见高比特率音频流itag参考:
251:Opus编码,160kbps(YouTube目前提供的最高比特率音频流之一)141:AAC编码,256kbps140:AAC编码,128kbps
2. 转换为320kbps MP3
使用MoviePy转换时,通过bitrate参数指定输出比特率为320kbps:
from moviepy.editor import AudioFileClip # 直接加载音频文件,无需加载视频 audio_clip = AudioFileClip(audio_file) # 指定输出MP3的比特率为320k output_mp3 = f"{download_folder}\\{yt_link.title}.mp3" audio_clip.write_audiofile(output_mp3, bitrate="320k") # 释放资源 audio_clip.close()
注意事项
如果YouTube提供的原音频流比特率低于320kbps,转换后的MP3只是强制提升比特率,实际音质不会变好,仅文件体积增大。因此优先选择YouTube提供的最高质量音频流是关键。
内容的提问来源于stack exchange,提问作者Gishub
相关产品推荐
相关产品推荐

