Mac下载bilibili视频

news2025/5/22 22:10:28

安装

  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 sys
    
    def 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
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2383416.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Node.js】Web开发框架

个人主页&#xff1a;Guiat 归属专栏&#xff1a;node.js 文章目录 1. Node.js Web框架概述1.1 Web框架的作用1.2 Node.js主要Web框架生态1.3 框架选择考虑因素 2. Express.js2.1 Express.js概述2.2 基本用法2.2.1 安装Express2.2.2 创建基本服务器 2.3 路由2.4 中间件2.5 请求…

使用Vite创建一个动态网页的前端项目

1. 引言 虽然现在的前端更新换代的速度很快&#xff0c;IDE和工具一批批的换&#xff0c;但是我们始终要理解一点基本的程序构建的思维&#xff0c;这些环境和工具都是为了帮助我们更快的发布程序。笔者还记得以前写前端代码的时候&#xff0c;只使用文本编辑器&#xff0c;然…

系统架构设计师案例分析题——web篇

软考高项系统架构设计师&#xff0c;其中的科二案例分析题为5选3&#xff0c;总分75达到45分即合格。本贴来归纳web设计题目中常见的知识点即细节&#xff1a; 目录 一.核心知识 1.常见英文名词 2.私有云 3.面向对象三模型 4.计网相关——TCP和UDP的差异 5.MQTT和AMQP协…

MySQL--day5--多表查询

&#xff08;以下内容全部来自上述课程&#xff09; 多表查询 1. 为什么要用多表查询 # 如果不用多表查询 #查询员工名为Abel的人在哪个城市工作? SELECT* FROM employees WHERE last_name Abel;SELECT * FROM departments WHERE department_id 80;SELECT * FROM locati…

leetcode hot100刷题日记——7.最大子数组和

