首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >ExoPlayer和启动/暂停/ seekTo命令

ExoPlayer和启动/暂停/ seekTo命令
EN

Stack Overflow用户
提问于 2015-10-03 19:15:50
回答 2查看 36.1K关注 0票数 34

我试图使用ExoPlayer,而不是MediaPlayer,我似乎无法理解.

MediaPlayer.start() / .pause()命令..。我只需要seekTo(1287)它就会自动开始播放..。

我如何在ExoPlayer中做到这一点?我试过做seekTo(1287),但它没有在.我也在那之后添加了.setPlayWhenReady(true),但仍然没有运气.

我可以.stop()..。但我不能让它在那之后再开始演奏,除非我再次.prepare() .但我觉得我不应该在每次暂停和播放之间都这么做。

我使用我自己的控件和方法来反对MediaController,就像在ExoPlayer演示中.我不太明白控制是如何实现的.

有什么建议吗?

编辑:

好吧,我想出了暂停和开始..。

代码语言:javascript
复制
.setPlayWhenReady(true) // start
.setPlayWhenReady(false) // pause

但我在追踪上还是有问题..。.seekTo间歇工作..。有时起作用..。但其他时候我会犯这样的错误:

代码语言:javascript
复制
E/AudioTrack: AudioTrack::set : Exit

(它只进入缓冲状态.还没准备好..。

EN

回答 2

Stack Overflow用户

发布于 2015-11-02 09:19:32

PlayerControlExoPlayer源代码中完全按照您的要求执行:

公共类PlayerControl实现MediaPlayerControl {私有最终ExoPlayer exoPlayer;公共PlayerControl(ExoPlayer exoPlayer) { this.exoPlayer = exoPlayer;}@覆盖公共布尔canPause() {返回真;}@覆盖公共布尔值canSeekBackward() {返回真;}}@覆盖公共布尔值canSeekForward() {返回真;}@覆盖公共int getAudioSessionId() {抛新UnsupportedOperationException();}@覆盖公共int getBufferPercentage() {返回exoPlayer.getBufferedPercentage();}@覆盖公共int getCurrentPosition() {返回exoPlayer.getDuration() == ExoPlayer.UNKNOWN_TIME ?0:( int ) exoPlayer.getCurrentPosition();}@覆盖公共int getDuration() {返回exoPlayer.getDuration() == ExoPlayer.UNKNOWN_TIME ?0:(int) exoPlayer.getDuration();}@覆盖公共布尔值isPlaying() {返回exoPlayer.getPlayWhenReady();}@覆盖公共无效启动(){exoPlayer.setPlayWhenReady(真);}@覆盖公共无效暂停(){exoPlayer.setPlayWhenReady(假);}@覆盖公共无效seekTo(int timeMillis) { long seekPosition = exoPlayer.getDuration() == ExoPlayer.UNKNOWN_TIME ?0: Math.min(Math.max(0,timeMillis),getDuration());exoPlayer.seekTo(seekPosition);}

如果在搜索操作中遇到了奇怪的行为,这可能是由于特定的流/文件类型造成的。我可以建议您看一看基本实现 of ExoPlayer,并最终报告任何问题上的Github。

票数 49
EN

Stack Overflow用户

发布于 2018-05-29 11:40:19

下面是示例代码为Exoplayer 2所做的工作:

代码语言:javascript
复制
player.setPlayWhenReady(true);

停站)

如果播放机已经处于就绪状态,则可以使用此方法暂停并恢复播放。

为了寻找,他们用

布尔haveStartPosition = startWindow != C.INDEX_UNSET;if (haveStartPosition) { player.seekTo(startWindow,startPosition);} player.prepare(mediaSource,!haveStartPosition,false);

因此,您似乎需要在prepare之后使用seekTo

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32926483

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档