通过FTP将.mp3文件下载到我的应用中会更改文件的质量

时间:2019-09-13 15:48:03

标签: android audio hosting

我的小型游戏应用程序使用FTP下载一些.mp3声音。自从免费虚拟主机升级以来,出现了质量问题。声音播放时有些杂音,类似于电视出现信号问题时的杂音。我没有对代码进行任何更改,并且文件下载正确,下载后文件大小,持续时间和比特率均未更改。

我已经检查过的内容:

  • 问题在所有设备上发生
  • 在浏览器(PC和移动设备)中播放的声音都可以
  • 从站点下载到PC或移动设备的声音还可以
  • 以前从同一应用程序屏幕(或应用程序中其他任何地方)上播放的免费虚拟主机下载的声音还可以
  • 旧声音(在应用程序中正常运行)重新上传到新站点并由应用程序重新下载会造成同样的问题

因此,实际上,我的应用程序从新服务器下载的文件质量很差。

// 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看到。

1 个答案:

答案 0 :(得分:0)

默认文件类型可能是ASCII,这导致了问题。解决方案是在连接后进行更改:

ftp.setFileType(FTP.BINARY_FILE_TYPE);