
经过接近 10 个月的开发和测试,录播姬 1.3 发布啦!
B站录播姬官网 https://rec.danmuji.org
友情提醒:请注意文章的发布时间,在你阅读本文时文中的信息可能已经过时失效。
从录播姬发布以来,时不时就有用户反馈录出的视频文件有奇奇怪怪的问题,经过研究发现是B站直播服务器给的直播流本身就有问题。
在整理了问题的规律之后试着写了个简易版录播修复工具(项目名 BililiveStreamFileFixer,虽然没有公开发布和宣传,但据我所知后来也被传到了一些录播组里)放到了录播姬讨论QQ群的群文件,经群友测试有效。我在大约 10 个月前开始整理之前收到的各种录播问题,重构重写直播数据处理的代码,最终在录播姬 1.3 中完成了全新的录播修复系统,支持一键全自动修复到现在为止我收到的不正常录播样本里的所有问题*。
*缺失音视频头的问题除外,不过目前可以配合我的另外一个工具手动修复。更换音视频头的功能会在录播姬以后的版本添加。
其他人以前对类似问题进行修复的尝试可以看下面两个文章:
现在各种各样的录播问题都可以在录播姬的工具箱里一键修复啦!
下载安装打开录播姬,选择工具箱模式
点击左侧的工具箱按钮,选择录播修复
选择有问题录播文件,点击修复
????
profit
录播姬命令行版使用 ./BililiveRecorder.Cli tool --help 查看工具箱的命令帮助

录播姬工具箱的录播修复界面,截图为开发测试版的界面
修复系统会对读取到的数据进行分析,有可能会切割输出为多个文件、修改音视频数据的时间戳、并删除重复出现的数据和没有作用的无效数据。
在录播姬工具箱里点击“修复失败?”按钮,导出分析数据,把分析数据文件通过邮箱或QQ群反馈给我。具体反馈方式见官网文档。
可以修复
录播姬 1.3 原始数据模式录制的 FLV 文件
录播姬 1.2 或更早版本录制的 FLV 文件
其他通过直接下载流方式录制B站直播,并且没有经过任何处理的 FLV 文件
从直播回放下载的 FLV 文件
不能修复 ffmpeg 处理过的文件!因为 ffmpeg 不能正确识别有问题的文件里的内容,会导致文件进一步损坏,无法修复。有些直播录制软件的“时间戳修复”功能就是用 ffmpeg 转封装,所以经过其他软件“时间戳修复”的文件也无法修复。
如果有剪辑、转封装等需求,要先使用录播姬修复之后再用 ffmpeg 进行操作。
下面列出一些常见的有问题的录播文件的现象。
投稿到哔哩哔哩主站时
转码失败:该视频文件中时间戳有跳变,请检查文件修正跳变后重新压制上传
转码失败:该视频时长超过 10 小时,请剪辑后通过分P上传(实际视频时长不到10个小时)
转码失败:该视频无视频轨,请补充视频轨并重新压制上传(实际本地播放器可以播放视频画面)
转码失败:该视频数据有误,请检查并修复视频数据后重新上传

录播投稿转码失败示例
使用 FFmpeg 读取时
Non-monotonous DTS in output stream 0:1; previous: 000000, current: 000000; changing to 000000. This may result in incorrect timestamps in the output file.
在本地使用播放器播放时

视频开头正常,但是后面画面花屏
视频开头正常,后面画面花屏、绿屏
视频开头正常,后面无声音
无法拖动视频进度条
当前播放时间显示为几百小时
拖动进度条后整个播放器卡住
文件很大,但是播放器只能识别其中短短几分钟内容
视频顺序播放时正常,拖动进度条后在刚才正常播放的位置音画不同步