[英]android - Why MediaPlayer delayes in playing mp3 audio?
我制作了一个小应用程序,使用MediaPlayer在android中练习音频播放,该应用程序很好用,但单击播放按钮后有1秒的小延迟,这很明显,我注意到只有在启动音频文件时才会出现这种情况,将其暂停立即恢复播放,没有延迟。我到处搜寻,发现有人建议使用SoundPool而不是MediaPlayer,但是在我的应用播放完整歌曲时,建议使用SoundPool播放简短的音频剪辑,这是什么原因造成的? 有没有解决或解决此问题的方法?
这是我的代码:
私有MediaPlayer mMediaPlayer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mMediaPlayer = MediaPlayer.create(this,R.raw.this_is_america);
Button btnPlay = findViewById(R.id.btnPlay);
Button btnPause = findViewById(R.id.btnPause);
Button btnStop = findViewById(R.id.btnStop);
btnPlay.setOnClickListener(this);
btnPause.setOnClickListener(this);
btnStop.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btnPlay:
Toast.makeText(getApplicationContext(), "Playing song",
Toast.LENGTH_SHORT).show();
mMediaPlayer.start();
break;
case R.id.btnPause:
Toast.makeText(getApplicationContext(), "Pausing song",
Toast.LENGTH_SHORT).show();
mMediaPlayer.pause();
break;
case R.id.btnStop:
Toast.makeText(getApplicationContext(), "Song stopped",
Toast.LENGTH_SHORT).show();
mMediaPlayer.reset();
mMediaPlayer = MediaPlayer.create(this,R.raw.this_is_america);
break;
}
}
更新:原来是mp3音频文件在开始时有静默暂停,尝试了另一首歌曲,并且工作正常,没有明显的延迟,谢谢greeble31建议检查一下。
Android操作系统中存在音频延迟问题。 录音和播放音频时会延迟几毫秒。 您可以通过以下URL来了解更多信息。 而此延迟与设备类型有关。
https://developer.android.com/ndk/guides/audio/audio-latency https://source.android.com/devices/audio/latency/measurements
您可以使用本机工具箱或本机程序(基于C,C ++ ndk)来最小化此延迟。 但是您不能将其减少到0秒。 仅最大程度地减少延迟。
有https://superpowered.com/superpowered-android-media-server 。 您可以从中获得支持,但据我所知您需要为此付费。 我没有尝试。 因此,我不知道它减少了多少延迟。
如果要从mp3中删除无声部分。 您可以使用ffmpeg包装器。 转到https://github.com/WritingMinds/ffmpeg-android-java链接,那里有适用于Android的ffmpeg包装器。 您可以轻松使用它。
将FFMPEG与silencedetect一起使用以消除音频静默 ,可以通过导航到它找到相关的FFmpeg命令。
在包装中,您不需要ffmpeg部分。 您需要从-y替换它。 导航到该包装器时可以获得这些详细信息
您的歌曲在开始时有一个静默的暂停;)
如@Lucefer所述,由于音频堆栈的实现,Android平台具有一些不可避免的小延迟 。 或者,至少在几年前,还不确定当前的状况。 无论如何,该延迟通常太小(〜10ms),无法在音频文件的开头注意到。 它与模拟乐器等的应用程序的响应时间有关。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.