早该录录了2-如何又快又好地产出录播
上一篇文章中,提到过GPU压制,这是快速产出带弹幕录播的关键,这里具体分享一下
以我日常使用的软件ShanaEncoder为例,如果想在保证一定质量的情况下提高速度,下面有几点参数设置是需要注意的:
在自定义-快速设置-编码-编解码器中选择H264(NVENC),调用GPU进行编码,可以大幅提高压制的速度。注意这里的NVENC指的是NVIDIA显卡的编码器,如果你的显卡是别的品牌的,可以选用别的编码器。看有的文章说,此时同时开启硬件解码可以继续提高速度,我没想明白这个原理是什么,但实际做了一下好像也有效果,开启方法是,偏好设置-硬件解码,然后给对应项打钩,具体哪个快可以自己试一试。
需要注意的是,很多地方提到NVENC的压制质量不如CPU编码,NV倒是有文章提到,在Tesla T4上做实验,NVENC的效果已经不输CPU了,我自己也没有仔细比较过。比较取巧的做法是先上传一个GPU压制的版本,然后用CPU压一个再换源,换源是可以转移弹幕的,不用担心。

第二个需要注意的点就是弹幕,因为录播员的习惯可能和大部分人不一样,比如弹幕是全屏还是1/2屏,透明度如何,因为录播姬直出的是xml文件,需要转换成ass文件才能压制到视频里,这里我就推荐用一些可以调整弹幕格式的转换软件。我比较推荐DanmakuFactory这个软件,可以调整弹幕字号、透明度、弹幕密度等等参数。
因为DanmakuFactory这个软件是放在github上的,有的人可能对这个网站的界面不太熟悉,我就具体说一下,这个界面和普通的下载网站不太一样。
点进主页后,会在界面的最右侧一列有Releases这个标签,点击去,再点击Assets展开,有好几个文件。看最上面那四个压缩包,文件名中带GUI的。如果是32位系统,就选择文件名带32的,如果是64位系统,就选择文件名带64的,然后点一下那个压缩包下载。

还有一点就是关于提高录播质量的探索,首先是H.264的各种压制,好像主流编码器也就只有那几个,更多的就没有了。而且这个似乎是一个需要很大量工作的工程项目,也没有什么组织研发出实验性质的,性能更好的编码器。
所以自然地想到了其他压缩标准,这个倒是挺多样的,除了H.264还有H.265,VP9以及其他很多商业公司开发的压缩标准。就以目前除了H.264以外最有可能被使用的H.265为例,H.265至今(2021.9)得不到很多浏览器的支持,至少Firefox和Chrome是原生不支持的,而且B站似乎也会对H.265进行一些二次处理,所以H.265也是不行的,为了兼容性考虑,还是只能用H.264。
现在的情况就是,既然其他对信息(录播源)的二次处理手段都已经穷尽的情况下,录播质量依然不够高,那么能否直接对录播本身入手,“创造”出更多信息,利用深度学习高分辨率再降采样的方法,提高录播的清晰度?我个人因为对于这些方面也有一点了解,觉得这是一个可行的方向,但是具体怎么做以后研究好了再更一个专栏。
还有一个忘了说了,前几年还有什么码率控制避免B站二压的说法,现在已经没有这个说法了,不管什么视频,什么码率,B站一律会进行二压,所以为了达到播放时候最佳的视频质量,最好的做法应该是,直接上传你可以压制出来的码率最高质量最好的视频,不需要再控制码率。

第四个就是关于上传文件的事,首先假设就是一个普通用户啊,电磁力不达标不能上传16G文件。网页端是首先只能上传4G大小以内的文件的,然后用哔哩哔哩投稿工具也是一样。但是用移动端的哔哩哔哩软件就能上传4-8G大小的文件,诶,神奇吧。这独特的机制。
但是不是真的建议你把那个大一个问题先传到手机上,在用手机投稿。最快最方便的做法应该是在电脑上下载一个安卓模拟器,然后直接把需要上传的文件放到安卓模拟器里,然后在模拟器里用哔哩哔哩APP上传。

第五个是关于SC弹幕转化的问题啊,我个人的做法把其他弹幕固定成滚动弹幕,然后把SC弹幕前面加上[SC]字样,然后输出成移动弹幕。具体做法简单说一下
首先这个是要和DanmakuFactory这个软件配合的,录播直出的事XML文件,我这里就是先把XML文件处理一下,再输入DanmakuFactory,转化成ASS文件。
闲谈一下XML文件的格式,这个里面就是一个XML DOM树,我的选择就是把SC相关的节点和普通弹幕相关的节点是不一样,我的做法就是按照SC相关节点的信息删除这个节点,再创建一个信息一样,但是类型是普通弹幕的节点。
节点的p属性记载了很多信息啊,可以看https://zhidao.baidu.com/question/1430448163912263499.html
讲得很清楚,只是有几个需要注意的点
一个是颜色,就是HTML颜色,它本身的格式应该是#FFFFFF这样的,转化成10进制数就是颜色那个参数
还有就是UNIX时间戳,这个参数完全没用,可以乱写
下面是源代码,注释已经很详细了,是用Python写的: