简介:CSDN博客专家、《Android系统多媒体进阶实战》作者
博主新书推荐:《Android系统多媒体进阶实战》🚀
Android Audio工程师专栏地址:Audio工程师进阶系列【原创干货持续更新中……】🚀
Android多媒体专栏地址:多媒体系统工程师系列【原创干货持续更新中……】🚀
专题一 二:AAOS车载系统+AOSP14系统攻城狮入门视频实战课🚀
专题三:Android14 Binder之HIDL与AIDL通信实战课🚀
专题四:Android15快速自定义与集成音效实战课🚀
专题五:Android15音频策略实战课🚀
专题六:Android15音频性能实战课(无声/杂音/断音/爆音实战案例)🚀
人生格言:人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.
🍉🍉🍉文章目录🍉🍉🍉
- 🌻1.前言
- 🌻2.开发需求
- 🌻3.解决方案
- 3.1 default.pa配置路径
- 3.2 default.pa在启动流程中的位置
- 🐓4.实战案例
- 4.1 配置方案
- 🐓4.2 default.pa基本语法
- 🐓4.3 加载native unix socket协议
- 🐓4.4 自动发现ALSA声卡
- 🐓4.5 手动创建ALSA播放设备
- 🐓4.6 手动创建ALSA录音设备
- 🐓4.7 设置默认播放设备
- 🐓4.8 设置默认录音设备
- 🐓4.9 创建虚拟播放设备null-sink
- 🐓4.10 创建音频回环loopback
- 🐓4.11 创建重映射播放设备remap-sink
- 🐓4.12 开放TCP native protocol
- 🐓4.13 加载设备恢复和流恢复模块
- 🐓4.14 控制空闲挂起模块
- 🐓4.15 加载always-sink兜底模块
- 🐓4.16 验证配置是否生效
- 4.16.1 查看已加载模块
- 4.16.2 查看声卡
- 4.16.3 查看播放设备sink
- 4.16.4 查看录音设备source
- 4.16.5 查看默认播放设备
- 4.16.6 查看默认录音设备
- 4.16.7 查看当前播放流
- 4.16.8 查看当前录音流
- 4.16.9 前台调试启动脚本
- 🌻5.常见问题定位
- 5.1 修改default.pa后为什么不生效?
- 5.2 load-module失败导致后续命令没执行怎么办?
- 5.3 加载module-alsa-sink失败怎么办?
- 5.4 设置了set-default-sink,为什么应用没走这个sink?
- 5.5 开放TCP后为什么远程客户端连接失败?
- 5.6 创建了null-sink,为什么听不到声音?
- 5.7 为什么出现重复sink/source?
- 5.8 注释module-suspend-on-idle后为什么设备还是SUSPENDED?
- 🌻6.总结
🌻1.前言
本篇目的:Pulseaudio进阶开发之default.pa实战案例
- 1.default.pa:
- 主要控制PulseAudio server启动后加载哪些模块、创建哪些server侧对象、设置哪些server侧默认策略,例如加载ALSA模块、加载native protocol模块、创建sink/source、设置默认sink/source、加载蓝牙发现模块、创建null-sink、loopback、remap-sink等。
🌻2.开发需求
通过default.pa调整PulseAudio server启动脚本,让声卡加载、默认设备、虚拟设备、远程连接、嵌入式音频拓扑。
实际开发中常见需求:
| 配置目标 | 应该改哪个文件 | 不应该改哪个文件 | 原因 |
|---|---|---|---|
| 控制server启动后加载哪些模块 | default.pa | client.conf / daemon.conf | load-module属于server启动脚本逻辑 |
| 自动发现ALSA声卡 | default |