Pulseaudio进阶开发之default.pa实战案例(三十三)

Pulseaudio进阶开发之default.pa实战案例(三十三)

简介:CSDN博客专家、《Android系统多媒体进阶实战》作者

博主新书推荐:《Android系统多媒体进阶实战》🚀
Android Audio工程师专栏地址:Audio工程师进阶系列原创干货持续更新中……】🚀
Android多媒体专栏地址:多媒体系统工程师系列原创干货持续更新中……】🚀
专题一 二:AAOS车载系统+AOSP14系统攻城狮入门视频实战课🚀
专题三:Android14 Binder之HIDL与AIDL通信实战课🚀
专题四:Android15快速自定义与集成音效实战课🚀
专题五:Android15音频策略实战课🚀
专题六:Android15音频性能实战课(无声/杂音/断音/爆音实战案例)🚀

人生格言:人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.

更多原创,欢迎关注:Android系统攻城狮


🍉🍉🍉文章目录🍉🍉🍉

    • 🌻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.paclient.conf / daemon.confload-module属于server启动脚本逻辑
自动发现ALSA声卡default