【发布时间】:2016-03-08 10:34:01
【问题描述】:
我正在尝试下载音频流并将其保存为 250kb 的一部分。我通过下载音频文件、关闭连接并以 250kb 开始新的下载来让它工作。但是,当我这样做时,我会在音频文件之间丢失大约 10 秒的音频。
我用来下载 250kb 部分音频流的代码是:
public void downloadMP3() {
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
try {
URL url = new URL("http://icecast.omroep.nl/3fm-bb-aac");
InputStream inputStream = url.openStream();
File filemp3 = new File(
Environment.getExternalStorageDirectory() + "/radiorecordings/file" + fileCount + ".mp4a");
FileOutputStream fileOutputStream = new FileOutputStream(filemp3);
int c;
int bytesRead = 0;
//keep reading until file is 250kb (250.000 bytes)
while ((c = inputStream.read()) != -1 && bytesRead < 250000) {
Log.d("...", "bytesRead=" + bytesRead);
fileOutputStream.write(c);
bytesRead++;
}
fileCount++;
downloadMP3();
} catch (Exception e) {
e.printStackTrace();
}
}
});
我知道使用 Thread 并不是最好的解决方案,但这不是本文的目的。有什么原因导致这些片段不能完美地相互契合吗?
【问题讨论】:
-
“是否有任何原因导致片段不能完美地相互匹配” - 因为重新连接需要时间。也许甚至10秒? Idk mp3 格式以及您是否可以简单地将流切成小块(怀疑),但您需要找到一个不会关闭
InputStream的解决方案。
标签: java android audio audio-streaming audio-recording