连载目录
1.qemu声卡模拟原理-基本使用方法
2.qemu声卡模拟原理-声卡初始化(pa+ac97)
3.qemu声卡模拟原理-声音播放(pa+ac97)

qemu版本:5.2.50
qemu声卡的模拟分为模拟声卡和声卡后端设备两个部分。模拟声卡主要为虚拟机提供一个模拟的硬件设备,他负责声卡的硬件配置操作还有音频数据的转换。而后端负责处理模拟声卡的声音数据,可以是直接播放声音、存储为文件或者传送到远程进行播放。

编译选项

在编译配置中选中要编译的后端,这里添加了oss和pa两个后端设备

./configure  --target-list=x86_64-softmmu --enable-kvm \--audio-drv-list='oss pa'

创建后端设备

要模拟声卡首先要考虑采用那种音频后端设备,常用的后端设备大致有:ossspicesdlwavalsapa这几种。

pa后端

pa其实就是linux上的音频服务pulseaudio,在linux本地播放声音选择pa作为后端是一种较好的方式。oss、alsa都不建议选择,他们会独占声卡导致其他程序无法播放声音,并且qemu的音量不受系统控制。

qemu的后端设备使用参数audiodev来创建

-audiodev pa,id=pa1,server=unix:${XDG_RUNTIME_DIR}/pulse/native,out.stream-name=audio-out,in.stream-name=audio-in

这里特别要注意的是qemu如果用sudo启动会导致环境的改变使得XDG_RUNTIME_DIR不相同,在qemu中还会使用XDG_RUNTIME_DIR环境变量来初始化pa,解决办法可以使用sudo -u ${USER} qemu-system-x86_64 ${args}。建议能不用sudo就不用sudo。
指定频率的写法:

-audiodev pa,id=pa1,out.frequency=48000,out.stream-name=audio-out
spice后端
-audiodev spice,id=sp1
-audiodev alsa,id=snd0,out.buffer-length=10000,out.period-length=2500

spice后端不用创建也是可以的,使用了spice会默认启用spice的音频后端

alsa后端
-audiodev alsa,id=au1,out.dev=default
oss后端
-audiodev oss,id=oss1,out.dev=default

创建模拟声卡设备

后端创建好之后还需要创建一个模拟声卡,模拟声卡使用-device参数创建,以前可以使用-soundhw参数创建,目前已经废弃。模拟声卡通过audiodev=${audiodev_id}的方式与audiodev绑定,常见的模拟声卡型号有:AC97CS4231aHDASB16PCSPKADLIBES1370GUS。根据自己内核拥有的声卡驱动选择合适的声卡设备。

-device AC97,id=sound0,bus=pci.0,audiodev=pa1
-device AC97,id=sound0,bus=pci.0,addr=0x1,audiodev=pa1
-device intel-hda -device hda-output,audiodev=pa1

