linux 音频播放的系统层问题

1. 音频框架简单介绍

linux 的音频管理是比较繁杂,我们的音频框架上层应用是的 js 服务, 中间层 ffmpeg + pulseaudio,底层的 alsa。 整个链路比较长,如何快速的定位播放问题是个问题,我对常见的问题做了总结

2. 常见问题的定位

2.1 设备无声

a. 确认各播放相关的进程是否正常,在内存珍贵的开发板上发送内存不足,进程被 OOM 一点也不奇怪,查看 pulseaudio 等播放相关进程被 kill

b. ffplay 确认中间层 ffmpeg 的基本功能

c. paplay 播放 wav 文件确认 paulseaudio 是否播放正常

d. pactl list 确认设备是不是被静音

e. pactl list sinks 检查 sink 流有木有被切到蓝牙设备上

f. aplay 播放 wav 文件确认 alsa 是否播放正常

g. 查看设备节点 ls dev/snd/

h. 检查喇叭是否连接好

备注:
  1. pulseaudio 可以直接管理一些流之外,它可以自主的切换输出流,比如切到 蓝牙设备上,耳机,蓝牙耳机很快切换 sink
  2. 可以使用 pactl 查看和设置当前 pulseaudio 的状态和每个sink、sink-input、source、source-output 的状态。
pactl -h
pactl [options] stat
pactl [options] info
pactl [options] list [short] [TYPE]
pactl [options] exit
pactl [options] upload-sample FILENAME [NAME]
pactl [options] play-sample  NAME [SINK]
pactl [options] remove-sample  NAME
pactl [options] load-module  NAME [ARGS ...]
pactl [options] unload-module  NAME|#N
pactl [options] move-(sink-input|source-output) #N SINK|SOURCE
pactl [options] suspend-(sink|source) NAME|#N 1|0
pactl [options] set-card-profile  CARD PROFILE
pactl [options] set-default-(sink|source) NAME
pactl [options] set-(sink|source)-port NAME|#N PORT
pactl [options] set-(sink|source)-volume NAME|#N VOLUME [VOLUME ...]
pactl [options] set-(sink-input|source-output)-v
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值