Mac下载bilibili视频
安装
-
安装 yt-dlp
brew install yt-dlp
-
安装FFmpeg
用于合并音视频流、转码等操作
brew install ffmpeg
使用
下载单个视频
-
查看可用格式
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
-
下载指定分辨率视频
// 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"
-
动态选择分辨率
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"
下载合集
-
命令
yt-dlp -f "bestvideo+bestaudio/best" --merge-output-format mp4 "合集url"
自动化下载
-
脚本
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] 为第一个参数(文件路径)
-
使用
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参数解析
基础参数
-
格式选择与画质控制
-
-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
-
-
输出路径与文件名
-
-o/--output
:自定义保存路径与命名规则# 按标题保存到指定目录(支持变量占位符) yt-dlp -o "~/Downloads/%(title)s.%(ext)s" URL# 包含播放列表序号(适用于批量下载) yt-dlp -o "%(playlist_index)s-%(title)s.%(ext)s" PLAYLIST_URL
-
音频与字幕参数
-
音频提取与转换
-
-x/--extract-audio
:提取音频# 提取为MP3格式(最高音质) yt-dlp -x --audio-format mp3 --audio-quality 0 URL
-
-
字幕处理
-
--write-subs
:下载字幕# 下载简体中文字幕(不下载视频) yt-dlp --write-subs --sub-langs "zh-Hans" --no-download URL# 嵌入字幕到视频文件(需FFmpeg) yt-dlp --embed-subs URL
-
登录与网络参数
-
身份认证
-
--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
-
-
代理与限速
-
--proxy
:通过代理访问# 使用SOCKS5代理下载(绕过地域限制) yt-dlp --proxy "socks5://127.0.0.1:1080" URL
-
--limit-rate
:限制下载速度# 限制速度为1MB/s(单位:KB/s) yt-dlp --limit-rate 1000 URL
-
播放列表与批量下载
-
播放列表控制
-
--playlist-items
:选择播放列表中的特定项# 下载前5个视频(支持范围如1-5,7) yt-dlp --playlist-items 1-5,7 PLAYLIST_URL
-
--yes-playlist
:强制解析为播放列表# 下载单个视频时避免误识别为播放列表 yt-dlp --no-playlist URL
-
-
批量下载
-
-a/--batch-file
:从文件读取多个URL# 批量下载urls.txt中的链接 yt-dlp -a urls.txt
-
下载加速
-
启用多线程
--concurrent-fragments 4
-
使用aria2加速
--downloader aria2c
相关文章:
Mac下载bilibili视频
安装 安装 yt-dlp brew install yt-dlp安装FFmpeg 用于合并音视频流、转码等操作 brew install ffmpeg使用 下载单个视频 查看可用格式 yt-dlp -F --cookies-from-browser chrome "https://www.bilibili.com/video/BV15B4y1G7F3?spm_id_from333.788.recommend_more_vid…...
Unity editor文件数UI(支持勾选框)
unity editor文件数(支持勾选框) 使用的时候new一个box即可 using Sirenix.OdinInspector; using Sirenix.OdinInspector.Editor; using System; using System.Collections; using System.Collections.Generic; using UnityEngine;[Serializable] publ…...

【Node.js】Web开发框架
个人主页:Guiat 归属专栏: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. 引言 虽然现在的前端更新换代的速度很快,IDE和工具一批批的换,但是我们始终要理解一点基本的程序构建的思维,这些环境和工具都是为了帮助我们更快的发布程序。笔者还记得以前写前端代码的时候,只使用文本编辑器,然…...

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

