簡體   English   中英

在java中錄制流媒體音頻?

[英]Record streaming audio in java?

我正在嘗試設置一個程序來記錄互聯網音頻流的一部分,並將其保存到文件(最好是mp3或wav)。 我到處尋找,我找不到任何體面的方法來做到這一點。 我找到了兩個看起來像他們工作的不同的庫(NativeBass和Xuggle),但是它們都不支持我需要的64位窗口。

有沒有人知道使用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);
        }
    }
}

經過一番搜索,我從這里得到了大部分的答案。 但是,我要做的一件事就是只記錄一段時間。 如上所示,我試圖只記錄5秒的間隔。

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

但是,出於這樣或那樣的原因,錄制的音頻不是5秒長,它是16.有人知道如何更精確地限制流的長度嗎?

如果您確實需要5秒鍾,您可以根據您收到的字節數和音頻流的比特率自行計算。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM