使用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了:)

相关推荐
databook2 小时前
Manim实现闪光轨迹特效
后端·python·动效
Juchecar3 小时前
解惑:NumPy 中 ndarray.ndim 到底是什么?
python
用户8356290780514 小时前
Python 删除 Excel 工作表中的空白行列
后端·python
Json_4 小时前
使用python-fastApi框架开发一个学校宿舍管理系统-前后端分离项目
后端·python·fastapi
数据智能老司机10 小时前
精通 Python 设计模式——分布式系统模式
python·设计模式·架构
数据智能老司机11 小时前
精通 Python 设计模式——并发与异步模式
python·设计模式·编程语言
数据智能老司机11 小时前
精通 Python 设计模式——测试模式
python·设计模式·架构
数据智能老司机11 小时前
精通 Python 设计模式——性能模式
python·设计模式·架构
c8i12 小时前
drf初步梳理
python·django
每日AI新事件12 小时前
python的异步函数
python