Mediaplayer 应该只播放音频文件的最后几秒钟

Posted

技术标签:

【中文标题】Mediaplayer 应该只播放音频文件的最后几秒钟【英文标题】:Mediaplayer should play only last seconds of an Audiofile 【发布时间】:2013-04-04 08:27:48 【问题描述】:

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

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

【问题讨论】:

你知道如何获得持续时间。然后在线程上工作并获得最后一个持续时间。并播放它 【参考方案1】:

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

你可以试试mediaPlayer.seekTo(mediaPlayer.getDuration()-(5*1000));...

【讨论】:

谢谢。完美运行!没想到会这么简单。【参考方案2】:

准备好后可以拨打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 秒长,在您的情况下)。

然而,在寻找无缓冲媒体时,android 似乎存在与使用seekTo 相关的错误。查看this 和this 了解更多信息。 Android 2.2 中应该已经解决了这个错误。

【讨论】:

以上是关于Mediaplayer 应该只播放音频文件的最后几秒钟的主要内容,如果未能解决你的问题,请参考以下文章

Android Studio Java MediaPlayer 只播放音频的第一秒然后停止

Android播放音频MediaPlayer的几种方式介绍

使用MediaPlayer播放音频-----之二

初学Android 多媒体之使用SoundPool播放音效 七十六

在 Android 中使用 MediaPlayer 播放音频文件

使用MediaPlayer播放音频文件