试用过不少录制B站直播的工具,大多都是直接下载直播流或调用 ffmpeg 进行录制,这对于网络比较稳定的直播的录制没有太大问题,但对于网络不稳定的直播就会出现录制文件片段化且漏录比较多。
录播姬是当中最可靠的,不是直接下载直播流而是在录制的过程中解析 flv 并对直播流数据进行一些修正处理,避免了不少录播文件播放问题。但还是没有解决网络不稳定导致录制文件片段化且漏录多的问题。
分析在强迫症的驱使下,开始尝试解决以上文件片段化和漏录问题。。。
经过一些分析后,发现直播推流有几秒的缓存,在流中断后短时间内重新连接上,服务器重新推流的画面与之前断开位置的画面有重叠而且 flv tag 数据是完全一样的!
方案基于以上分析,想到了一个解决方案:可以在网络中断后马上重新连接上然后找出前后数据相同的 flv tag 并去掉再对时间戳作调整并拼接上,这样就实现了无缝拼接!
验证为了验证方案的可行性,于是就用自己熟悉的 Python 开始写一个简陋的命令行版本。
经过验证,本地网络不稳定导致的网络中断基本上都能无缝拼接上,但是主播网络不稳定则不一定能无缝拼接。虽然不能保证每次网络中断都能无缝拼接,但至少再也不用去拼接片段化的录播文件了~
演变录播姬是 C# 写的 Window 客户端,当时命令行版本也还没发布。因不想一直开着电脑挂着录播姬,就索性把那个简陋的命令行版本改成了服务器版的。
在自己的使用过程中,也遇到了不少奇葩的直播流问题~经过不断修复和完善后,现在大部分功能已经实现了,也可以相对稳定可靠地录制直播了。
开源这个录制工具已经在 github 上开源了:https://github.com/acgnhiki/blrec,安装和使用详见 README。



