热资讯!DanmakuRender:一个录制带弹幕直播流的小工具(版本4)
结合网络上的代码写的一个能录制带弹幕直播流的小工具,主要用来录制包含弹幕的视频流,主要功能如下:...
2023-03-11结合网络上的代码写的一个能录制带弹幕直播流的小工具,主要用来录制包含弹幕的视频流,主要功能如下:
可以录制虎牙斗鱼B站的纯净直播流和弹幕,并且支持在本地预览带弹幕直播流。(抖音的直播只能录视频,录不了弹幕)
可以自动压制弹幕到视频中,并且渲染速度快。
【资料图】
支持在不同操作系统上运行。
支持录播自动上传至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按钮下载压缩包,并把文件解压到你想要的位置。
下载完成后打开程序所在的文件夹(main.py所在的文件夹),然后打开命令行窗口(win10系统shift+右键点击页面空白处,在菜单中选择“在此处打开powershell窗口”,win11在页面右键选择“在终端中打开”)。输入python -V并回车执行,如果出现Python+版本号的输出(例如Python 3.9.13)说明Python安装成功,可以执行下一步,否则检查前面的Python安装步骤是不是没做好。
注意:在Windows 10 旧版本及更早的系统中,可能会出现安装好了也无法正常显示的情况,只要在安装完成后重启一下电脑就好了。
TIPS:可以使用键盘方向键(上下箭头)选择之前执行过的命令,右键可以复制粘贴内容。
新版本使用yaml配置文件的方法来指定录制的参数,配置文件可以直接用记事本打开。配置文件分为两个,分别为default.yml(默认配置文件)和replay.yml(录制配置文件), 一般情况下默认配置文件不需要修改,只需要修改录制配置文件。
启动程序需要在前面说的控制台里运行 python main.py ,不需要附带参数。设置好了之后直接双击main.py打开也可以。
程序第一次运行需要下载环境,下载速度取决于网络速度,环境需要从外国网站下载,可能比较慢。当然你也可以自行前往下载,下载ffmpeg.exe、ffprobe.exe到tools文件夹,如果需要上传的话还需要下载biliup.exe到tools文件夹。
录制配置文件内录制任务应该满足如下格式:
一些常用的录制例子(注意空格!不想打字就去GitHub复制粘贴!):
录制B站13308358直播间:
录制B站13308358直播间,指定分段时间1800秒:
录制两个不同的直播间,指定不同的参数:
带自动上传功能的录制(实验性功能):
在此任务中,视频会上传到B站的默认账号,弹幕视频和源视频将会分别上传,录播中的分段会被作为分P上传,上传任务会在直播结束后进行。如果不想上传源视频就删掉src_video那一条。上传功能由biliup-rs支持,项目地址:https://biliup.github.io/biliup-rs/index.html。
为了保证录播正常,可以先设置分段时间为几分钟录制一个直播试试。上传功能最好是用自己的直播间开播十分钟再下播试试(程序设计最短上传的视频长度为5分钟)。
这里是一个正常录制的例子:
如果使用上传功能,则需要登录到B站,登录方法同biliup。登录信息(cookies)默认保存到.temp文件夹。特别提醒:cookies内包含了登录信息,不要将他分享给任何人!
更丰富的功能和高阶使用可以去GitHub看:https://github.com/SmallPeaches/DanmakuRender。
程序的工作流程是:先录制一小时直播,然后在录制下一小时直播时启动对这一小时直播的渲染。录制完成后可以同时得到直播回放和带弹幕的直播回放(分为两个视频)
程序默认使用NVIDIA的硬件编码器渲染,如果用A卡的话需要修改参数。如果不渲染弹幕就不用管。
在关闭程序时,如果选择了自动渲染弹幕,则一定要等录制结束并且渲染完成再关闭(由于程序设定是先录制后渲染),否则带弹幕的录播会出问题。
如果因为配置比较差,渲染视频比较慢导致渲染比录制慢很多的,可以选择先不渲染弹幕,在录制结束后手动渲染。(这种情况比较少见,因为渲染的速度很快,我1060的显卡都可以同时录两个直播)
在录制的过程中弹幕保存为一个字幕文件,因此使用支持字幕的播放器在本地播放录播可以有弹幕的效果(就算是没渲染弹幕也可以!),拿VLC播放器为例,在播放录像时选择字幕-添加字幕文件,然后选择对应的ass文件就可以预览弹幕了。
自动上传功能需要在主播直播结束之后才开始,然后把视频一次性上传到B站,多个录像会自动作为多个分P上传。注意重启程序之前的视频不会自动上传!
最后一个分P总是播不了,也不会自动渲染?
如果提前关程序的话记得用ctrl+c终止程序,不然就会播不了。当然你也可以把default.yml里面的录制视频格式改成 ts ,这样就不怕提前终止了。
N卡渲染失败:no device cuda?
多半是驱动程序太老了,更新一下就行。
压制出来的视频很糊/文件太大了怎么办?
如果本地看很糊的话说明码率不够,本地文件过大说明码率太高,可以在default.yml里面把默认15M码率改成其他你需要的数值。
如果本地看没有问题,但是上传B站很糊,这是因为B站二压导致的,没有什么特别完美解决办法。目前比较好的方案是伪4K,把1080P的视频缩放成4K,让B站以为是4K视频然后按4K分配码率,保证清晰度。程序里可以设置重缩放来实现(代价是4倍编码时间!)。
使用A卡或者无显卡情况下压制弹幕?
参考default.yml里面的设置修改就行了。
程序有些时候莫名其妙卡住,视频也不录制了,弹幕也没有了?
出现这种情况请私信联系我,保留logs文件夹里的日志文件。
感谢 THMonster/danmaku, wbt5/real-url, ForgQi/biliup 的工作。
如果出现bug欢迎大家评论或者在GitHub中提出。
此程序只供研究学习使用。