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

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

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

1、说明

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

Androiddatatv.danmaku.bilibilihddownload
内部一个目录代表一个缓存项
一个缓存内部可能会有多个目录代表视频不止一个(多集);否则就是一个视频

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

在这里插入图片描述

  • 多集:id为47231894的视频有两集

在这里插入图片描述

2、ffmpeg

2.1 下载地址

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

下载后先解压到特定目录(譬如:D:ffmpegbin

在这里插入图片描述

2.2 配置环境变量

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

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

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

3、处理程序

PS. 可使用别的语言javapy等等(作用都是获取 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参数音频、视频地址输出的文件地址

原文地址:https://blog.csdn.net/qq_44708990/article/details/134741677

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_23594.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注