在rpi

时间:2017-04-28 03:42:19

标签: java audio raspberry-pi processing playback

我似乎在尝试获得并发(在这种情况下为四个)音频文件以在raspberry pi上的Processing3中播放时遇到大量麻烦。音频最终变得非常波涛汹涌,每隔半秒左右持续不断口吃,直到我决定将其关闭。

我还尝试过播放一个音频文件进行检查,它开始时非常不稳定几秒钟,然后变得略微不稳定(每隔约5秒左右一直是口吃)。

我的第一次尝试是使用Minim库,但我也尝试过Beads库(这完全在pi上完成,冻结直到出现#34;内存不足错误") 。我也曾尝试过处理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没有问题)。

想知道我接下来还能尝试什么,有什么想法吗?

0 个答案:

没有答案