无损下载哔哩哔哩视频以及使用ffmpeg合并音视频文件
前言
周六的时候,我弟弟来参观我的影音室,然后指名要看《凡人修仙传》最新的一集,于是我上网搜了一下,发现这集今天刚发布,网上还没找到最新的无损片源。只能自己动手了。
前提
需要有 哔哩哔哩大会员,有这个大会员才能看4K超清片源。
由于我的大会员不是电视TV版,因此无法在电视上直接观看,只能通过特殊手段在电脑上下载下来,再存到U盘或者本地共享进行访问观看。
步骤
第一步:安装浏览器插件
访问Github网站下载安装:猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension
或者访问各浏览器插件商店,搜索“猫抓”插件,比如Edge的插件地址为:猫抓 - Microsoft Edge Addons
第二步:下载ffmpeg
访问 FFmpeg官网下载页 下载对应系统的ffmpeg程序。
下文以Windows系统演示。
访问 Builds - CODEX FFMPEG @ gyan.dev 下载任一文件,解压出来,在 bin
目录找到 ffmpeg.exe
文件,将其复制到单独文件夹内,我们只需这个文件。
第三步:下载视频
访问哔哩哔哩中想要下载的视频网页,点击浏览器中的猫抓插件,可以看到已经抓取到3个文件信息:
将对应的视频以及音频下载下来:
哔哩哔哩的音视频文件是分开的,且都是
.m4s
格式,该格式不属于常规的视频格式
我们将下载下来的音视频重命名简单的名字并与 ffmpeg
程序放在一起:
第四步:合并音视频并转成通用格式
任意命令行工具都可以,如果没有显示相应的命令行工具,在系统开始-程序中找到对应的命令行工具,逐步导航到该目录
输入以下命令:
1 | ./ffmpeg -i 133.m4s -i 133-1.m4s -codec copy 133.mkv |
注解:
./ffmpeg
:运行该程序-i 133.m4s -i 133-1.m4s
:指定第一个文件和第二个文件-codec copy
:默认设置给所有的流(即同时应用于音频和视频流),它会直接将133.m4s
和133-1.m4s
文件中的流复制到输出文件133.mkv
中,而不会改变它们的编码格式133.mkv
:最后的这个指输出文件,也可以是133.mp4
格式文件
当然,也可以指定编码格式,比如 HEVC/H.265
视频编码,但是这个压缩效率看设备情况而定,比如我的电脑就非常非常慢!
1 | ./ffmpeg -i 133.m4s -i 133-1.m4s -c:v libx265 -c:a copy 133.mkv |
改变视频编码完全没有必要,不改变视频编码的情况下输出只需1秒,压缩为H265的情况下,我的设备转换要5~10分钟。
合并完成后,在文件夹内就可以看到生成的最新的视频文件了:
局限性
这种方法目前只适用于哔哩哔哩,通过猫抓插件就能下载到源视频。
刚刚我在腾讯视频、优酷视频网页上是无法抓取到源视频的,只能抓取到
m3u
文件,不确定能否通过他们的app下载相应的视频到本地将其转换。(有待验证)
最后
我个人感觉这种方法适用性非常有限:
第一,对画质有点要求的,想在电视或者投影观看大屏幕;
第二,需要有对应的会员,而且有手机app会员,而无电视app会员;
第三,下载转换,再存储到播放设备的时间成本;
第四,仅适用于哔哩哔哩,其他平台有待验证。