如何在android中无延迟地循环播放音频文件?

问题描述 投票:0回答:6

我已经启动了一个 android.media.MediaPlayer 文件:

mp1.start()

然后尝试循环:

setLooping(true);

但这会导致再次播放文件出现延迟。

我正在尝试运行一个包含设定节奏节奏的 mp3 文件。有没有更好的方法来循环它,使速度计时不会受到干扰并且节奏无缝播放而没有任何口吃/延迟?

我应该使用 SoundPool 吗?

android android-mediaplayer android-music-player soundpool
6个回答
0
投票

此特定情况的大多数最佳实践建议使用 .ogg 格式。您可以使用 VNC 媒体播放器轻松转换文件。

.ogg 文件格式的 Wiki - http://en.wikipedia.org/wiki/.ogg

另一种解决方案是 SoundPool,第三种解决方案是使用 Audacity 并从音频文件中删除安静/“空白声音”。


0
投票

如果您的音频不长,请使用 SoundPool 进行低延迟媒体播放,而不是 MediaPlayer。还将其转换为 ogg,正如其他人已经指出的那样。

编辑:如果它只是一个节奏,而不是连续的声音,那么也许你也可以测量延迟并基于此寻找你的音频,但我不确定这样你会得到更好的结果。


0
投票

媒体播放器解决方案:

如果您坚持使用MediaPlayer,那么您可以:

  1. 在音频文件末尾裁剪声音,这样两个播放循环之间就不会出现声音间隙

  2. 或按照此处所述自行创建自定义解决方案。

Soundpool 替代方案:

现在,从我个人的经验来看,如果你想循环大小和持续时间较小的文件,不超过1MB,那么Soundpool更方便,而且与MediaPlayer相反,似乎没有报告任何相关问题。尝试使用 MediaPlayer 循环声音时有很多抱怨,因此通常首选 Soundpool 进行循环。

声池大小限制:

如果您担心 Sounpool 的大小限制,请记住每个轨道的缓冲区大小限制为 1 Mb。但此限制不适用于文件大小,而是适用于解压缩的原始 PCM 数据。 SoundPool 会将加载的音频解压缩为 PCM 数据,以便立即播放,没有解码延迟。如果您正在加载的音频被严重压缩,例如 MP3,那么它可能会被放大很多。

提高性能:

此外,正如另一个答案中所建议的,根据许多来源,“.ogg”类型的文件通常比“.mp3”表现更好。因此,您应该尝试转换文件以获得更好的性能,但我认为您不会看到循环方面的改进。

要转换文件,您可以使用在线工具,例如this。如果您转换文件,请记住也进行这些更改:

  1. 将声音文件的采样率更改为 16000 Hz
  2. 将音频通道更改为单声道,而不是立体声。
  3. 确保经过这些处理后您的文件大小小于 1 mb。

0
投票

循环代码

//////////////////////////////////////

             soundPool = new SoundPool(1, AudioManager.STREAM_MUSIC, 0);

                int soundID = soundPool.load(OktavaOsnovna.this, raw.looperman, 1);


                soundPool.setOnLoadCompleteListener(new SoundPool.OnLoadCompleteListener()

                {
                    public void onLoadComplete(SoundPool soundPool, int sampleId,
                                               int status) {

                        soundPool.play(soundID, 0.5f, 0.5f, 1, -1, 1f);
                    }

                });
                

0
投票

Android 上的无缝声音循环。

基本上,归根结底就是让两个玩家同时做好准备并连接他们的生命周期,因此看起来这是一个连续的流。


-1
投票

请尝试这样做。

audio = MediaPlayer.create(this, R.raw.pl);
audio.setLooping(true);
audio.start();
© www.soinside.com 2019 - 2024. All rights reserved.