gpt4 book ai didi

android - 来自文件的 SoundPool.load() 和 FileDescriptor

转载 作者:搜寻专家 更新时间:2023-11-01 09:18:14 24 4
gpt4 key购买 nike

我尝试使用带有 FileDescriptor 的 SoundPool 的加载函数,因为我希望能够设置偏移量和长度。该文件不存储在资源中,而是存储卡上的文件。即使 SoundPool 的加载和播放功能都没有抛出任何异常或向控制台打印任何内容,声音也不会播放。使用相同的代码,但在 SoundPool 构造函数中使用文件路径字符串效果很好。

这是我尝试加载的方式(start 等于 0,length 是以毫秒为单位的文件长度):

FileInputStream fileIS = new FileInputStream(new File(mFile));
mStreamID = mSoundPool.load(fileIS.getFD(), start, length, 0);
mPlayingStreamID = mSoundPool.play(mStreamID, 1f, 1f, 1, 0, 1f);

如果我会使用它,它会起作用:

mStreamID = mSoundPool.load(mFile, 0);
mPlayingStreamID = mSoundPool.play(mStreamID, 1f, 1f, 1, 0, 1f);

有什么想法吗?

谢谢

最佳答案

也许你已经明白了这一点,但阅读文档似乎长度可能以字节为单位,而不是毫秒。它指出,如果您将多个声音存储在一个二进制文件中,则传递文件描述符很有用。这意味着您要告诉系统要提取倍数中的哪个声音,但我认为它必须能够将其作为单个声音处理。因此,如果您将多个 wave 文件连接在一起,并希望它播放二进制文件中的单个 wave 文件,则会使用它。

关于android - 来自文件的 SoundPool.load() 和 FileDescriptor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2978295/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com