MySQL--day5--多表查询
(以下内容全部来自上述课程) 多表查询 1. 为什么要用多表查询 # 如果不用多表查询 #查询员工名为Abel的人在哪个城市工作? SELECT* FROM employees WHERE last_name Abel;SELECT * FROM departments WHERE department_id 80;SELECT * FROM locati…...
【Redis】AOF日志的三种写回机制
目录 1、背景2、appendfsync always(同步写回)【1】工作机制【2】特点【3】实现原理 3、appendfsync everysec(每秒写回,默认配置)【1】工作机制【2】特点【3】实现原理 4、appendfsync no(操作系统控制&am…...

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

基于Spring Boot和Vue的在线考试系统架构设计与实现(源码+论文+部署讲解等)
源码项目获取联系 请文末卡片dd我获取更详细的演示视频 系统介绍 基于Spring Boot和Vue的在线考试系统。为学生和教师/管理员提供一个高效、便捷的在线学习、考试及管理平台。系统采用前后端分离的架构,后端基于成熟稳定的Spring Boot框架,负责数据处理…...
MySQL Workbench 工具导出与导入数据库:实用指南
目录 一、MySQL Workbench 简介二、导出数据库2.1 打开 MySQL Workbench2.2 数据库导出步骤三、导入数据库3.1 打开 MySQL Workbench3.2 数据库导入步骤四、注意事项五、总结MySQL Workbench 是一款强大的数据库管理和开发工具,它提供了直观的图形界面,方便用户进行数据库的设…...

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系列:https://github.com/juancarlospaco/aw…...
ubuntu22.04 卸载ESP-IDF
要在Ubuntu 22.04上完全卸载ESP-IDF,请按照以下步骤操作: 卸载ESP-IDF的步骤 删除ESP-IDF目录: # 假设ESP-IDF安装在~/esp/esp-idf目录 rm -rf ~/esp/esp-idf删除ESP-IDF工具链和下载的工具: rm -rf ~/.espressif从PATH中移除ESP…...

Spring IOCDI————(2)
DI详解 我们之前讲了控制反转IOC,也就是bean的存,那么我们还需要Bean的取,就是DI了,DI翻译过来就是依赖注入,啥意思呢,就是我们通过IOC容器,把所有的对象交给Spring管理,我们指定哪…...
80. Java 枚举类 - 使用枚举实现单例模式
文章目录 80. Java 枚举类 - 使用枚举实现单例模式**1️⃣ 为什么用枚举实现单例?****2️⃣ 枚举实现单例模式****3️⃣ 枚举单例如何防止反射攻击?****4️⃣ 枚举单例如何防止反序列化破坏?****5️⃣ 枚举单例 vs 传统单例****6️⃣ 枚举单例…...

融云 uni-app IMKit 上线,1 天集成,多端畅行
融云 uni-app IMKit 正式上线,支持一套代码同时运行在 iOS、Android、H5、小程序主流四端,集成仅需 1 天,并可确保多平台的一致性体验。 融云 uni-app IMKit 在 Vue 3 的高性能加持下开发实现,使用 Vue 3 Composition API&#x…...
Java中的集合详解
下面是文章详细介绍了 Java 集合框架的基本思路、主要接口与实现、各类集合之间的区别与各自的适用场景,以及一些常见的使用技巧和最佳实践,供你参考。 Java中的集合详解 在 Java 开发中,集合(Collection)作为存储和操…...
利用 Java 爬虫根据关键词获取某手商品列表
在电商领域,根据关键词获取商品列表是常见的需求。某手作为国内知名的电商平台,提供了丰富的商品资源。通过 Java 爬虫技术,我们可以高效地根据关键词获取某手商品列表,并提取商品的基本信息。本文将详细介绍如何利用 Java 爬虫根…...
Axure项目实战:智慧运输平台后台管理端-订单管理2(多级交互)
亲爱的小伙伴,在您浏览之前,烦请关注一下,在此深表感谢!如有帮助请订阅专栏! Axure产品经理精品视频课已登录CSDN可点击学习https://edu.csdn.net/course/detail/40420 课程主题:订单管理2 主要内容:中继器筛选、表单跟随菜单拖动、审批数据互通等 应用场景:订单管理…...

篇章五 项目创建
目录 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.创建…...
Ntfs!ATTRIBUTE_RECORD_HEADER结构$INDEX_ROOT=0x90的一个例子
Ntfs!ATTRIBUTE_RECORD_HEADER结构$INDEX_ROOT0x90的一个例子 1: kd> dx -id 0,0,899a2278 -r1 ((Ntfs!_FILE_RECORD_SEGMENT_HEADER *)0xc431a400) ((Ntfs!_FILE_RECORD_SEGMENT_HEADER *)0xc431a400) : 0xc431a400 [Type: _FILE_RECORD_SEGMENT_HEADER …...
AGI大模型(30):LangChain链的基本使用
为开发更复杂的应用程序,需要使用Chain来链接LangChain中的各个组件和功能,包括模型之间的链接以及模型与其他组件之间的链接。 链在内部把一系列的功能进行封装,而链的外部则又可以组合串联。 链其实可以被视为LangChain中的一种基本功能单元。 API地址:https://python.…...
代码随想录算法训练营第六十六天| 图论11—卡码网97. 小明逛公园,127. 骑士的攻击
继续补,又是两个新算法,继续进行勉强理解,也是训练营最后一天了,六十多天的刷题告一段落了! 97. 小明逛公园 97. 小明逛公园 感觉还是有点难理解原理 Floyd 算法对边的权值正负没有要求,都可以处理。核心…...
[创业之路-364]:企业战略管理案例分析-5-战略制定-宇树科技的使命、愿景、价值观的演变过程
目录 一、宇树科技的使命、愿景、价值观的演变过程 初创阶段(2016 年成立前后):以技术梦想奠基,明确核心使命愿景 发展阶段(2017 - 2023 年):技术突破与市场拓展,价值观逐步成型 …...
React--函数组件和类组件
React 中的函数组件和类组件是两种定义组件的方式,它们有以下主要区别: 1. 语法与定义方式 函数组件: 是 JavaScript 函数,接收 props 作为参数,返回 JSX。 const MyComponent (props) > {return <div>Hell…...
Flask 路由装饰器:从 URL 到视图函数的优雅映射
前置知识,关于Python装饰器的语法,链接:Python 装饰器:从“语法糖”到“代码神器”的深度解析 1、路由装饰器的功能:给 URL 贴 “功能标签” 在 Flask 开发中,你一定见过这样的代码: from fla…...
DDoS防护实战——从基础配置到高防IP部署
一、基础防护:服务器与网络层加固 Linux内核优化: 调整TCP协议栈参数,缓解SYN Flood攻击: # 启用SYN Cookie并减少超时时间 echo 1 > /proc/sys/net/ipv4/tcp_syncookies echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout…...

aws平台s3存储桶夸域问题处理
当我们收到开发反馈s3存在跨域问题 解决步骤: 配置 S3 存储桶的 CORS 设置: 登录到 AWS 管理控制台。转到 S3 服务。选择你存储文件的 存储桶。点击 权限 标签页。在 跨域资源共享(CORS)配置 部分,点击 编辑。 登陆…...
HOT100(二叉树)
二叉树 二叉树的中序遍历 class Solution { public:void traversal(TreeNode* root, vector<int> & vec){if(root nullptr) return;traversal(root->left, vec);vec.push_back(root->val);traversal(root->right, vec);}vector<int> inorderTraver…...

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