恒美微站
首页
关于我们
建站服务
主题模板
案例展示
资讯中心
联系我们
B站视频下载全攻略:官方缓存、yt-dlp与FFmpeg合并技巧
首页
资讯中心
/
B站视频下载全攻略:官方缓存、yt-dlp与FFmpeg合并技巧
B站视频下载全攻略:官方缓存、yt-dlp与FFmpeg合并技巧
发布时间:2026/10/17 8:09:44
平时总有人问我“B站视频到底怎么下载”尤其是这几类人最急学生想存网课离线看、剪辑新手想抓几个视频做素材、还有单纯想在信号不好的地铁上刷完一整个系列的人。B站官方确实给了离线缓存功能可限制一堆缓存文件被特殊编码、只能在App里看、换个手机就失效。网页端呢别说下载按钮了连视频流都被切成了一段段MP4/FLV普通人压根不知道怎么拼回去。这篇文章不聊玄学把我自己验证过、正在用的几种方案一次讲透顺带把清晰度、音画分离、字幕、分P批量下载这些容易踩坑的细节一起说清楚。先提醒一句本文所有方法默认只用于个人学习、资料备份、二次创作剪辑等合理场景。UP主的劳动成果值得尊重付费内容、番剧、电影这些不要拿去做商业用途或公开传播。1. 下载前先想清楚用途、版权和画质一个都不能少1.1 先分清你下载视频的真实用途很多人一上来就问“用什么工具”其实第一步应该问自己“下载完准备干什么”。用途不同选型完全不同。如果你只是想在没网的时候把那几个视频看完最省事的方案是官方缓存。手机上点一下“缓存”按钮B站App就会把视频保存到本地离线时照样可以看。这个方案的缺点也很明显缓存文件存在App的私有目录里视频文件被拆成了音频和视频两条流而且文件名是乱码播放器也认不出更别说拷到U盘里放到电视上看了。如果你是要拿去做剪辑素材、做课程笔记、长期存档那就不能停留在官方缓存了。你需要把真正的视频文件从B站的CDN上拉下来合并成一份完整的MP4存到硬盘里。这个时候才轮到第三方工具登场。如果你只是临时想发到自己的小群里那用什么方法都行但我还是建议至少走一遍“下载到本地再转发”的流程别用录屏。录屏画质打折、还带弹幕遮脸实际体验很差。1.2 版权与合规能下但不是什么都该下B站视频下载这个事在版权上一直比较敏感。我的个人原则很简单UP主公开发布、允许二次创作的视频下载用于个人学习、素材剪辑、字幕翻译研究是社区一直以来的常见操作。番剧、电影、纪录片、付费课程这些背后有版权方下载后不要传播最好只做临时离线观看看完就删。UP主明确标注“禁止转载”的视频不要下载后换个名字重新上传这是最基本的尊重。技术本身是中性的但使用边界得自己把握。本文教的是“把公开可见的内容保存到本地”而不是“绕过付费墙”或“破解平台限制”。1.3 清晰度与账号权限的基本规则B站视频清晰度常见有360P、480P、720P、1080P、1080P高帧率、4K、8K等。普通登录账号可以看1080P部分视频的高码率、4K、HDR需要大会员权限。下载工具根本没有办法突破你的账号权限。工具能拿到的视频流清晰度完全取决于你在B站“在线观看时”能拿到什么清晰度。游客身份下载通常最高只能拿到1080P有些视频甚至只有480P登录你自己的账号才能拿到与你会员等级匹配的清晰度。下载前先确认两件事你登录了吗你在线看这个视频能不能选到想要的那一档如果在线页面压根没有4K选项就别怪下载工具“失灵”。2. 手机端下载全流程先用官方缓存再提取合并成MP42.1 官方缓存其实有限制手机端最简单的方式确实是官方缓存操作步骤大家应该都会打开视频页面点右上角或右下角的“缓存”按钮选清晰度等进度条走完。然后在“我的-离线缓存”里能看到已缓存的内容。但要注意官方缓存观看时必须联网验证登录态不是真正意义的“永久离线”。而且缓存文件被B站处理过不能直接拷贝出来当普通视频用。Android端缓存目录一般在/sdcard/Android/data/tv.danmaku.bili/download/下面iOS端藏得更深普通人拿不到。缓存目录里的结构大致是这样的download/ 123456789/ 123456789_1/ video.m4s audio.m4s entry.json danmaku.xmlvideo.m4s和audio.m4s分别是视频流和音频流entry.json里记录的是标题、分P信息danmaku.xml是弹幕。这里建议先把整个文件夹完整拷贝到电脑上不要在手机上直接折腾。2.2 缓存文件长什么样如何手动提取拷贝到电脑后你会遇到两个文件video.m4s和audio.m4s。用播放器直接打开通常打不开因为文件名没有后缀、且少数情况下文件头被改动过。你需要把它们合并成一个标准MP4。合并靠 FFmpeg 这个开源工具。Windows可以去官网下载编译好的exemacOS可以用brew install ffmpegLinux用户直接sudo apt install ffmpeg。安装好以后进入缓存文件所在目录执行ffmpeg -i video.m4s -i audio.m4s -c copy output.mp4这条命令的意思是读取video.m4s为第一个输入、audio.m4s为第二个输入用-c copy直接复制视频和音频编码数据不重新编码所以速度极快1个G的文件几秒钟就能合并完。合并后得到的output.mp4就是标准MP4放到手机上、电脑上、电视上都能正常播放。如果提示Invalid data之类的错误说明B站在m4s文件前面加了一些自定义的元数据。解决办法也不难用十六进制编辑器把文件开头多余的部分删掉或者更省事的办法是直接改用下文的命令行工具下载它内部会自动处理这些头信息问题不需要你手动修。2.3 手机上究竟要不要装第三方下载工具我理解大家懒得开电脑想在手机上一步到位。市面上也确实有各种“B站下载器”“视频提取器”App。我对这类工具的态度是不建议在手机上装那些来路不明的解析类App。原因有三第一这类App很多需要你去解析一个视频背后往往是老旧的解析接口今天能解析、明天接口一变就报废体验很不稳定。第二部分App的隐私权限收得太宽明明是个下载工具却要读取通讯录、短信权限这明显不对劲。第三很多所谓“无水印解析”根本没有技术含量只是在页面里嵌了一个浏览器抓网页数据你看到的下载列表最后点进去可能全是广告。如果你非要手机上解决优先选应用商店里量级大、评价多的知名播放器类工具或者干脆用手机浏览器访问第三方下载接口。但说句实话B站视频下载这件事电脑端是体验最好的工具链成熟、出错容易排查所以我更建议你至少有一台电脑的时候再动手处理批量需求。3. 电脑端三种主流下载方式哪种适合你3.1 命令行工具开源方案最稳电脑端我最推荐的是开源命令行下载工具yt-dlp。它原本是另一个下载工具的社区分支因为更新快、适配广目前已经成为B站视频下载的“事实标准”之一。它不只是能下载B站很多主流视频站都能处理但本文只讲B站用法。为什么选命令行工具因为它的逻辑足够透明你指定链接、指定清晰度、指定输出文件名它就按参数去请求视频流然后本地合并。没有花里胡哨的界面也就没有夹带私货的可能。开源意味着代码公开出了问题能被社区及时修复。安装方式Windows下载yt-dlp.exe放到一个文件夹并把这个文件夹加入系统PATH环境变量或者直接在命令行里用绝对路径调用。macOSbrew install yt-dlpLinuxsudo apt install yt-dlp或pip install yt-dlp最基础的命令是yt-dlp https://www.bilibili.com/video/BVxxxxxxxxxx它会自动下载该视频可用的最高清晰度并且用FFmpeg把视频流和音频流合并成一个文件。如果你的环境里还没装FFmpegyt-dlp会提醒你先安装。3.2 常用参数清晰度、文件名、批量一次到位先理解B站的视频流逻辑B站现在默认采用DASH方案视频和音频分开传输。为了拿到最理想的“视频音频”组合我几乎每条命令都会带-f bv*ba/b意思是首选任意清晰度的视频流加最佳音频流两者合并如果合并失败就退回到下载单文件版本。yt-dlp -f bv*ba/b -o E:/download/%(title)s.%(ext)s https://www.bilibili.com/video/BVxxxxxxxxxx-o用来指定保存路径和文件名%(title)s是B站视频标题%(ext)s是自动识别的扩展名。这样存下来的文件名至少你知道是什么内容。批量下载多P视频或整个合集时用播放列表模式yt-dlp --yes-playlist -f bv*ba/b https://www.bilibili.com/video/BVxxxxxxxxxx?p1如果想要指定下某几个分P例如只下第2、3、5Pyt-dlp --playlist-items 2,3,5 https://www.bilibili.com/video/BVxxxxxxxxxx?p1下载纯音频做课程笔记或音频素材时可以转成MP3yt-dlp -x --audio-format mp3 https://www.bilibili.com/video/BVxxxxxxxxxx还有一个很实用的参数--cookies-from-browser chrome让yt-dlp读取你电脑Chrome浏览器里已登录的B站Cookie。这样下载工具就用你的账号权限去请求视频流能拿到登录后能看的清晰度。如果提示无法读取Cookie就先在Chrome里退出重新登录B站一次或者改用--cookies file.txt配合浏览器插件导出Cookie文件。要注意这个命令不一定能让你下载普通账号看不到的4K内容。如果你连在线都看不了4KCookie权限再高也没用。它解决的是“登录后才能看的部分视频”不是“破解会员权限”。3.3 浏览器插件给不熟悉命令行的朋友不喜欢命令行的人可以选择浏览器扩展。这类插件的普遍工作方式是在视频播放页加一个“下载”按钮点一下就能列出当前清晰度并抓取视频流下载到底。浏览器插件的最大优势是可视化、门槛低不需要记参数。缺点也很明显B站网页前端经常改版插件动不动就失效而且有些插件为了稳定解析会收集你访问的页面数据装的时候留意插件需要的权限如果要求“读取所有网站数据”我建议谨慎授权。装好插件后打开视频地址插件会自动分析页面里的视频接口供你选择清晰度和封装格式。下载完成后检查文件是否能正常播放、有没有声音再决定是否归档。如果插件失效先去看插件有没有更新再确认浏览器版本是否兼容一般都能解决。3.4 在线解析站我为什么不推荐在线解析站的使用路径通常是“粘贴视频链接→点解析→得到下载链接”。听起来最简单但我几乎从不推荐。原因是解析接口不稳定。B站对视频地址有有效期控制刚解析出来的地址可能过几分钟就失效更别提部分解析站拿到的还是过期缓存。安全风险不可控。你粘进去一个链接网站后台发生了什么都无从知晓下载下来的文件有时不是视频而是伪装成视频的程序或者捆绑了一堆广告。功能太弱。在线解析站通常只给你一个MP4字幕、弹幕、分P、封面、简介这些元数据几乎拿不到等你想回找资源时才发现文件是“孤儿档案”。如果你临时只用一次、而且视频本身就几十MB在线解析站可以凑合但如果你要批量下载或长期保存强烈建议用命令行人解决。4. 清晰度、字幕、分P、音画分离核心细节逐个拆解4.1 为什么下载后画质不如在线看的最常收到的一个反馈是“我在网页上看明明很清楚下载下来怎么变模糊了”这个问题主要有三个原因。第一个原因是没有登录。游客身份获取视频流时接口限制最高清晰度这个前面已经讲过。第二个原因是下载工具默认选择了小的那个视频流。B站同一个视频会生成多个码率版本工具可能默认选了“流畅”档。解决办法是在命令里用-f加上清晰度筛选比如明确指定是用1080P。第三个原因是播放器的问题。下载文件如果是HEVCH.265编码部分播放器不支持硬解画面会发灰、发花这不是源文件有问题而是播放器能力不够。建议下载后用支持HEVC的播放器观看或者干脆用FFmpeg转一下格式ffmpeg -i input.mp4 -c:v libx264 -crf 23 -c:a copy output_h264.mp4这条命令把视频重新编码成兼容性更好的H.264画质损失很小但所有播放器都能打开。4.2 音视频分离DASH流与FFmpeg合并B站绝大多数视频的默认方案是DASH也就是把视频画面和音频拆成两条独立的流。在线播放时网页播放器会同时请求两条流再把它们同步播放你感知不到。下载时工具拿到的就是这两条流所以很多不做合并的工具下完只有一个“无声视频”。yt-dlp 之所以要配合FFmpeg就是为了下载完自动把bv*视频流和ba音频流合并成一个MP4。如果你手动处理缓存文件或单独下载的m4s合并命令已经写过了不建议用-c copy以外的方式转码因为那是无损失合并速度最快。如果合并后出现音画时长略有偏差可以加-shortest参数让输出以较短的流为准或者用-itsoffset 0.2微调音轨偏移不过日常使用很少遇到。4.3 字幕和弹幕怎么保留B站很多视频的字幕是硬编码在画面里的下载完自然就有如果是CC字幕可开关的那种需要单独抓取。yt-dlp可以用yt-dlp --write-subs --sub-langs all --skip-download https://www.bilibili.com/video/BVxxxxxxxxxx执行后会将字幕文件保存为.vtt或.srt格式。需要注意的是B站部分视频的字幕接口需要登录态未登录时可能什么都抓不到这点先有心理预期。弹幕是另一个维度。B站弹幕本质上是一份XML数据里面记录了每条弹幕的出现时间和文本。想存档弹幕可以用接口获取然后在本地转成ASS字幕格式这样在播放器里看视频时就能看见弹幕沉底。转换工具有很多开源项目基本是界面式的导入XML输出ASS几秒钟就搞定。转ASS时注意弹幕时间轴是否与视频偏移如果视频开头有片头还需要统一调整偏移时间。但说实话弹幕这东西配视频一起保存意义有限。除非你是要做弹幕文化研究或者特别想复现当年看视频的氛围否则我建议下载时优先保留字幕而不是弹幕弹幕对学习类视频基本没有信息增量。4.4 分P、合集的批量下载套路B站很多优质内容都是多P合集一整套网课、一整季纪录片、一系列软硬件教程。分P的链接一般是?p1、?p2……要注意如果你只复制了第1P的链接工具默认可能只下载这一P。想下载整个合集在yt-dlp指令里明确打开播放列表yt-dlp --yes-playlist -o E:/video/%(playlist_index)02d_%(title)s.%(ext)s https://www.bilibili.com/video/BVxxxxxxxxxx?p1%(playlist_index)02d会把P序号格式化为两位数字01、02、03……这样排序不会乱。如果合集有几百P下载前强烈建议先跑一次不带下载参数的命令看一下一共识别到了多少P再决定是全量拉取还是只挑其中几P。避免下到一半发现路径写错、文件名乱套。批量下载还有一个细节建议把视频链接列表保存成一个txt文件一行一个链接然后用yt-dlp -a list.txt -f bv*ba/b这样比手动一个个粘贴高效得多尤其适合几十个散装视频的场景。5. 常见错误排查和四个实用避坑技巧5.1 常见错误速查表现象最可能原因解决办法下载后没有声音只抓了视频流没有合并音频流改用-f bv*ba/b并确认FFmpeg已安装视频黑屏或颜色发绿HEVC编码播放器不支持换支持HEVC的播放器或转码为H.264提示412 Precondition Failed请求被B站风控拦截停止频繁下载过几分钟再试或更换浏览器UA参数提示Unsupported URL工具版本过旧升级yt-dlp到最新版文件名全是乱码没有指定输出格式用-o %(title)s.%(ext)s正确命名提示需要登录视频本身需要登录可见用--cookies-from-browser chrome读取浏览器登录状态下载到一半中断网络波动或CDN断开加--retries 5和--continue参数重试412是我遇到最多的B站反爬状态码意思就是风控怀疑你是脚本操作。别硬刚停一会儿、打开B站网页随便看看视频再回来继续下就恢复了。频繁瞬间下载几十个视频最容易触发这个。5.2 四个实用避坑技巧第一别迷信“最高清”。有些4K视频其实是HDR版本普通SDR屏幕播放会发灰发暗如果你的电脑和手机不支持HDR盲目下载4K反而没法正常看。预判设备能力后优先选择1080P高帧率版本体验往往更好。第二统一建归档文件夹。下载容易上瘾下完不分类一周以后硬盘里全是BVxx…mp4这种文件名等于白下。我个人的习惯是日期_UP主名_视频标题/作为文件夹结构并把封面图、简介、备注信息一起存进去。这样做剪辑素材时一找就能找到。第三下载前先看在线信息。打开视频页先看是不是分P、有没有CC字幕、是否高码率。这些信息决定你命令里要不要加--yes-playlist、--write-subs这些参数。别看到一个链接就闷头下下完才发现只下了第一P白折腾一趟。第四定期更新工具链。B站页面结构、接口地址、防抓策略都会变命令行工具和浏览器插件的维护者们会持续跟进更新。下载工具一旦出现失效第一时间去项目主页拉最新版很多“突然不能下了”的问题都能靠更新解决。这也是我坚持用开源工具的核心原因——社区在工具就活着。回到怎么用B站下载视频这件事上。我自己长期下来的固定组合是手机端用官方缓存应付临时离线查看电脑端用开源命令行工具做永久归档浏览器插件只偶尔拿来应急。在线解析站和来路不明的手机App基本不碰。下载下来的视频我通常会顺手把封面、简介存成一份同名txt放进文件夹方便日后查来源和UP主信息。最后再唠叨一句任何下载方法真相都是“工具做不到超越你账号权限的事”那些号称能突破会员限制下载付费内容的东西要么失效很快要么就是挂羊头卖狗肉的解析站。踏踏实实登录、合理使用体验反而最稳定。