You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python pytube下载YouTube视频如何获取MP4最高分辨率文件

问题原因

原代码调用video.streams.first()时,pytube默认返回的媒体流列表按码率从低到高排序,第一个结果就是最低码率的3gpp格式低清流,没有做格式、分辨率筛选,所以下载到的文件画质极差。

可直接使用的调整方案

方案1:下载单文件最高清MP4(无需额外依赖)

这个方案筛选音视频预先合并的MP4流,下载完成直接可播放,最高支持720P分辨率,满足普通观看需求。

from pytube import Playlist

p = Playlist('https://www.youtube.com/watch?v=cSKGa_7XJkg&list=PLoGtT1rYE-El8eTpyXUzeFHbRUDUJN1Ag')
print(f'Downloading: {p.title}')

for video in p.videos:
    # 筛选MP4格式、音视频合并的流,按分辨率降序取最高规格
    target_stream = video.streams.filter(
        progressive=True,
        file_extension='mp4'
    ).order_by('resolution').desc().first()
    target_stream.download()
    print(f'下载完成: {video.title}')

关键参数说明:

  • progressive=True:仅筛选音视频封装在同一文件的流,无需后续合并操作
  • file_extension='mp4':强制匹配MP4封装格式,过滤3gpp、webm等其他格式
  • .order_by('resolution').desc().first():对筛选后的流按分辨率从高到低排序,取第一条即最高分辨率结果

方案2:下载平台可选最高分辨率(支持1080P/4K/8K)

YouTube平台1080P及以上分辨率的媒体采用音视频分离存储,没有预先合并的单文件,需要分别下载最高规格的视频轨、音频轨,再通过ffmpeg合并为完整MP4文件。

from pytube import Playlist
import os
import subprocess

p = Playlist('https://www.youtube.com/watch?v=cSKGa_7XJkg&list=PLoGtT1rYE-El8eTpyXUzeFHbRUDUJN1Ag')
print(f'Downloading: {p.title}')

for video in p.videos:
    print(f'正在处理: {video.title}')
    # 下载最高分辨率MP4视频轨
    video_track = video.streams.filter(
        file_extension='mp4',
        only_video=True
    ).order_by('resolution').desc().first()
    temp_video = video_track.download(filename='temp_video.mp4')

    # 下载最高码率MP4音频轨
    audio_track = video.streams.filter(
        file_extension='mp4',
        only_audio=True
    ).order_by('abr').desc().first()
    temp_audio = audio_track.download(filename='temp_audio.mp4')

    # 调用ffmpeg无损合并音视频
    output_file = f'{video.title}.mp4'
    merge_cmd = f'ffmpeg -i "{temp_video}" -i "{temp_audio}" -c:v copy -c:a aac "{output_file}" -y'
    subprocess.run(merge_cmd, shell=True, check=True)

    # 清理临时文件
    os.remove(temp_video)
    os.remove(temp_audio)
    print(f'高清文件下载完成: {output_file}')

注意事项:

  • 使用该方案需要提前安装ffmpeg并添加到系统环境变量,否则合并步骤会执行失败
  • 合并过程采用直接复制流的方式,不会重新编码,没有画质损失,处理速度快

内容的提问来源于stack exchange,提问作者Sorder Mohammad Al- Amin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 10:30:34