我在嵌入式Linux板上工作(基於Eukrea iMx25)。應用程序是一款可以播放音樂或其他歌曲的遊戲。我從無線電設備獲取事件,然後播放wav文件。Linux音頻應用程序:想要低延遲播放(並停止)
自制播放器:用於播放第一個解決方案是使用開/寫功能,能輸出的/ dev/DSP。延遲非常好,迅速啓動歌曲並迅速停止。但是,有一些錯誤,有時候歌曲會被歌曲末尾的噪音或噪音所取代。 (這可能是由於與硬件同步播放的問題,因爲此程序應用程序單獨作爲極簡程序測試單獨運行)。 (單聲道):第二種解決方案是使用linux發行版中提供的「aplay」。問題是延遲,當遊戲在啓動後立即停止時(從tlv320aic23設備),會出現一些kernell錯誤。因爲我的無線電傳感器有100毫秒的延遲,所以在停止播放之前等待100或200毫秒是不可接受的。
aplay with dmix(polyphonic):我認爲在這兩種解決方案中,限制均歸因於tlv320aic23設備。我不知道使用一個聲音服務器可能是最好的。我可以在收到活動後立即播放一首新歌,並在需要時停止播放歌曲。我測試了aplay -D plug:dmix /home/root/mysong.wav,但是在不同的測試後,我的插件崩潰了。問題是沒有任何錯誤返回aplay有關插件崩潰和aplay沒有dmix仍然有效。
我應該使用其他聲音服務器嗎?例如「傑克」?
下面是測試程序:
for(i=50; i>0; i--){
periode = 23 * i;
// Display in log
msg(USER, MSG_CONTROLE, "declenchement dalle %d et attente %f",
choixDalle, periode);
// Send event to audio task
signalerAppuiDalleCtrl(&ctrlInstances, Hw.xmlParams, &Hw, choixDalle+100, 0);
// Waiting with arg in second
attendre(periode/1000.0);
}
這是不可能的,任何其他API將能夠做的比ALSA更多,因爲驅動器/內核是基於ALSA。所以任何像JACK這樣的第三方解決方案都基於ALSA。有許多不同的ALSA播放選項。請參閱:[Alsa lib文檔](http://www.alsa-project.org/alsa-doc/alsa-lib/index.html)和[PCM概述](http://www.alsa-project.org/) ALSA-DOC/ALSA-LIB/pcm.html)。確保您已啓用FIQ支持。您可以降低採樣率。您可能需要更改來源以適合FIQ模型;我不確定它支持什麼比率/格式。您不希望軟件轉換樣品。 –
我預計傑克就像插入dmix一樣沒有崩潰。 – vincenet
我必須做一些關於FIQ模型的研究來理解你的警告。我希望啓用FIQ,因爲我使用Eukrea的腳本來編譯kernell和rootfs,但也許我錯了。 – vincenet