首页 > 解决方案 > 通过 FTP 将 .mp3 文件下载到我的应用程序会更改文件的质量

问题描述

我的小游戏应用程序使用 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.1 秒。但是使用 Goldwave 我发现复制的文件被加速并在 13.8s 结束!

EDIT2:我还尝试在应用程序中压缩所有声音并解压缩 - 这令人难以置信,但只有一个声音能够解压缩,完全损坏......此外,通过 PC 看不到 zip 文件。

标签: androidaudiohosting

解决方案


默认文件类型可能是 ASCII,这会导致问题。解决方法是连接后更改:

ftp.setFileType(FTP.BINARY_FILE_TYPE);

推荐阅读