当前位置: 首页 > news >正文

Mac下载bilibili视频

安装

  1. 安装 yt-dlp

    brew install yt-dlp
    
  2. 安装FFmpeg

    用于合并音视频流、转码等操作

    brew install ffmpeg
    

使用

下载单个视频
  1. 查看可用格式

    yt-dlp -F  --cookies-from-browser chrome "https://www.bilibili.com/video/BV15B4y1G7F3?spm_id_from=333.788.recommend_more_video.-1&vd_source=6d42abad8703c58f028f7f53a5be37c0"
    
    ID     EXT RESOLUTION FPS │   FILESIZE    TBR PROTO │ VCODEC           VBR ACODEC       ABR
    ───────────────────────────────────────────────────────────────────────────────────────────
    30216  m4a audio only     │ ≈  1.48MiB    46k https │ audio only           mp4a.40.5    46k
    30232  m4a audio only     │ ≈  3.21MiB   100k https │ audio only           mp4a.40.2   100k
    30280  m4a audio only     │ ≈  5.32MiB   167k https │ audio only           mp4a.40.2   167k
    30251  m4a audio only     │ ≈ 72.77MiB  2277k https │ audio only           flac       2277k
    30016  mp4 640x360     29 │ ≈ 11.31MiB   354k https │ avc1.64001E     354k video only
    100022 mp4 640x360     30 │ ≈  9.69MiB   303k https │ av01.0.01M.08   303k video only
    100109 mp4 640x360     30 │ ≈  7.31MiB   229k https │ hev1.1.6.L120   229k video only
    30032  mp4 852x480     29 │ ≈ 25.29MiB   791k https │ avc1.64001F     791k video only
    100023 mp4 852x480     30 │ ≈ 13.43MiB   420k https │ av01.0.04M.08   420k video only
    100110 mp4 852x480     30 │ ≈ 11.52MiB   360k https │ hev1.1.6.L120   360k video only
    30064  mp4 1280x720    29 │ ≈ 52.62MiB  1647k https │ avc1.640028    1647k video only
    100024 mp4 1280x720    30 │ ≈ 26.11MiB   817k https │ av01.0.05M.08   817k video only
    100111 mp4 1280x720    30 │ ≈ 21.32MiB   667k https │ hev1.1.6.L120   667k video only
    30080  mp4 1920x1080   29 │ ≈ 84.02MiB  2629k https │ avc1.640032    2629k video only
    100026 mp4 1920x1080   30 │ ≈ 52.86MiB  1654k https │ av01.0.08M.08  1654k video only
    100113 mp4 1920x1080   30 │ ≈ 44.88MiB  1404k https │ hev1.1.6.L150  1404k video only
    100144 mp4 1920x1080   59 │ ≈ 56.37MiB  1764k https │ hev1.1.6.L150  1764k video only
    100028 mp4 1920x1080   60 │ ≈ 59.68MiB  1867k https │ av01.0.09M.08  1867k video only
    30116  mp4 1920x1080   62 │ ≈138.18MiB  4324k https │ avc1.640032    4324k video only
    100029 mp4 3840x2160   60 │ ≈233.22MiB  7298k https │ av01.0.13M.08  7298k video only
    30120  mp4 3840x2160   62 │ ≈417.50MiB 13064k https │ avc1.640034   13064k video only
    100145 mp4 3840x2160   62 │ ≈239.33MiB  7489k https │ hev1.1.6.L153  7489k video only
    30127  mp4 7680x4320   29 │ ≈411.37MiB 12873k https │ hev1.1.6.L180 12873k video only
    100032 mp4 7680x4320   30 │ ≈379.13MiB 11864k https │ av01.0.16M.08 11864k video only
    
  2. 下载指定分辨率视频

    // 100032 map4数据的ID
    // 30280 m4a数据的ID
    // --merge-output-format 使用ffmpeg合并mp4+m4a
    yt-dlp -f 100032+30280 --merge-output-format mp4 --cookies-from-browser chrome "https://www.bilibili.com/video/BV15B4y1G7F3/?vd_source=6d42abad8703c58f028f7f53a5be37c0"
    
  3. 动态选择分辨率

    yt-dlp -f "bestvideo[height=2160][vcodec^=avc1]+bestaudio" --merge-output-format mp4 --cookies-from-browser chrome "https://www.bilibili.com/video/BV15B4y1G7F3/?vd_source=6d42abad8703c58f028f7f53a5be37c0"
    
下载合集
  1. 命令

    yt-dlp -f "bestvideo+bestaudio/best" --merge-output-format mp4 "合集url"
    