qemu声卡模拟原理-基本使用方法相关推荐

  1. qemu声卡模拟原理-声音播放(pa+ac97)

    连载目录 1.qemu声卡模拟 2.qemu声卡模拟原理-声卡初始化(pa+ac97) 3.qemu声卡模拟原理-声音播放(pa+ac97) PCM数据 PCM数据格式这里抛砖引玉贴一点别人写的: P ...

  2. qemu声卡模拟原理-声卡初始化(pa+ac97)

    连载目录 1.qemu声卡模拟 2.qemu声卡模拟原理-声卡初始化(pa+ac97) 3.qemu声卡模拟原理-声音播放(pa+ac97) qemu的整个声卡虚拟化都是围绕着audio.c这个文件展 ...

  3. 哪项技术是计算机辅助外科的基础,计算机辅助外科手术计划和模拟原理和方法.pdf...

    计算机辅助外科手术计划和模拟原理和方法.pdf 维普资讯 器蝴表1995112(3)·271~276 计算机辅助外科手术计划和模拟 : I. 原理和方法 郑国焱 综述 (第一军压土学 圈亲赴 奎军重点 ...

  4. QEMU 中音频模拟如何工作

    事情有点棘手,但这里有一个粗略的描述: QEMUSoundCard:建模一个给定的模拟的声卡 SWVoiceOut:建模一个来自 QEMUSoundCard 的音频输出 SWVoiceIn:建模一个来 ...

  5. 前端异步对象的原理与使用方法

    源宝导读:现今互联网的WEB网站,几乎没有不用到JS异步技术的,虽然大家经常用到,但Javascript提供的异步机制如何才能真正用好呢,可能很多开发小伙伴还有点含糊,本文将从常见的开发场景出发,系统 ...

  6. 一步步教你如何在Ubuntu虚拟机中安装QEMU并模拟模拟arm 开发环境(一)uImage u-boot

    初次接触qemu是因为工作的需要,有时候下了班,可能需要在家研究一些东西,因为博主用到arm环境,这时候博主比较小气,不愿花钱买开发板,当然博主在这里给大家的建议是,如果要真正学懂arm构架的相关知识 ...

  7. 基于R语言、MaxEnt模型融合技术的物种分布模拟、参数优化方法、结果分析制图与论文写作

    详情链接 :基于R语言.MaxEnt模型融合技术的物种分布模拟.参数优化方法.结果分析制图与论文写作 内容介绍:  第一章 .理论篇 以问题导入的方式,深入掌握原理基础 : 什么是MaxEnt模型? ...

  8. R语言、MaxEnt模型融合技术的物种分布模拟、参数优化方法、结果分析制图与论文写作

    基于R语言.MaxEnt模型融合技术的物种分布模拟.参数优化方法.结果分析制图与论文写作技术应用 第一章.理论篇以问题导入的方式,深入掌握原理基础 什么是MaxEnt模型? MaxEnt模型的原理是什 ...

  9. php 提取登录QQsid_PHP模拟QQ登录的方法

    本文实例讲述了PHP模拟QQ登录的方法.分享给大家供大家参考.具体实现方法如下: 原理是用curl模拟发送post登录,cookie保存本地 这样理论上可以支持永久单挂QQ //http://blog ...

最新文章

  1. 使用hexo搭建个人博客
  2. ONVIF网络摄像头(IPC)客户端开发—RTSP RTCP RTP加载H264视频流
  3. sql server总结二
  4. python一维数组合并_Python编程:如何将多个一维数组的元素交叉拼接成新的一维数组...
  5. 关于 tomcat启动后无法访问的问题(localhost:8080 (or your port specified))
  6. debian 安装php gd2,如何在Debian Linux中为PHP安装Ioncube
  7. 【转载】(Git)用动图展示10大Git命令
  8. 【嵌入式软件工程师常用工具分享】串口监控工具
  9. win7计算机高级还原,win7怎么恢复出厂设置 win7恢复出厂设置方法【图文】
  10. Tomb.Finance的每周更新(5.16-5.22)「Harry大财主的每周二更新」
  11. DRV8825步进电机驱动详细说明书————含接线图
  12. 【实战】PyTorch 在 CIFAR-10 数据集上的训练及测试过程
  13. 牛客竞赛小白试炼(20201205 怕npy的牛牛)
  14. Vegas Pro 16中文版
  15. python 黑魔法_Python “黑魔法” 之 Meta Classes
  16. 中国科学院大学计算机学院夏令营,2019年中国科学院大学生数学夏令营招募通知...
  17. 企业数字化转型之道:3L8P转型模型
  18. 如何关闭掉magento后台没用的功能
  19. 螺旋阵python实现
  20. php验证码实现代码(3种)验证类

热门文章

  1. vscode_为markdown启用latex插件(markdown+latexWorkship)(变通方法workaround)(latex公式实时预览)
  2. jQuery01(入门选择器)
  3. 怎样通过注册表禁用USB口和解封USB口?
  4. 充电桩小程序,共享充电桩小程序,共享充电桩系统毕业设计作品
  5. 我家云粒子云刷机教程刷机助手下载
  6. Python项目实战 —— 02. 疫情前后全国人口流动可视化大屏
  7. 絮叨一下最近的那些人那些事
  8. Python面向对象之多态
  9. VS2022 安装.net4.5(亲测有效)
  10. 2021-02-20 PMP 群内练习题 - 光环