如何下载stream流视频

(大概

使用stream参数进行流式下载

import requests

headers = {
    "accept": "*/*",
    "range": "bytes=0-",
    "sec-fetch-dest": "video",
}
url = "https://xxx.com/84007e45-e3d0-4658-9d70-d24a4a65603c.mp4"
response = requests.get(url, headers=headers, stream=True)
with open('1.mp4', 'ab') as fp:
    for i in response.iter_content(chunk_size=1024):
        print("写入!")
        fp.write(i)

几个点需要说明一下:

  • response的响应码是206
    • 当然也可能是这个站是206,
  • 请求头的”range”: “bytes=0-“,
    • 用于告诉服务器从视频的哪一段开始获取
    • 不传则无法正常下载
  • 参数stream=True:
    • 用于让requests进行流式下载,不是等待所有都下完才操作,而是每下载到chunk_size的字节,就对其进行操作,比如写入文件中
    • 如果不适用stream,则会一直等待,造成卡死的假象,其实是在下载视频,下完了才继续走


评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注