我已使用以下内容启动android.media.MediaPlayer文件:
mp1.start()
然后使用以下命令尝试循环:
setLooping(true);
但是这以再次播放文件的延迟而结束。我正在尝试运行一个mp3文件,其中包含一个具有设定克里思的节奏。有没有更好的方法来循环它,使节奏计时不会受到干扰,节奏播放无缝,没有任何口吃/延迟?我应该使用SoundPool吗?
iq0todco1#
大多数针对这种特殊情况的最佳实践建议使用.ogg格式。您可以使用VNC媒体播放器轻松转换文件。.ogg文件格式Wiki-http://en.wikipedia.org/wiki/.ogg另一个解决方案是SoundPool,第三个是使用Audacity,从音频文件中剪切安静/“空白声音”。
polkgigr2#
如果你的音频不长,那么使用SoundPool来进行低延迟的媒体播放,而不是MediaPlayer。另外,正如其他人已经指出的那样,将它转换为ogg。编辑:如果它只是一个克里思,而不是一个连续的声音,那么也许你也可以测量延迟,并在此基础上寻找你的音频,但我不确定你会得到更好的结果这样做。
sycxhyv73#
媒体播放器解决方案:
如果您坚持使用MediaPlayer,那么您可以:1.或者在音频文件的结尾裁剪声音,这样在两个播放循环之间就没有声音间隙1.或者像here所描述的那样自己创建一个自定义解决方案。
声池备选方案:
现在,从我个人的经验,如果你想循环文件的大小和持续时间小,不超过1MB,那么Soundpool是更方便,似乎没有任何相关的问题报告相反的MediaPlayer.有很多投诉时,尝试使用MediaPlayer循环声音,所以一般来说,Soundpool通常是首选循环.
声池大小限制:
如果你担心Soundpool的大小限制,请记住,它有1Mb的缓冲区大小限制每轨道。但这个限制不适用于文件大小,但解压缩的原始PCM数据。Soundpool将解压缩加载的音频到PCM数据,以便它可以立即播放,没有解码的延迟。如果你加载的音频压缩严重,如MP3,那就可能会被炸得很厉害。
提高性能:
另外,正如另一个答案中所建议的,根据许多来源,类型为“.ogg”的文件通常比“.mp3”的文件性能更好。所以,您应该尝试转换您的文件以获得更好的性能,但我不认为您会看到循环方面的改进。要转换文件,您可以使用this之类的联机工具。如果要转换文件,请记住同时进行以下更改:1.将声音文件的采样率更改为16000 Hz1.将音频通道更改为单声道,而不是立体声。1.确保这些过程后的文件大小小于1 MB。
nfeuvbwi4#
回路代码////////////////////////////////////
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); } });
myzjeezk5#
请试着这样做。
audio = MediaPlayer.create(this, R.raw.pl); audio.setLooping(true); audio.start();
5条答案
按热度按时间iq0todco1#
大多数针对这种特殊情况的最佳实践建议使用.ogg格式。您可以使用VNC媒体播放器轻松转换文件。
.ogg文件格式Wiki-http://en.wikipedia.org/wiki/.ogg
另一个解决方案是SoundPool,第三个是使用Audacity,从音频文件中剪切安静/“空白声音”。
polkgigr2#
如果你的音频不长,那么使用SoundPool来进行低延迟的媒体播放,而不是MediaPlayer。另外,正如其他人已经指出的那样,将它转换为ogg。
编辑:如果它只是一个克里思,而不是一个连续的声音,那么也许你也可以测量延迟,并在此基础上寻找你的音频,但我不确定你会得到更好的结果这样做。
sycxhyv73#
媒体播放器解决方案:
如果您坚持使用MediaPlayer,那么您可以:
1.或者在音频文件的结尾裁剪声音,这样在两个播放循环之间就没有声音间隙
1.或者像here所描述的那样自己创建一个自定义解决方案。
声池备选方案:
现在,从我个人的经验,如果你想循环文件的大小和持续时间小,不超过1MB,那么Soundpool是更方便,似乎没有任何相关的问题报告相反的MediaPlayer.有很多投诉时,尝试使用MediaPlayer循环声音,所以一般来说,Soundpool通常是首选循环.
声池大小限制:
如果你担心Soundpool的大小限制,请记住,它有1Mb的缓冲区大小限制每轨道。但这个限制不适用于文件大小,但解压缩的原始PCM数据。Soundpool将解压缩加载的音频到PCM数据,以便它可以立即播放,没有解码的延迟。如果你加载的音频压缩严重,如MP3,那就可能会被炸得很厉害。
提高性能:
另外,正如另一个答案中所建议的,根据许多来源,类型为“.ogg”的文件通常比“.mp3”的文件性能更好。所以,您应该尝试转换您的文件以获得更好的性能,但我不认为您会看到循环方面的改进。
要转换文件,您可以使用this之类的联机工具。如果要转换文件,请记住同时进行以下更改:
1.将声音文件的采样率更改为16000 Hz
1.将音频通道更改为单声道,而不是立体声。
1.确保这些过程后的文件大小小于1 MB。
nfeuvbwi4#
回路代码
////////////////////////////////////
myzjeezk5#
请试着这样做。