B站缓存视频M4S合并MP4(js + ffmpeg )

文章目录

      • [B站缓存视频转MP4(js + ffmpeg )](#B站缓存视频转MP4(js + ffmpeg ))
      • 1、说明
      • 2、ffmpeg
        • [2.1 下载地址](#2.1 下载地址)
        • [2.2 配置环境变量](#2.2 配置环境变量)
        • [2.3 测试](#2.3 测试)
        • [2.4 转换MP4命令](#2.4 转换MP4命令)
      • 3、处理程序

B站缓存视频转MP4(js + ffmpeg )

注意:这样的方式只用于个人之间不同设备的离线观看。请勿用于商业用途!!

程序我放在了gitee,https://gitee.com/Little_Code_Farmer/m4s_to_mp4.git,可跳转参考

1、说明

目前b站下载的视频并不是 mp4 格式的,而是 m4s (两个 m4s 文件,分别代表音频文件和视频文件);需要用 ffmpeg 将两个文件合并成一个 mp4 文件

txt 复制代码
Android\data\tv.danmaku.bilibilihd\download
内部一个目录代表一个缓存项
一个缓存项内部可能会有多个目录代表视频不止一个(多集);否则就是一个视频

- 视频id
|-- 某一集
|---- 某一集的相关信息 json (一般为entry文件)
|---- 某一集视频的具体音频内容 目录(内部有存放 m4s 文件:video.m4s、audio.m4s )
  • 两个缓存项:
  • 多集:id为47231894的视频有两集

2、ffmpeg

2.1 下载地址

https://www.onlinedown.net/soft/616370.htm#downBox

下载后先解压到特定目录(譬如:D:\ffmpeg\bin)

2.2 配置环境变量

打开环境变量(用户变量和系统变量都可以;此处修改的是用户变量)。新建变量,定位至 bin 目录(PS. 可以不配置环境变量,后续执行该命令时用绝对路径就可以 )

2.3 测试
bash 复制代码
# 已配置环境变量:打开命令行窗口,输入  
ffmpeg -version 

# 未配置环境变量:需要先定位到目录(D:\ffmpeg\bin);再执行对应的exe文件
D:\ffmpeg\bin\ffmpeg.exe -version
2.4 转换MP4命令
bash 复制代码
# ffmpeg [-i m4s文件地址 -可使用多次] -codec copy "生成的MP4名称" 
ffmpeg -i ./47231894/4712384/video.m4s -i ./47231894/4712384/audio.m4s -codec copy ./result.mp4

3、处理程序

PS. 可使用别的语言,java,py等等(作用都是获取 ffmpeg 的参数,拼接命令),实际就是通过DOS多次执行 ffmpeg 命令

3.1 获取所有缓存项

3.2 遍历缓存项,读取 entry.json 文件,拿到 title 属性,以该名称创建目录;内部存放视频

3.3 缓存项是多集:以 entry.json 文件内部的 page_data.part 属性为MP4文件名称

3.4 缓存项是单集:以 entry.json 文件内部的 title 属性为 MP4 文件名称

3.5 拼接ffmpeg参数,音频、视频地址,输出的文件地址;

相关推荐
码上观世界4 小时前
一张图 + 一段音频,生成口型同步、有表情的数字人
音视频
Bruce_Liuxiaowei6 小时前
网页版 DeepSeek “harness desktop“ WebGL 上下文创建失败排查实录
开发语言·javascript·webgl
starzy19906 小时前
Flink 优化之网络缓存优化及参数详解:从数据传输机制到反压原理的生产调优指南
网络·缓存·flink
小凯在掘金7 小时前
为什么箭头函数不能作为构造函数?
前端·javascript
鲲穹AI种草7 小时前
自媒体矩阵批量剪辑怎么选?鲲剪短视频批量处理工具横向评测
人工智能·音视频·媒体
可乐鸡翅yeah_7 小时前
网页端 M3U8 播放器性能监控,怎么看播放卡顿指标
javascript·ffmpeg·音视频·safari·m3u8
可乐鸡翅yeah_7 小时前
M3U8 防盗链 URL‑Token 签名,新手开发实操避坑
开发语言·javascript·ios·音视频·safari
ShineWinsu7 小时前
对于Redis:string类型的解析
java·c++·redis·分布式·缓存·面试·string
2603_965896627 小时前
JS原型与原型链|对象继承与实例底层原理
开发语言·javascript·原型模式
昨日之日20068 小时前
yovoice:本地配音工具箱,支持音色克隆与情绪控制,专为旁白、有声书和视频配音打造
人工智能·音视频