0

我想实现一个只播放 Audiofile 的最后 5 秒(至多超过 5 秒)的函数。Mediaplayer 是否以某种方式支持这一点?

我知道如何正常播放音频文件 + 我知道如何获取文件的持续时间,但是如何将 Mediaplayer 设置为只播放最后的一小部分?这意味着从音频文件中的特定时间码播放。

4

2 回答 2

2

实现这一点的一种方法是使用MediaPlayer.getDuration()方法来获取音频文件的持续时间,然后使用MediaPlayer.seetTo()API 移动到该位置。

在您的情况下,您可以尝试mediaPlayer.seekTo(mediaPlayer.getDuration()-(5*1000));...

于 2013-04-04T08:45:56.883 回答
1

准备好之后就可以打电话了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中得到解决。

于 2013-04-04T08:47:45.483 回答