I'm trying to set up a program to record a portion of an internet audio stream, and save it to a file (preferably mp3 or wav). I've looked everywhere and I can't find any decent ways to do this. I found two different libraries that seemed like they'd work (NativeBass and Xuggle), but neither supported 64-bit windows which is what I need.
Does anyone know of any simple ways to save a portion of an internet audio stream using java? (If it's important, it's an "audio/mpeg" stream).
EDIT: Хорошо, я нашел способ, который, кажется, работает. Но у меня все еще есть вопрос
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. Кто-нибудь знает, как более точно ограничить длину потока?