download_video.py 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. import html
  2. import subprocess
  3. import time
  4. import requests
  5. from loguru import logger
  6. class DownLoad:
  7. @classmethod
  8. def download_video(cls, video_url, video_path_url):
  9. video = video_path_url + 'video.mp4'
  10. url_type = html.unescape(video_url).split('?')[0]
  11. if ".m3u8" in url_type:
  12. logger.info(f"[+] {video_url}开始下载m3u8格式的视频")
  13. ffmpeg_cmd_oss = [
  14. "ffmpeg",
  15. "-y", # 覆盖输出文件
  16. "-i", video_url, # 输入文件
  17. "-c", "copy", # 复制视频流
  18. "-bsf:a", "aac_adtstoasc", # 转换 AAC 音频格式
  19. video # 输出文件
  20. ]
  21. subprocess.run(ffmpeg_cmd_oss)
  22. return video
  23. else:
  24. try:
  25. for i in range(3):
  26. payload = {}
  27. headers = {}
  28. response = requests.request("GET", video_url, headers=headers, data=payload, timeout=240)
  29. if response.status_code == 200:
  30. # 以二进制写入模式打开文件
  31. with open(f"{video}", "wb") as file:
  32. # 将响应内容写入文件
  33. file.write(response.content)
  34. return video
  35. return video
  36. except Exception:
  37. return video