ALSA dmix插件和采样率问题

时间:2009-11-11 15:06:40

标签: linux mp3 alsa

我在嵌入式项目中使用ALSA dmix插件,并通过使用mpg321-alsa播放混合mp3文件。在我的asound.conf中,我将我的dmix采样率设置为44100Hz。

如果我尝试播放以44100Hz以外的速率采样的任何mp3文件(或均匀分为44100Hz的速率),则音频质量会降低甚至更糟,文件的开头会被省略。这有一个随机的方面:如果我创建一个300毫米长的音频文件并通过mpg321-alsa播放,那么有时它会播放正常,有时根本就没有声音。

这是dmix的已知问题吗?是否有任何变通方法,没有重新采样mp3文件?

1 个答案:

答案 0 :(得分:2)

请参阅ALSA plugin documentation

  

请注意,dmix插件本身仅支持单个配置。也就是说,它仅支持固定速率(默认48000),格式(S16),通道(2)和period_time(125000)。要使用其他配置,必须在从PCM定义中明确设置该值。额外的插件插件可以覆盖速率,格式和通道,但无论如何只有一个基本配置。

作为示例(根据您的需要进行修改),

pcm.dsp0 {
    type plug
    slave.pcm "asym0"
    slave.rate 44100
}

pcm.asym0 {
    type asym
    playback.pcm "dmix0"
    capture.pcm "dsnoop0"
}

pcm.dmix0 {
    type dmix
    ipc_key 1024
    ipc_perm 0666
    slave {
        pcm {
            type hw
            card 0
            device 0
        }
        period_time 0
        period_size 1024
        buffer_size 65536
        format "S16_LE"
        periods 128
        rate 44100
    }
}

pcm.dsnoop0 {
    type dsnoop
    ipc_key 1025
    ipc_perm 0666
    slave.pcm {
        type hw
        card 0
        device 0
    }
}