【问题标题】:Cannot play audio from assets "it is probably compressed"无法播放资产中的音频“它可能已被压缩”
【发布时间】:2011-04-04 03:07:22
【问题描述】:

您好,我正在编写一个 Android 应用程序,它将播放我随应用程序提供的一组音频文件,并允许用户创建和播放他们自己的音频。我遇到的问题是我不知道在哪里存储文件。如果我将它们存储在外部(sdcard)位置,我不确定在用户安装我的应用程序时如何将这些文件发送到用户的外部存储。我想我可以在资产和自定义声音中加入一些外部声音。

当我尝试执行此操作时,我收到以下错误:java.io.FileNotFoundException:此文件无法作为文件描述符打开;它可能被压缩了

这是我的代码:

try {
                Constants.mPlayer = new MediaPlayer();
                AssetFileDescriptor afd = this.getApplicationContext().getAssets().openFd("songid.mus");
                Constants.mPlayer.setDataSource(afd.getFileDescriptor());
                Constants.mPlayer.prepare();
                Constants.mPlayer.start();
            } catch (Exception e) {
                Log.e("", "prepare() failed", e);
            }

有什么想法或建议吗?

谢谢! 拉达

【问题讨论】:

    标签: android audio


    【解决方案1】:

    您可以通过将文件名更改为songid.mp3 来快速解决avoid compression

    该帖子的作者还建议在命令行上将带有-0 选项的扩展名传递给aapt

    首先,你可以给你的资产文件一个 上面列表中的扩展名。尽管 这不一定有意义, 如果您这样做,这可能是一个简单的解决方法 不想处理 aapt 上的 命令行。另一种选择是 将特定扩展传递给 -0 标志,例如 -0 db,禁用 压缩资产 延期。您可以传递 -0 标志 多次,每次都有一个 单独的扩展,如果你需要更多 比一种类型要解压缩。

    如果您喜欢冒险,可以尝试将 aapt 替换为调用 aapt-0 mus 的脚本,如 this post

    【讨论】:

    • 谢谢马修!我将名称从 songid.mus 更改为 songid.3gp。这解决了我的第一个异常。非常感激。在这一点之后,我确实遇到了另一个例外,我想为任何和我犯同样错误的人描述一下。 :-) 我得到一个“java.io.IOException: Prepare failed.: status=0x1” 我花了一段时间才弄清楚我需要添加一个开始和持续时间:
    【解决方案2】:

    谢谢马修!我将名称从 songid.mus 更改为 songid.3gp。这解决了我的第一个异常。非常感激。

    在这一点之后,我确实遇到了另一个例外,我想为任何与我犯同样错误的人描述一下。 :-) 我有一个java.io.IOException: Prepare failed.: status=0x1

    我花了一段时间才发现我还需要添加开始和持续时间:

    Constants.mPlayer = new MediaPlayer();
    AssetFileDescriptor afd = this.getApplicationContext().getAssets().openFd("songid.3gpp");
    long start = afd.getStartOffset();
    long end = afd.getLength();
    Constants.mPlayer.setDataSource(afd.getFileDescriptor(), start,end);
    Constants.mPlayer.prepare();
    Constants.mPlayer.start();  
    

    有效!谢谢!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-06
      • 2019-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-18
      相关资源
      最近更新 更多