一个录制带弹幕直播流的小工具(版本2)
简介
做这个小软件的原因是最近看MDY的录男为了摆烂找出一大堆借口,搞得人民群众没录播看,于是乎在看直播的同时写了这样一个小工具来帮助录男们实现自动化生产。
结合上个版本存在的一些问题(用AE很麻烦,然后运行也不太稳定),这个版本可以直接录制带弹幕的直播流,不需要做任何转换。

本文主要介绍从没用过Python和命令行的萌新使用这个代码,如果你已经有相关基础可以直接看GitHub的简介。
GitHub项目地址:https://github.com/SmallPeaches/DanmakuRender。有更新第一时间会在GitHub上更新,有问题可以先去重新下载一份最新的代码试试。
环境准备
这个版本的使用方法大致和上个版本一样,如果之前已经安装好环境了就不用重新装了,只需要重新下载一份代码文件覆盖之前那个就行。
首先下载代码文件,前往GitHub项目地址,然后依次点击Code-Download ZIP按钮下载压缩包,并把文件解压到你想要的位置。

下载FFmpeg。首先下载ffmpeg压缩包(https://www.gyan.dev/ffmpeg/builds/ffmpeg-git-essentials.7z),下载完成后解压,把bin/ffmpeg.exe文件复制到代码目录下的tools文件夹里就行了,最后tools文件夹至少有以下文件。

然后下载Python(不知道怎么下的就下载这个 https://www.python.org/ftp/python/3.10.0/python-3.10.0-amd64.exe)。安装时一定要注意选择Add Python xxx to PATH这个选项,至于安装路径什么的可以自由选择。

下载完成后打开之前下载的代码所在的文件夹(pyrender.py所在的文件夹),然后打开命令行窗口(win10系统shift+右键点击页面空白处,在菜单中选择“在此处打开powershell窗口”,win11直接右键选择“打开Windows Terminal窗口”)。输入python -V并回车执行,如果出现Python+版本号的输出(例如Python 3.10.0)说明Python安装成功,可以执行下一步,否则检查前面的Python安装步骤是不是没做好。
注意:在Windows 10 旧版本及更早的系统中,可能会出现安装好了也无法正常显示的情况,只要在安装完成后重启一下电脑就好了。
继续之前的命令行窗口,输入pip install -r requirements.txt安装Python包,安装完成后就可以开始执行程序了。
TIPS:可以使用键盘方向键(上下箭头)选择之前执行过的命令,右键可以复制粘贴内容。
运行程序
这里只给出一些常见的使用指令,具体的参数请大家参考GitHub(https://github.com/SmallPeaches/DanmakuRender#详细说明)
注意事项:
理论上每次执行都需要在代码所在文件夹下打开命令行窗口,以下命令均在命令行窗口下输入。如果不想输命令的话直接双击pyrender.py也能运行,不过就不能修改除了录制路径之外的参数了。
程序默认使用NVIDIA的硬件编码器,如果用A卡的话需要另外附带参数。
程序默认录制码率是15Mbps(大概一个小时6-7GB),运行大概消耗30%-40%的CPU,10%-20%的GPU以及1GB内存(在i7-8750H+GTX1060下测试)。
实例:
python pyrender.py -u https://www.huya.com/712416 录制虎牙712416直播间,其他选项全部默认(录制出来就是简介图片里的效果)
python pyrender.py -u https://www.huya.com/712416 -n 甜药 录制虎牙712416直播间,并将录制名称设置为甜药(然后输出文件名称就会以甜药xxx开头)
python pyrender.py -u https://www.huya.com/712416 -n 甜药 -s 3600 录制甜药直播间,并将文件分成一个小时一块。
python pyrender.py -u https://www.huya.com/712416 -n 甜药 --gpu amd 使用AMD显卡,录制甜药直播间。
python pyrender.py -u https://www.huya.com/712416 -n 甜药 --fontsize 36 录制甜药直播间,指定弹幕大小为36像素(默认大小是30像素)
python pyrender.py -u https://www.huya.com/712416 --debug 录制虎牙712416直播间,将录制的具体信息输出,建议在运行之前用这个指令先试一下录制正不正常。如果出现问题的话也可以用这个指令运行然后把输出发给我。
成功运行的效果应该是这个样子(一定要后面的time在变化,speed接近1才算成功):

注意:如果信息一行显示不完然后输出很乱的话就把命令行窗口拉宽一点。
最后
如果有bug很正常。如果出了bug可以私信或者在GitHub上面提交issue,我会尽量帮你解决。另外有什么好的改进想法也可以和我说。
感谢 THMonster/danmaku, wbt5/real-url, ForgQi/biliup 的工作。