我想实现一个只播放 Audiofile 的最后 5 秒(至多超过 5 秒)的函数。Mediaplayer 是否以某种方式支持这一点?
我知道如何正常播放音频文件 + 我知道如何获取文件的持续时间,但是如何将 Mediaplayer 设置为只播放最后的一小部分?这意味着从音频文件中的特定时间码播放。
我想实现一个只播放 Audiofile 的最后 5 秒(至多超过 5 秒)的函数。Mediaplayer 是否以某种方式支持这一点?
我知道如何正常播放音频文件 + 我知道如何获取文件的持续时间,但是如何将 Mediaplayer 设置为只播放最后的一小部分?这意味着从音频文件中的特定时间码播放。
实现这一点的一种方法是使用MediaPlayer.getDuration()
方法来获取音频文件的持续时间,然后使用MediaPlayer.seetTo()
API 移动到该位置。
在您的情况下,您可以尝试mediaPlayer.seekTo(mediaPlayer.getDuration()-(5*1000));
...
准备好之后就可以打电话了seekTo
。
看看这个例子:
this._mediaPlayer = new MediaPlayer();
this._mediaPlayer.reset();
this._mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
this._mediaPlayer.setDataSource( _data_source_ );
this._mediaPlayer.setOnSeekCompleteListener(this);
this._mediaPlayer.prepare();
this._mediaPlayer.start();
/* Seeking to 1 minute */
this._mediaPlayer.seekTo(60 * 1000);
/* Issue a start in the OnSeekCompleteListener */
调整此示例以获取准备好的流的持续时间并寻求持续时间 - 5 秒(在您的情况下,如果媒体至少 5 秒长)。
但是,似乎 AndroidseekTo
在寻求无缓冲媒体时存在与使用相关的错误。看看这个和这个以获取更多信息。这个错误应该在Android 2.2中得到解决。