在java中录制流媒体音频?

404*_*und 7 java audio 64-bit record stream

我试图建立一个节目的录制互联网音频流的一部分,并将其保存到一个文件中(最好是MP3或WAV).我到处寻找,我找不到任何体面的方法来做到这一点.我发现,好像他们会工作(NativeBass和Xuggle)两个不同的库,但也支持64位Windows这正是我需要的.

有没有人知道使用java保存一部分互联网音频流的简单方法?(如果重要的话,那就是"audio/mpeg"流).

编辑:好的,我发现了一种似乎有用的方法.但我还有一个问题

import java.net.URLConnection;
import java.net.URL;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.FileOutputStream;
import java.io.File;
public class Test{

    public static void main (String[] args){
        try{
            URLConnection conn = new URL("http://streamurl.com/example").openConnection();
            InputStream is = conn.getInputStream();

            OutputStream outstream = new FileOutputStream(new File("C:/Users/Me/Desktop/output.mp3"));
            byte[] buffer = new byte[4096];
            int len;
            long t = System.currentTimeMillis();
            while ((len = is.read(buffer)) > 0 && System.currentTimeMillis() - t <= 5000) {
                outstream.write(buffer, 0, len);
            }
            outstream.close();
        }
        catch(Exception e){
            System.out.print(e);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

经过一番搜索,我从这里得到了大部分的答案.但是,我要做的一件事就是只记录一段时间.如上所示,我试图只记录5秒的间隔.

long t = System.currentTimeMillis();
while ((len = is.read(buffer)) > 0 && System.currentTimeMillis() - t <= 5000) {
Run Code Online (Sandbox Code Playgroud)

但是,由于某种原因,录制的音频不是5秒长,它的16有谁知道如何在限制流的长度更精确?

Rob*_*ert 4

如果您确实想要 5 秒,您可以根据收到的字节数和音频流的比特率自行计算。