我的小型游戏应用程序使用FTP下载一些.mp3声音。自从免费虚拟主机升级以来,出现了质量问题。声音播放时有些杂音,类似于电视出现信号问题时的杂音。我没有对代码进行任何更改,并且文件下载正确,下载后文件大小,持续时间和比特率均未更改。
我已经检查过的内容:
因此,实际上,我的应用程序从新服务器下载的文件质量很差。
// This is only a part of code, but it's working correctly for more than 2 years now
for (FTPFile file : ftpFiles) {
String name = file.getName();
OutputStream outputStream;
if (name.endsWith(".zip") && Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
// Application auto-update
if (Build.VERSION.SDK_INT >= 23 && checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_DENIED)
{
continue;
}
outputStream = new FileOutputStream(path);
editor.putBoolean("newAppAvailable", true).apply();
} else {
File localFile = new File(LoadingScreen.this.getFilesDir() + getResources().getString(R.string.slash) + name);
outputStream = new BufferedOutputStream(new FileOutputStream(localFile));
}
ftp.retrieveFile(name, outputStream);
outputStream.close();
}
我能想到的唯一原因是文件的容量。下载时文件量是否可能增加?以前有人遇到过这样的问题吗?
编辑:因此,至少我发现了复制的结果。原始示例文件长度为15.1s。在音乐程序中播放复制的文件显示的长度相同,并且持续时间为15.1s。但是,使用Goldwave时,我发现复制的文件被加速并在13.8s结束!
EDIT2:我也尝试过压缩所有声音并在应用程序中解压缩-这是不可行的,但是只有一种声音能够解压缩,完全损坏...而且,压缩文件无法通过PC看到。
答案 0 :(得分:0)
默认文件类型可能是ASCII,这导致了问题。解决方案是在连接后进行更改:
ftp.setFileType(FTP.BINARY_FILE_TYPE);