java - 在 java 中录制流式音频?

标签 java audio 64-bit stream record

我正在尝试设置一个程序来录制互联网音频流的一部分,并将其保存到一个文件(最好是 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 秒,您可以根据收到的字节数和音频流的比特率自行计算。

关于java - 在 java 中录制流式音频?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4351582/

相关文章:

java - Java中的引用变量?

java - 在 SOLR 中创建集合

java - 仅从表中选择某些列

iphone - 创建带有许多音频片段的新音频文件

visual-studio - 在 Visual Studio 2008 Express Edition (VS2008EE) 中配置 64 位编译

Java反射调用私有(private)方法和字段,因为调用顺序不同导致结果不同

c# - 将 Accord 音频库与 Windows Phone 8.1 应用程序(非 Silverlight)一起使用

linux - 如何将口语音频与引用录音进行比较 - 语言学习

java - Windows Server 2008 上的 64 位 Java 8 或多或少使用整个服务器 CPU

c# - Entity Framework 在 x64 和 x86 上的启动速度要慢得多