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

如何修改pytube中的下载分块大小以提升进度回调频率?

修改Pytube下载分块大小以频繁触发进度回调

Pytube默认的下载分块大小为9MB(9437184字节),每次下载完成一个分块才会调用on_progress回调函数。要让回调更频繁触发,只需调小这个分块大小,以下是两种实现方式:

方法一:直接修改全局分块常量

通过修改pytube.request.DEFAULT_CHUNK_SIZE的值,全局改变所有下载任务的分块大小:

from pytube import YouTube
from pytube.request import DEFAULT_CHUNK_SIZE

# 自定义分块大小,比如设置为1MB(1048576字节),可按需调整
DEFAULT_CHUNK_SIZE = 1048576

def on_progress(stream, chunk, bytes_remaining):
    total_size = stream.filesize
    bytes_downloaded = total_size - bytes_remaining
    percentage_of_completion = bytes_downloaded / total_size * 100
    print(f"下载进度: {percentage_of_completion:.2f}%")

def main(url):
    yt = YouTube(url, on_progress_callback=on_progress)
    video = yt.streams.get_highest_resolution()
    print(f"视频总大小: {video.filesize / 1048576:.2f}MB")
    video.download()

if __name__ == "__main__":
    main("你的YouTube视频URL")

方法二:临时修改分块大小(不影响全局)

如果不想全局修改分块大小,可以在下载任务前后临时调整,完成后恢复原值:

from pytube import YouTube

def on_progress(stream, chunk, bytes_remaining):
    total_size = stream.filesize
    bytes_downloaded = total_size - bytes_remaining
    percentage_of_completion = bytes_downloaded / total_size * 100
    print(f"下载进度: {percentage_of_completion:.2f}%")

def main(url):
    import pytube.request
    # 保存原始分块大小
    original_chunk_size = pytube.request.DEFAULT_CHUNK_SIZE
    # 设置临时分块大小为512KB(524288字节)
    pytube.request.DEFAULT_CHUNK_SIZE = 524288

    yt = YouTube(url, on_progress_callback=on_progress)
    video = yt.streams.get_highest_resolution()
    print(f"视频总大小: {video.filesize / 1048576:.2f}MB")
    video.download()

    # 恢复原始分块大小(可选)
    pytube.request.DEFAULT_CHUNK_SIZE = original_chunk_size

if __name__ == "__main__":
    main("你的YouTube视频URL")

注意事项

  • 分块大小不宜设置过小,否则会增加网络请求次数,可能降低下载速度,甚至触发服务器的请求频率限制。
  • 若在新版本Pytube中找不到DEFAULT_CHUNK_SIZE,可查看pytube/request.py源码,定位到分块大小的定义变量。

内容的提问来源于stack exchange,提问作者Mohammed Mahdi Djaballah

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 03:53:01