簡體   English   中英

在RPI上使用Minim產生斷斷續續/口吃的音頻

[英]Choppy/Stuttering audio using minim on rpi

我試圖在樹莓派的Processing3中獲取並發(本例中為四個)音頻文件來播放時遇到很多麻煩。 音頻最終變得非常斷斷續續,每隔半秒左右就會持續發出口吃聲,直到我決定將其關閉為止。

我還嘗試了一個音頻文件的播放,只是為了檢查它,它起伏不定,持續了好幾秒鍾,然后才變得有點斷斷續續(通常每5秒鍾左右發出斷斷續續的聲音)。

我的第一個嘗試是使用Minim庫,但是我也嘗試了Beads庫(這在pi上完全失敗,直到顯示“內存不足錯誤”都凍結了)。 我也嘗試過Processing的Sound庫,但是無法在我的開發機上首先使用它(Windows 7和Java 1.8崩潰),而且ARM似乎不支持它。

我嘗試播放的文件是當前的mp3文件,盡管我對此有控制權,並嘗試了wav以及具有幾個不同比特率(48、96、128、192 kbps)的mp3。 無論我嘗試的文件類型如何,我都聽不到任何差異。

我正在使用的RPI是B +,最初運行時很忙,但現在我已遷移到jessie-lite的新映像(手動安裝了運行Processing3所需的組件,包括Java 1.8)。 內存分配分配為50%(256mb至gpu)。

現在,使用Minim發出有關我的演奏方式的代碼:

import ddf.minim.*;

private final String TYPE = ".mp3";
private final String MUSIC_A = "01-09_mixdown";
private final String MUSIC_B = "10-18_mixdown";
private final String MUSIC_C = "19-27_mixdown";
private final String MUSIC_D = "28-35_mixdown";
private final String SOUND_LOCATION = "sounds/";

Minim minim;
AudioPlayer[] audioPlayers= new AudioPlayer[4];

// have played with this a few times, trying 512, 1024, and 2048 as well as leaving this out altogether (default was 2048 I think)
int BUFFER_SIZE = 4096;

float changeRate = 0.05;
float[] volumes;

void setup(){
    this.frameRate = 24;
    size(320, 240, P2D);

    minim = new Minim(this);
    audioPlayers[0] = minim.loadFile(SOUND_LOCATION + MUSIC_A + TYPE, BUFFER_SIZE);
    audioPlayers[1] = minim.loadFile(SOUND_LOCATION + MUSIC_B + TYPE, BUFFER_SIZE);
    audioPlayers[2] = minim.loadFile(SOUND_LOCATION + MUSIC_C + TYPE, BUFFER_SIZE);
    audioPlayers[3] = minim.loadFile(SOUND_LOCATION + MUSIC_D + TYPE, BUFFER_SIZE);

    volumes = new float[4];
    volumes[0] = 0.5;
    volumes[1] = 0.5;
    volumes[2] = 0.5;
    volumes[3] = 0.5;

    audioPlayers[0].loop();
    audioPlayers[1].loop();
    audioPlayers[2].loop();
    audioPlayers[3].loop();

    println("Playing now");
}

void draw(){
    // no drawing for this test
}

最后,嘗試在處理之外播放音頻是成功的(使用omxplayer沒問題)。

想知道接下來我還能嘗試什么,有什么想法嗎?

我終於弄清楚了在給定的庫和環境下如何正確播放某種音頻:

我的猜測是mp3解碼器的處理量非常大。 我可能是錯的,但是一個文件與四個mp3文件的區別使我得出了這個結論(即使兩個結果都是斷斷續續/口吃)。

相反,我有wav文件可以工作。

他們以前沒有工作,因為事實證明我以32位浮點深度導出它們,我猜這與minim不兼容。 16位深度似乎可以正常工作,並且同時播放多個文件似乎沒有什么大問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM