在java中记录流媒体音频?

我试图设置一个程序来记录互联网音频流的一部分,并将其保存到一个文件(最好是mp3或wav)。 我到处寻找,我找不到任何体面的方法来做到这一点。 我发现了两个不同的库,它们看起来像是在工作(NativeBass和Xuggle),但都不支持我需要的64位窗口。

有谁知道任何简单的方法来保存一部分互联网音频流使用Java? (如果它很重要,它是一个“音频/ 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);
        }
    }
}

经过多一点搜索后,我从这里的另一个答案中得到了大部分。 但是,我试图做的一件事是只记录一段时间。 正如你上面看到的,我试图只记录5秒的时间间隔。

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

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


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

链接地址: http://www.djcxy.com/p/49071.html

上一篇: Record streaming audio in java?

下一篇: Programmatic notification of JVM's GC events