自动化下载
  1. 脚本

    import subprocess
    import sysdef main(input_file):try:with open(input_file, 'r', encoding='utf-8') as urls:for url in urls:print("url:", url)  subprocess.run([  # 此处改为 4 个空格缩进"yt-dlp","-f", "bestvideo+bestaudio/best","-o", "%(playlist_title)s/%(title)s.%(ext)s",  # 通过 %(playlist_title)s 变量指定合集名称作为文件夹名,%(title)s 作为文件名"--concurrent-fragments","4", # 多线程下载"--merge-output-format", "mp4","--cookies-from-browser", "chrome",url.strip()  # 建议添加 strip() 去除 URL 末尾换行符])except FileNotFoundError:print(f"错误:文件 '{input_file}' 不存在")except Exception as e:print(f"其他错误:{e}")if __name__ == "__main__":if len(sys.argv) != 2:print("用法:python script.py <文件路径>")sys.exit(1)main(sys.argv[1])  # sys.argv[1] 为第一个参数(文件路径)
    
  2. 使用

    python3 脚本名 下载地址文本
    
    https://www.bilibili.com/video/BV15B4y1G7F3
    https://www.bilibili.com/video/BV1Ts4y1W7v4
    https://www.bilibili.com/video/BV1mv4y1y7wG
    https://www.bilibili.com/video/BV18T421Y7fA
    https://www.bilibili.com/video/BV13q421c7mY
    

yt-dlp参数解析

基础参数
  1. 格式选择与画质控制

    • -f/--format:指定下载格式(支持动态筛选器或固定ID)

      # 下载最佳视频+最佳音频(自动合并)
      yt-dlp -f "bestvideo+bestaudio" URL# 下载4K分辨率(H.264编码)
      yt-dlp -f "bestvideo[height=2160][vcodec^=avc1]" URL# 列出所有可用格式(ID、分辨率、编码)
      yt-dlp -F URL
      
    • -S/--format-sort:按特定规则排序格式

      # 优先选择分辨率≤1080p且H.264编码的视频
      yt-dlp -S "+res:1080,codec:avc1" URL
      
  2. 输出路径与文件名

    • -o/--output:自定义保存路径与命名规则

      # 按标题保存到指定目录(支持变量占位符)
      yt-dlp -o "~/Downloads/%(title)s.%(ext)s" URL# 包含播放列表序号(适用于批量下载)
      yt-dlp -o "%(playlist_index)s-%(title)s.%(ext)s" PLAYLIST_URL
      
音频与字幕参数
  1. 音频提取与转换

    • -x/--extract-audio:提取音频

      # 提取为MP3格式(最高音质)
      yt-dlp -x --audio-format mp3 --audio-quality 0 URL
      
  2. 字幕处理

    • --write-subs:下载字幕

      # 下载简体中文字幕(不下载视频)
      yt-dlp --write-subs --sub-langs "zh-Hans" --no-download URL# 嵌入字幕到视频文件(需FFmpeg)
      yt-dlp --embed-subs URL
      
登录与网络参数
  1. 身份认证

    • --cookies-from-browser:从浏览器读取Cookies(需关闭浏览器)

      # 使用Chrome的Cookies下载大会员专享内容(如B站4K)
      yt-dlp --cookies-from-browser chrome URL
      
    • --cookies:加载手动导出的Cookies文件

      # 使用cookies.txt文件绕过登录限制
      yt-dlp --cookies cookies.txt URL
      
  2. 代理与限速

    • --proxy:通过代理访问

      # 使用SOCKS5代理下载(绕过地域限制)
      yt-dlp --proxy "socks5://127.0.0.1:1080" URL
      
    • --limit-rate:限制下载速度

      # 限制速度为1MB/s(单位:KB/s)
      yt-dlp --limit-rate 1000 URL
      
播放列表与批量下载
  1. 播放列表控制

    • --playlist-items:选择播放列表中的特定项

      # 下载前5个视频(支持范围如1-5,7)
      yt-dlp --playlist-items 1-5,7 PLAYLIST_URL
      
    • --yes-playlist:强制解析为播放列表

      # 下载单个视频时避免误识别为播放列表
      yt-dlp --no-playlist URL
      
  2. 批量下载

    • -a/--batch-file:从文件读取多个URL

      # 批量下载urls.txt中的链接
      yt-dlp -a urls.txt
      
下载加速
  1. 启用多线程

    --concurrent-fragments 4
    
  2. 使用aria2加速

    --downloader aria2c
    

相关文章:

  • 【漫话机器学习系列】266.雅可比矩阵(Jacobian Matrix)
  • EasyExcel动态表头
  • 拓展运算符
  • PrimeVul论文解读-如何构建高质量漏洞标签与数据集
  • FFmpeg:多媒体处理的终极利器
  • NAT模式如何用宿主机ping通?
  • ubuntu18.04编译qt5.14.2源码
  • 解释一下React事件系统中的事件委托机制
  • 【QGIS二次开发】地图编辑-08
  • React响应事件中onClick={handleClick} 的结尾有没有小括号的区别
  • React 19中如何向Vue那样自定义状态和方法暴露给父组件。
  • 使用vscode做python项目fastapi的开发
  • Vue环境下数据导出Excel的全面指南
  • MLLM常见概念通俗解析(一)
  • 电子电路:什么是电流离散性特征?
  • 日志参数含义
  • Ubuntu搭建TFTP服务器的方法
  • 优先级队列(堆)
  • JMeter 教程:使用 HTTP 请求的参数列表发送 POST 请求(form 表单格式)
  • 嵌入式硬件篇---拓展板
  • 广西隆林突发山洪,致3人遇难1人失联
  • 以军称已开始在加沙的新一轮大规模攻势
  • 梅花奖在上海|湘剧《夫人如见》竞梅,长沙文旅来沪推广
  • 李成钢:近期个别经济体实施所谓“对等关税”,严重违反世贸组织规则
  • 车建兴被留置:跌落的前常州首富和红星系重整迷路
  • 第1现场 | 美国称将取消制裁,对叙利亚意味着什么