2009-11-11 36 views
0

我在嵌入式項目上使用ALSA dmix插件,並通過使用mpg321-alsa播放它們來混合mp3文件。在我的asound.conf中,我將dmix採樣率設置爲44100Hz。ALSA dmix插件和採樣率問題

如果我嘗試播放以44100Hz以外的頻率採樣的任何mp3文件(或平均分割成44100Hz的頻率),則音頻質量會下降,甚至更糟的是文件的開始被忽略。這裏有一個隨機的方面:如果我創建一個長度爲300ms的音頻文件並通過mpg321-alsa播放,那麼有時它會播放OK,有時根本沒有聲音。

這是dmix的一個已知問題嗎?有沒有任何解決方法,短重新取樣mp3文件?

回答

1

請參閱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 
    } 
} 
+0

感謝。我有一個非常類似於上面顯示的配置。我現在想知道是否需要查看緩衝區,但奇怪的是,音頻截斷在開始時並不在最後。我已經通過http://alsa.opensrc.org/DmixPlugin的ALSA文檔,但仍認爲我錯過了一些東西。 – 2009-11-12 15:08:26