使用IVSHMEM的Scream做为libvirt的声音输出
首先做好系统,我所使用的主机系统是manjaro,qemu+libvirt+ovmf虚拟出windows 10,并且PCI直通显卡
声音方面采用https://github.com/duncanthrax/scream 使用里面的IVSHMEM设备,这个设备其实looking-glass也有在使用
Ivshmem是虚拟机内部共享内存的pci设备。虚拟机之间实现内存共享是把内存映射成guest内的pci设备来实现的。
[IVSHMEM介绍][1]
简单介绍完后,那么开始
编辑虚拟机添加IVSHMEM的地址
sudo virsh edit [该虚拟机名字]
在最底下前面添加 (可以使用Page Down跳到最底)
2 下载并编译scream源码
Scream源码在最新版本里下载 Source code (tar.gz) 并解压tar -zxvf ./scream-*.tar.gz
cd ./scream-*
cd ./Receivers/pulseaudio-ivshmem
make
mv scream-ivshmem-pulse ~
开启虚拟机,安装好驱动
IVSHMEM驱动 下载好IVSHMEM驱动解压,打开设备管理器
在系统设备里有个【PCI标准RAM控制器】 更新驱动
选择好IVSHMEM目录
安装scream驱动
Scream源码 在最新版本里下载 Scream[版本].zip 解压 以管理员模式运行install.bat运行regedit 注册表
进入HEKY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Scream\
创建Options项,在Options里面添加DWORD(32位)值 [UseIVSHMEM] 数值为2- 在声音设备里设置Scream为默认设备
在宿主机运行Scream IVSHMEM
sudo ~/scream-ivshmem-pulse /dev/shm/scream-ivshmem
到此已完成,虚拟机已有声音,这教程我仅仅用于记录而已,大部分内容可以在链接中找到,如果有缺失要么版本更新了,要么没装命令
Ps:其实做好了延迟很高,并不能玩音游之类的游戏,如OSU