如何用OBS实现(原理上的)无损录屏? #1

您所在的位置:网站首页 obs编码器编码错误 如何用OBS实现(原理上的)无损录屏? #1

如何用OBS实现(原理上的)无损录屏? #1

2023-09-06 18:24| 来源: 网络整理| 查看: 265

今天介绍第一种方法:X264 CRF0 yuv444p

无损录制的视频要想发出去肯定得二次压缩,毕竟没有设备可以硬解。但其实今天这种方法录下来的视频,用FFmpeg CLI重新封装成MP4就可以直传B站,至少yuv420p的我试过可以。反正你自己压缩了B站也要再压一次,不如直接给B站服务器吐源码,我之前就说过要充分相信现在B站的视频服务器。

假设OBS是刚建立了一个新预设文件的状态。打开设置。

步骤1-2

1. 切换到"输出"选项卡;

2. 将"输出模式"切换到"高级"。

步骤3-5

3. 切换到"录像"选项卡,单独设置录制参数。

4. 可以更改默认的保存路径。

5. 建议勾选"生成没有空格的文件名",因为带空格的文件名在命令行参数里需要加引号。也可以在"高级->录像->文件名格式"中自定义文件名。

步骤6-7

6. 确认"录像格式"为"mkv"或者"ts"。默认值为"mkv"。不要选择"mp4"和"mov",因为MTS流和MKV都是可以中断的,而MP4和MOV不能,如果录制意外停止就悲剧了。

7. 选择"编码器"为"x264"。需要注意的是,以我掌握的情况,目前Intel QSV和NVENC都不支持无损编码。但是实际上Intel QSV支持类似CRF的固定质量编码方式,称为"ICQ",并且可以在OBS中使用,我正在探索如何在FFmpeg中使用它。不过它不是今天的重点。

步骤8-10

8. 选择"码率控制方式"为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-13

11. 切换到"视频"选项卡。

12. 设置"基础(画布)分辨率"和屏幕分辨率一致;

13. 设置"输出(缩放)分辨率"和屏幕分辨率一致。貌似在设置了画布分辨率后,输出分辨的下拉菜单中的分辨率会自动和画布分辨率比例保持一致。

步骤14-15

14. 可以修改"缩小方法"为"双直线法",因为实际上不需要缩放。(问一下各位,OBS有没有检测到画布和输出分辨率一致就关闭缩放算法的逻辑,懒得看源码了)(看了也看不懂,不会C++)

15. 设置FPS值和屏幕刷新率一致。

步骤16-17

16. 切换到"高级"选项卡。

17. 选择"颜色格式"为"I444"。虽然X264实际上已经支持了RGB编码,但是实测在这里选择了"RGB"后,输出的视频是yuv420p的。

步骤18-20

18. 选择"色彩空间"为"709";

19. 选择"色彩范围"为"全部"。这是根据常识判断的结果(PC正常情况下应该是sRGB/ITU709 0-255)。但是据我实测,好像这两个选项怎么选都没有区别。。各位有知道怎么回事的可以说一下。

20. 点击"应用"保存更改。

禁止套娃

关闭设置窗口,添加一个"显示器捕获"即可开始录屏。

下次可能会讲FFmpeg直接出无压缩RGB流,不过那样码率就很可怕了。今天这种方法至少码率在可控范围内,而且一般软件操作类的视频这样录码率也很低。

图片是用PS做的,做得比较辛苦。。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3