如何用OBS实现(原理上的)无损录屏? #1 | 您所在的位置:网站首页 › obs音质 › 如何用OBS实现(原理上的)无损录屏? #1 |
今天介绍第一种方法:X264 CRF0 yuv444p 无损录制的视频要想发出去肯定得二次压缩,毕竟没有设备可以硬解。但其实今天这种方法录下来的视频,用FFmpeg CLI重新封装成MP4就可以直传B站,至少yuv420p的我试过可以。反正你自己压缩了B站也要再压一次,不如直接给B站服务器吐源码,我之前就说过要充分相信现在B站的视频服务器。 假设OBS是刚建立了一个新预设文件的状态。打开设置。 步骤1-21. 切换到"输出"选项卡; 2. 将"输出模式"切换到"高级"。 步骤3-53. 切换到"录像"选项卡,单独设置录制参数。 4. 可以更改默认的保存路径。 5. 建议勾选"生成没有空格的文件名",因为带空格的文件名在命令行参数里需要加引号。也可以在"高级->录像->文件名格式"中自定义文件名。 步骤6-76. 确认"录像格式"为"mkv"或者"ts"。默认值为"mkv"。不要选择"mp4"和"mov",因为MTS流和MKV都是可以中断的,而MP4和MOV不能,如果录制意外停止就悲剧了。 7. 选择"编码器"为"x264"。需要注意的是,以我掌握的情况,目前Intel QSV和NVENC都不支持无损编码。但是实际上Intel QSV支持类似CRF的固定质量编码方式,称为"ICQ",并且可以在OBS中使用,我正在探索如何在FFmpeg中使用它。不过它不是今天的重点。 步骤8-108. 选择"码率控制方式"为CRF。 9. 修改CRF的值为0,默认值是23,CRF=23也是FFmpeg中X264的缺省编码方式。在X264 8Bit下CRF=0代表进行无损编码,无论采样数多少,X264都会自动选择profile=HI444P,因为只有HI444P这一种profile支持CRF=0的无损编码。 10. 选择"CPU使用预设"(也就是preset)为ultrafast。反正肯定要进行二次压缩,而且无损编码加快编码速度不会影响质量,第一次编码时就可以尽量节省CPU资源。 步骤11-1311. 切换到"视频"选项卡。 12. 设置"基础(画布)分辨率"和屏幕分辨率一致; 13. 设置"输出(缩放)分辨率"和屏幕分辨率一致。貌似在设置了画布分辨率后,输出分辨的下拉菜单中的分辨率会自动和画布分辨率比例保持一致。 步骤14-1514. 可以修改"缩小方法"为"双直线法",因为实际上不需要缩放。(问一下各位,OBS有没有检测到画布和输出分辨率一致就关闭缩放算法的逻辑,懒得看源码了)(看了也看不懂,不会C++) 15. 设置FPS值和屏幕刷新率一致。 步骤16-1716. 切换到"高级"选项卡。 17. 选择"颜色格式"为"I444"。虽然X264实际上已经支持了RGB编码,但是实测在这里选择了"RGB"后,输出的视频是yuv420p的。 步骤18-2018. 选择"色彩空间"为"709"; 19. 选择"色彩范围"为"全部"。这是根据常识判断的结果(PC正常情况下应该是sRGB/ITU709 0-255)。但是据我实测,好像这两个选项怎么选都没有区别。。各位有知道怎么回事的可以说一下。 20. 点击"应用"保存更改。 禁止套娃关闭设置窗口,添加一个"显示器捕获"即可开始录屏。 下次可能会讲FFmpeg直接出无压缩RGB流,不过那样码率就很可怕了。今天这种方法至少码率在可控范围内,而且一般软件操作类的视频这样录码率也很低。 图片是用PS做的,做得比较辛苦。。 |
CopyRight 2018-2019 实验室设备网 版权所有 |