java targetdataline随机返回0个字节。

时间:2018-07-17 14:48:10

标签: java

我有一个名为“ collectAudio”类的应用。此类创建并打开通往音频接口的targetdataline以收集字节流。这是使用

读取的
int numBytesRead1 = line.read(buffer1, 0, buffer1.length);

buffer1是我在应用程序中用于参考的缓冲区。缓冲区很大,足以从交错的字节流中采样一秒的音频。

然后我将其解交织以提取所需的通道,并将字节转换为双精度值,然后将其存储在更大的循环缓冲区中。

就其本身而言,它的运行情况绝对不错。调用此类的实例是从其自己的线程开始的,当我分析查看线程的应用程序时,它运行的时间非常少,可以将该数据流写入缓冲区。

我希望我的应用程序能够处理四个数据通道。这可以来自不同的来源,因此我创建了collectAudio类的四个实例。对于大多数人来说,这完全符合我的期望,并具有剩余的处理能力和可用资源。但是,通常,一个或两个通道在字节流下返回0字节。如果我对此进行调试并检查我的buffer1(字节流写入的第一个位置),则丢失的通道的内容全部为0.0。

我不知道为什么。我看不到发生任何错误或异常。据我检查时所知,该生产线尚未停止或关闭。可能与垃圾回收有关吗?
目前,我对同一个接口中的通道并不聪明,并要求为使用的每个通道打开一个新行,但是如果使用相同的接口,我只是想从解交错的字节流中提取通道,而不是尝试打开一个新队。这可能是我看到的错误的原因吗?

我已经尽我所能,没有想法。将不胜感激任何指针或建议。

0 个答案:

没有答案
相关问题