下载在线音频流并将其保存在零件中
问题描述:
我试图下载一个音频流并将其保存在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();
}
}
});
我知道使用线程不是最好的解决办法,但是这不是这是怎么回事。有什么理由为什么这些碎片不适合彼此?
“没有任何理由为什么片段不完全适合于对方” - 因为它需要时间来重新连接。甚至可能10秒? Idk mp3格式,以及是否可以简单地将流切成片段(怀疑它),但是您需要找到一个不关闭“InputStream”的解决方案。 – zapl