Я пытаюсь реализовать базовый радиоплеер, который может приостанавливать прямую трансляцию, перематывать ее назад, а затем снова перематывать вперед.
Я думаю, что эта функция должна изначально поддерживаться, начиная с версии 2.1 ExoPlayer.
Однако элементы управления перемоткой вперед и назад неактивны при потоковой передаче, хотя они работают при воспроизведении локального контента.
Вот как я создаю плеер:
private void initExoPlayer(){
Handler mHandler = new Handler();
String userAgent = "userAgent";
Uri uri = Uri.parse(urlSourceOfStream);
dataSourceFactory = new DefaultHttpDataSourceFactory(
userAgent, null,
DefaultHttpDataSource.DEFAULT_CONNECT_TIMEOUT_MILLIS,
1800000,
true);
mediaSource = new ExtractorMediaSource(uri,dataSourceFactory, Mp3Extractor.FACTORY,
mHandler, null);
bandwidthMeter = new DefaultBandwidthMeter();
trackSelectionFactory =
new AdaptiveTrackSelection.Factory(bandwidthMeter);
trackSelector = new DefaultTrackSelector(trackSelectionFactory);
loadControl = new DefaultLoadControl();
exoPlayer = ExoPlayerFactory.newSimpleInstance(this, trackSelector, loadControl);
exoPlayer.prepare(mediaSource);
((SimpleExoPlayerView) findViewById(R.id.exoPlayer)).setPlayer(exoPlayer);
}
Плеер может успешно приостановиться, и, похоже, он кэширует содержимое, так как я могу возобновить проигрыватель после того, как он был приостановлен на несколько минут. Это также указывает на то, что должен быть какой-то кеш, который позволит мне перемотать содержимое назад.
Я также пытался использовать OkHttpDataSourceFactory:
OkHttpClient client = new OkHttpClient.Builder().cache(new Cache(getFilesDir() , 1000)).build();
OkHttpDataSourceFactory okHttpDataSourceFactory = new OkHttpDataSourceFactory(client, userAgent, null);
Попытка перемотать проигрыватель таким образом заставляет проигрыватель воспроизводиться с позиции прямой трансляции и не перематывает содержимое:
exoPlayer.seekTo(Math.max(exoPlayer.getCurrentPosition() - 1000, 0));
Кратко мой вопрос: как я могу перематывать HLS назад и вперед с помощью ExoPlayer?
Заранее спасибо.