在使用arch做系统录屏时,出现了问题。发现不能录音频。我使用的是kazam录屏软件,在打开时发现preferences的扬声器选项里找不到音频驱动。这样的结果就是录屏时没有音频。
这是怎么回事,只好去学习一下linux的声音系统。原来我们linux的声音系统框架分了三个层。最底层的是驱动层。比如我们常见的alsa以及oss.系统内核默认安装的是alsa.如果我们的应用层只接调用驱动层,则会出现驱动独占现象。比如浏览器放视频的话,另外 一个音乐播放软件则无法播放音频。所以,就设计了一个服务器层。有了这一层,服务器则起了一个桥梁作用。服务与驱动和应用之间,这样就可以实现多线程,也就不会出现驱动独占的现象了。常用的服务器层框架有,pusleaudio,pipewire,jack2等。我安装的是pusleaudio,但现在的情况是kazam仍然无法录音频。但是音乐播放器可以与浏览器同时放音频。这样,显然不是pusleaudio的问题,应该是kazam的问题。google一下,果然。原来,kazam的底层是python写的,当时调用一个time.clock()函数,但是python3.3以后,这个函数弃用了。换成了time.perf_counter()。这个函数位于/usr/lib/python3.10/site-packages/kazam/pulseaudio/pulseaudio.py这个模块下。这取决于你具体的系统发行版,不同的发行版路径可能会不同。然后直接替换一下这个函数名,即可。
现在开始愉快的录屏吧。arch就是这样,让人又爱又恨,它灵活。但有时也会有点有问题。但都是可以解决的。
网友评论