Как да внедрите seekTo(), когато използвате HLS с ExoPlayer

Опитвам се да внедря основен радиоплейър, който може да постави на пауза потока на живо, да го превърти назад и след това да го превърти отново.

Мисля, че тази функционалност трябва да се поддържа първоначално от версия 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?

Благодаря предварително.


person Micah Simmons    schedule 30.04.2017    source източник


Отговори (1)


Изглежда, че има грешка, https://github.com/google/ExoPlayer/issues/87 обсъждат това и то е затворено. Но не съм сигурен дали е достигнал версия v2 и по-скоро може да е във версията за разработчици, тук

person Nevermore    schedule 02.05.2017
comment
Съжалявам за забавения отговор. Казах във въпроса си, че смятам, че тази функционалност трябва да се поддържа първоначално във версия 2.1 на ExoPlayer. Освен това връзката, която предоставих към бележките по изданието на версия 2.1, казваше, че проблем 87 е внедрен и тъй като използвах версия 2.4 на ExoPlayer, тази функционалност трябваше да е налична. наздраве - person Micah Simmons; 14.05.2017