DeN*_*ppz 31 mp3 android mediacontroller android-mediaplayer exoplayer
我试图使用ExoPlayer,相反MediaPlayer,我似乎无法弄清楚...
MediaPlayer有.start()/ .pause()命令......我可以seekTo(1287)自动开始播放......
我该怎么做ExoPlayer?我曾经尝试过,seekTo(1287)但它没有开始播放......之后我也加入.setPlayWhenReady(true)了,但仍然没有运气......
我能够.stop()......但是我不能让它再次开始比赛,除非我.prepare()再次......但我不认为我应该在每次停顿和比赛之间做到这一点.
我MediaController在ExoPlayer演示中使用自己的控件和方法...我不太清楚控件是如何实现的......
有人建议吗?
编辑:
好的,我想出了停顿并开始......
.setPlayWhenReady(true) // start
.setPlayWhenReady(false) // pause
Run Code Online (Sandbox Code Playgroud)
但是我仍然遇到跟踪问题... .seekTo间歇性地工作......有时候它会起作用......但有时我会收到这个错误:
E/AudioTrack: AudioTrack::set : Exit
Run Code Online (Sandbox Code Playgroud)
(它只进入缓冲状态......并没有完全"准备好"......
bon*_*nyz 44
该官方例子PlayerControl在ExoPlayer源代码,你问什么:
Run Code Online (Sandbox Code Playgroud)public class PlayerControl implements MediaPlayerControl { private final ExoPlayer exoPlayer; public PlayerControl(ExoPlayer exoPlayer) { this.exoPlayer = exoPlayer; } @Override public boolean canPause() { return true; } @Override public boolean canSeekBackward() { return true; } @Override public boolean canSeekForward() { return true; } @Override public int getAudioSessionId() { throw new UnsupportedOperationException(); } @Override public int getBufferPercentage() { return exoPlayer.getBufferedPercentage(); } @Override public int getCurrentPosition() { return exoPlayer.getDuration() == ExoPlayer.UNKNOWN_TIME ? 0 : (int) exoPlayer.getCurrentPosition(); } @Override public int getDuration() { return exoPlayer.getDuration() == ExoPlayer.UNKNOWN_TIME ? 0 : (int) exoPlayer.getDuration(); } @Override public boolean isPlaying() { return exoPlayer.getPlayWhenReady(); } @Override public void start() { exoPlayer.setPlayWhenReady(true); } @Override public void pause() { exoPlayer.setPlayWhenReady(false); } @Override public void seekTo(int timeMillis) { long seekPosition = exoPlayer.getDuration() == ExoPlayer.UNKNOWN_TIME ? 0 : Math.min(Math.max(0, timeMillis), getDuration()); exoPlayer.seekTo(seekPosition); } }
如果您在搜索操作期间遇到奇怪的行为,可能是由于您的特定流/文件类型.我建议你看一下ExoPlayer 的基本实现,最后报告Github上的任何问题.
这是示例代码针对Exoplayer 2的操作方式:
player.setPlayWhenReady(true);
Run Code Online (Sandbox Code Playgroud)
如果播放器已经处于就绪状态,则可以使用此方法暂停和继续播放。
为了寻找,他们使用
Run Code Online (Sandbox Code Playgroud)boolean haveStartPosition = startWindow != C.INDEX_UNSET; if (haveStartPosition) { player.seekTo(startWindow, startPosition); } player.prepare(mediaSource, !haveStartPosition, false);
所以看来你需要prepare之后seekTo。
| 归档时间: |
|
| 查看次数: |
23873 次 |
| 最近记录: |