哔哩哔哩视频解析下载
直接说结论:B站视频的哔哩哔“解析下载”本质上就是绕过播放器限制,拿到视频和音频的视频原始流地址,再合并成MP4。解析这事儿不复杂,下载但坑不少。哔哩哔 你打开一个B站视频页面,视频右键“检查”或者按F12,解析切到Network面板,下载刷新页面,哔哩哔搜索“m4s”或者“audio”。视频大概率会看到两个请求:一个视频流,解析一个音频流。下载B站现在默认把音视频分开传输,哔哩哔视频编码通常是视频AVC或HEVC,音频是解析AAC。这两个流各自有独立的URL,带有时效性token。直接复制那个URL到新标签页,浏览器会下载一个后缀为.m4s的文件——其实就是 fragmented MP4,但没合并,播放器认不出来。 所以纯手动下载的话,你需要先拿到这两个m4s文件,然后用ffmpeg合并。命令很简单: 手动操作太累,于是有了各种解析工具。我用过最多的是you-get和yt-dlp。you-get对B站支持不错,一条命令 第三方在线解析网站一抓一大把,比如“哔哩哔哩视频解析”这类关键词能搜出几十个。我试过几个,大部分是套壳yt-dlp的API,或者直接调用B站接口再返回下载链接。风险在于:这些网站会记录你的请求,有些还会插入广告或重定向。更麻烦的是,B站会封禁频繁请求的IP。我自己的经验是,用在线解析下几个视频没问题,批量下几十个,半小时后IP就被限流,返回403。 还有一个细节:B站的视频流地址带 画质方面,B站现在最高支持8K,但那是给特定UP主内测的。普通用户能拿到的最好是1080P高码率(约3000kbps)或者4K(需要大会员)。你可以在播放器里右键“视频统计信息”,看当前流的编码和码率。如果解析出来的码率明显低于播放器显示的,说明你拿到的不是最高清流。这时候检查一下请求头里的 最后说一个我实际踩过的坑:用ffmpeg合并时,如果视频流是HEVC编码,合并出来的MP4在部分老设备上无法硬解,播放会卡顿。解决办法要么重新编码成AVC(慢,吃CPU),要么换播放器。我一般直接扔给PotPlayer或者IINA,软解也能跑。但如果你要传到手机上,最好还是转成AVC。命令是 工具就在那儿,用不用、怎么用,看你自己。别拿它去下付费课程或者搬运别人的原创视频就行。ffmpeg -i video.m4s -i audio.m4s -c copy output.mp4。注意-c copy是直接复制流,不重新编码,速度快,画质无损。但有个前提:两个流的时长要对齐,否则音画不同步。B站一般不会出这个问题,除非你下的是分P视频,拿错了对应关系。you-get -o ./videos https://www.bilibili.com/video/BV1xx411c7mD就能自动下载最高画质并合并。但它有个毛病:B站大会员专属的1080P+或者4K,you-get经常拿不到,会降级到480P。yt-dlp更激进,配合cookies文件可以拿到高码率流。具体做法是导出浏览器的cookies.txt,然后yt-dlp --cookies cookies.txt -f "bv*+ba" URL。注意bv*+ba表示最佳视频+最佳音频。deadline参数,通常是当前时间戳+120分钟。过期后链接失效,需要重新获取。所以如果你用脚本批量下载,别一次性把所有链接都抓出来放着,边抓边下。Referer和User-Agent,B站对这两个字段有校验。用yt-dlp的话,加上--add-header "Referer:https://www.bilibili.com"通常能解决。ffmpeg -i input.mp4 -c:v libx264 -crf 23 -c:a aac output.mp4,crf 23是画质和体积的平衡点。
-
上一篇
-
下一篇