class Solution { public:int maxSubArray(vector<int>& nums) {//方法一&#xff1a;动态规划//dp[i]表示以i下标结尾的数组的最大子数组和//那么在i0时&#xff0c;dp[0]nums[0]//之后要考虑的就是我们要不要把下一个数加进来&#xff0c;如果下一个数加进来会使结…

基于Spring Boot和Vue的在线考试系统架构设计与实现(源码+论文+部署讲解等)

源码项目获取联系 请文末卡片dd我获取更详细的演示视频 系统介绍 基于Spring Boot和Vue的在线考试系统。为学生和教师/管理员提供一个高效、便捷的在线学习、考试及管理平台。系统采用前后端分离的架构&#xff0c;后端基于成熟稳定的Spring Boot框架&#xff0c;负责数据处理…

Android 绘制折线图

用了一段时间的 Jetpack Compose ,感觉写 UI 的效率确实会提升不少 。 配合 AI 编程绘制了一个折线图。供大家学习参考! @Composable fun TemperatureChart() {val timeLabels = listOf("7:00", "8:00", "9:00", "10:00", "11:…

自建srs实时视频服务器支持RTMP推流和拉流

文章目录 一、整体示意图二、服务器端1.srs简介及架构2.docker方式安装3.k8s方式安装4.端口 三、推流端1.OBS Studio2.ffmpeg推流3.streamlabs苹果手机4.twire安卓手机5.网络推流摄像头 四、拉流端1.vlc2.srs 参考awesome系列&#xff1a;https://github.com/juancarlospaco/aw…

Spring IOCDI————(2)

DI详解 我们之前讲了控制反转IOC&#xff0c;也就是bean的存&#xff0c;那么我们还需要Bean的取&#xff0c;就是DI了&#xff0c;DI翻译过来就是依赖注入&#xff0c;啥意思呢&#xff0c;就是我们通过IOC容器&#xff0c;把所有的对象交给Spring管理&#xff0c;我们指定哪…

融云 uni-app IMKit 上线,1 天集成,多端畅行

融云 uni-app IMKit 正式上线&#xff0c;支持一套代码同时运行在 iOS、Android、H5、小程序主流四端&#xff0c;集成仅需 1 天&#xff0c;并可确保多平台的一致性体验。 融云 uni-app IMKit 在 Vue 3 的高性能加持下开发实现&#xff0c;使用 Vue 3 Composition API&#x…

篇章五 项目创建

目录 1.创建一个SpringBoot项目 2.创建核心类 2.1 Exchange类 2.2 MessageQueue类 2.3 Binding类 2.4 Message类 1.Message的组成 2.逻辑删除 3.工厂方法 4.序列化与反序列化 5.offsetBeg和offsetEnd 1.创建一个SpringBoot项目 1.点击 2.填写表单 3.添加依赖 2.创建…

aws平台s3存储桶夸域问题处理

当我们收到开发反馈s3存在跨域问题 解决步骤&#xff1a; 配置 S3 存储桶的 CORS 设置&#xff1a; 登录到 AWS 管理控制台。转到 S3 服务。选择你存储文件的 存储桶。点击 权限 标签页。在 跨域资源共享&#xff08;CORS&#xff09;配置 部分&#xff0c;点击 编辑。 登陆…

【vue-text-highlight】在vue2的使用教程

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、下载二、使用步骤1.引入库2.用法 效果速通 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 例如&#xff1a;随着人工智能的不断发…

pycharm无法正常调试问题

pycharm无法正常调试问题 1.错误代码 已连接到 pydev 调试器(内部版本号 231.8109.197)Traceback (most recent call last):File "E:\Python\pycharm\PyCharm 2023.1\plugins\python\helpers\pydev\_pydevd_bundle\pydevd_comm.py", line 304, in _on_runr r.deco…

Leetcode百题斩-哈希

看来面试前还是要老老实实刷leetcode为好&#xff0c;今天看到一个题库&#xff0c;leetcode百题斩&#xff0c;刚好最近面试的这两题全在里面。瞄了一眼&#xff0c;也有不少题之前居然也刷过。那么&#xff0c;冲冲冲&#xff0c;看多久能把这百题刷完。 第一天&#xff0c;先…

EXIST与JOIN连表比较

结论 1&#xff1a;EXIST可以用于链表&#xff0c;且可以利用到索引2&#xff1a;当join无法合理利用到索引&#xff0c;可以尝试EXIST链表3&#xff1a;EXIST在某些情况下可以更好地利用到索引4&#xff1a;大数据量时&#xff0c;要考虑EXIST的使用 EXIST SQL: EXPLAN JOIN…

【Linux】利用多路转接epoll机制、ET模式,基于Reactor设计模式实现

&#x1f4da; 博主的专栏 &#x1f427; Linux | &#x1f5a5;️ C | &#x1f4ca; 数据结构 | &#x1f4a1;C 算法 | &#x1f152; C 语言 | &#x1f310; 计算机网络 上篇文章&#xff1a;多路转接epoll&#xff0c;实现echoserver 至此&#xff0c;Linux与…

react中运行 npm run dev 报错,提示vite.config.js出现错误 @esbuild/win32-x64

在React项目中运行npm run dev时&#xff0c;如果遇到vite.config.js报错&#xff0c;提示esbuild/win32-x64在另一个平台中被使用&#xff0c;通常是由于依赖冲突或缓存问题导致的。解决方法是删除node_modules文件夹&#xff0c;并重新安装依赖。 如下图&#xff1a; 解决办…

鸿蒙UI开发——Builder与LocalBuilder对比

1、概 述 在ArkUI中&#xff0c;有的朋友应该接触过Builder和LocalBuilder。其中有了LocalBuilder的存在&#xff0c;是为了解决组件的父子关系和状态管理的父子关系保持一致的问题。 这里面最直观的表现则是this的指向问题与组件刷新问题&#xff0c;本文对Builder与LocalBu…

关于光谱相机的灵敏度

一、‌灵敏度的核心定义‌ ‌光谱灵敏度&#xff08;单色灵敏度&#xff09;‌ 描述光谱相机对单色辐射光的响应能力&#xff0c;即探测器对特定波长入射光的输出信号强度与入射光功率的比值。 例如&#xff0c;若在680nm波长下的光谱灵敏度较高&#xff0c;则表示该相机对此…