一个录制多平台带弹幕直播的工具——DanmakuRender
结合网络上的代码写的一个能录制带弹幕直播流的小工具,主要用来录制包含弹幕的视频流,主要功能如下: 可以同时录制纯直播流和弹幕,并且支持在本地预览弹幕直播流。
支持多平台,包括B站、斗鱼、虎牙、抖音和网易CC。
可以自动压制弹幕到视频中。
支持在不同操作系统上运行。
支持录播自动上传至B站。
支持上传完成后自动清理上传文件。
实际上之前已经写过一个说明文档,但是后来改动比较多,原文档已经不太适应环境了,就写了个新的。本文主要给从没用过Python和命令行的萌新使用,如果你已经有相关基础可以直接看GitHub的安装说明文档。 GitHub项目地址:https://github.com/SmallPeaches/DanmakuRender。有更新第一时间会在GitHub上更新。 安装说明
安装Python:
如果你之前安装过Python的话直接下载代码使用就行了,如果没有安装Python则先安装Python(不知道怎么下的就下载这个 https://www.python.org/ftp/python/3.9.13/python-3.9.13-amd64.exe)。
安装时一定要注意选择Add Python xxx to PATH这个选项
,其他的安装路径什么的可以自由选择,不懂的话默认也行。
下载程序文件:
前往GitHub项目地址,然后依次点击Code-Download ZIP按钮下载压缩包,并把文件解压到你想要的位置。
如果你一路上都没有遇到报错就应该可以开始使用了(相关运行环境会在第一次录制时自动下载)。 使用方法
新版本使用yaml配置文件的方法来指定录制的参数。 点开configs文件夹,复制一份example.yml,并且重命名为replay-<任务名称>.yml,例如:replay-飞天狙.yml,这个文件里面的参数就对应着一个录制任务,里面可以具体设置不同的录制参数,一般情况下只要填个URL改一下分段时间。录制多个主播就复制多个配置文件,然后分别设置。
第一次录制时建议使用控制台打开(win10系统shift+右键点击页面空白处,在菜单中选择“在此处打开powershell窗口”,win11在页面右键选择“在终端中打开”,然后输入python main.py运行程序)。如果正常录制没有出问题的话之后就可以直接双击main.py运行了。 第一次启动程序会让你下载相关的运行环境,如果下载很慢的话可以参考GitHub的安装文档手动下载。 正常录制的效果如下:
如果使用了自动上传的话,启动程序之后会要求你登录,登录时如果无法正确显示二维码可以手动打开文件夹里面的qrcode.png图片扫码,登录效果是一样的。登录的cookies信息会保存到.temp文件夹下面。
特别提醒:cookies内包含了登录信息,不要将他分享给任何人!
如果担心程序运行不正常导致胡乱下载上传,可以先运行dryrun.py来测试,它会自动录制3段一分钟的录播,然后按照给定的设置渲染与上传,上传时还会自动选择延迟24小时发布,你可以使用它来检测下载的视频是否正常,上传的设置是否正确等。 如果需要修改编码器参数(比如说码率什么的),请打开主文件夹下的replay.yml按说明修改。 注意事项
程序的工作流程是:先录制一小时直播,然后在录制下一小时直播时启动对这一小时直播的渲染。录制完成后可以同时得到直播回放和带弹幕的直播回放(分为两个视频)
程序默认使用NVIDIA的硬件编码器渲染,如果用AMD显卡的话需要打开主文件夹下的replay.yml按说明修改编码器!
在关闭程序时,如果选择了自动渲染弹幕,则一定要等录制结束并且渲染完成再关闭(由于程序设定是先录制后渲染),否则带弹幕的录播会出问题。 如果因为一些情况导致视频渲染失败的,可以在录制结束后双击render_only.py手动渲染。 在录制的过程中弹幕保存为一个字幕文件,因此使用支持字幕的播放器在本地播放录播可以有弹幕的效果(就算是没渲染弹幕也可以!),拿VLC播放器为例,在播放录像时选择字幕-添加字幕文件,然后选择对应的ass文件就可以预览弹幕了。 如果上传时不使用实时上传功能,那么上传会在主播直播结束之后开始。多个录像会自动作为多个分P上传。注意重启程序之前的视频不会自动上传! 常见问题
N卡渲染失败:no device cuda?
多半是驱动程序太老了,更新一下就行。 压制出来的视频很糊/文件太大了怎么办?
如果本地看很糊的话说明码率不够,本地文件过大说明码率太高,可以在replay.yml里面把默认15M码率改成其他你需要的数值。 如果本地看没有问题,但是上传B站很糊,这是因为B站二压导致的,没有什么特别完美解决办法。目前比较好的方案是伪4K,把1080P的视频缩放成4K,让B站以为是4K视频然后按4K分配码率,保证清晰度。程序里可以设置重缩放来实现(
代价是4倍编码时间!
)。 渲染太慢了?
如果是GPU渲染的话,正常速度应该在3-6倍速。如果渲染异常慢可以先看看CPU和GPU占用(要看任务管理器-GPU-video encoder里面的数值),如果占用低而且慢的话可以开个issue讨论一下。 更多
感谢 THMonster/danmaku, wbt5/real-url, ForgQi/biliup 的工作。 如果出现bug欢迎大家评论或者在GitHub中提出。
此程序只供研究学习使用。