使用Python合并B站缓存视频(至.MP4): 库biliffm4s介绍

众说周知,B站缓存下来的视频实际上由video.m4s(视频)和audio.m4s(音频)组成:

要将两个文件合并为.mp4的视频文件,我们通常会使用ffmpeg,一个可以称为计算机基建的开源项目. 不过,使用ffmpeg需要我们手动的输入指令,批量化的处理使用Python利用subprocess调用更是需要一些编程(尽管对于当代的LLM来说这种脚本轻而易举).如果有已经封装好的(简单)Python库可以直接用,岂不是一件美事? biliffm4s是bilibili-ffmpeg-m4s(to-mp4)的缩写.顾名思义,该项目提供了一个Python库,将Android手机哔哩哔哩缓存的视频(为.m4s)格式转化为.mp4格式.文件转化功能由ffmpeg实现(目前仅支持Windows 64位平台).
GitHub链接在此
哔哩哔哩介绍视频
PyPi

简单过一遍使用的流程 : Python库自然可以使用pip进行安装:

复制代码
pip install biliffm4s

在项目中导入from biliffm4s import *,然后跟着API文档操作即可(极其简单):

convert()

convert函数接受输入的音视频.m4s文件,合并并输出为.mp4.

  • 参数

    • video: 输入的视频路径.后缀.m4s可以省略.缺省值为video.m4s
    • audio: 输入的音频路径.后缀.m4s可以省略.缺省值为audio.m4s
    • output: 输出的视频路径.后缀.mp4可以省略.缺省值为output.mp4
  • 返回值: bool 合并成功与否

combine()

convert函数需要手动找到对应的.m4s,有时这并不够方便.combine函数提供了一种更简单的方式:只需要提供包含对应video.m4saudio.m4s(哔哩哔哩的缓存视频文件夹始终是这两个名称)的文件夹路径即可,其会自动的进行查找并合并.

在使用combine()时,确保路径下只有唯一的video.m4saudio.m4s

  • 参数

    • directory: 包含video.m4saudio.m4s的文件夹路径
    • output: 输出的视频路径.后缀.mp4可以省略.缺省值为output.mp4
  • 返回值: bool 合并成功与否

示例:

less 复制代码
import biliffm4s

biliffm4s.convert('video.m4s', 'audio.m4s', 'result.mp4') # 将video.m4s和audio.m4s合并为result.mp4  
biliffm4s.convert(output='result2') # 将video.m4s和audio.m4s合并为result2.mp4 
biliffm4s.convert() # 将video.m4s和audio.m4s合并为output.mp4  
biliffm4s.combine('sample') # 自动读取sample文件夹下的video.m4s和audio.m4s并合并为output.mp4

如果你不知道如何获取B站缓存的.m4s,可以见如下操作步骤:

  1. 将视频缓存到你的Android设备上
  2. 使用数据线将其链接至电脑,并进入USB文件传输模式
  3. 访问\Android\data\tv.danmaku.bili\download路径
  4. 你会看到一堆以数字命名的文件夹,每个文件夹都是一个缓存的视频.通过文件大小和时间判断对应的缓存视频
  5. 至对应文件夹的最深层次处,你会看到video.m4s,audio.m4s,index.json文件,分别对应哔哩哔哩视频的视频,音频和弹幕.拷贝两个.m4s到你的电脑上

如果你使用的是哔哩哔哩概念版,那路径为\Android\data\com.bilibili.app.blue\download

如果你使用的是combine(),直接复制\download路径下的对应子文件夹即可

如果该项目帮上了点忙,还请不吝啬Star了:)

相关推荐
Yvonne爱编码4 分钟前
JAVA数据结构 DAY1-集合和时空复杂度
java·数据结构·python
DN202011 分钟前
AI销售机器人:节日祝福转化率提升30倍
人工智能·python·深度学习·机器学习·机器人·节日
爱喝可乐的老王28 分钟前
PyTorch简介与安装
人工智能·pytorch·python
看我干嘛!32 分钟前
第三次python作业
服务器·数据库·python
deephub33 分钟前
用 PyTorch 实现 LLM-JEPA:不预测 token,预测嵌入
人工智能·pytorch·python·深度学习·大语言模型
我的xiaodoujiao1 小时前
使用 Python 语言 从 0 到 1 搭建完整 Web UI自动化测试学习系列 44--将自动化测试结果自动推送至钉钉工作群聊
前端·python·测试工具·ui·pytest
沈浩(种子思维作者)1 小时前
铁的居里点(770度就不被磁铁吸了)道理是什么?能不能精确计算出来?
人工智能·python·flask·量子计算
yufuu981 小时前
使用Scikit-learn进行机器学习模型评估
jvm·数据库·python
计算机毕业编程指导师1 小时前
大数据可视化毕设:Hadoop+Spark交通分析系统从零到上线 毕业设计 选题推荐 毕设选题 数据分析 机器学习 数据挖掘
大数据·hadoop·python·计算机·spark·毕业设计·城市交通
计算机毕业编程指导师1 小时前
【计算机毕设选题】基于Spark的车辆排放分析:2026年热门大数据项目 毕业设计 选题推荐 毕设选题 数据分析 机器学习 数据挖掘
大数据·hadoop·python·计算机·spark·毕业设计·车辆排放