Подтвердить что ты не робот

Как использовать сторонний разработчик Android

Я хочу реализовать Google ExoPlayer в своем приложении. Их документация кажется мне довольно расплывчатой, и все, что я ищу, это воспроизведение видео с URL-адреса, никаких сложных пользовательских настроек или чего-либо подобного. Не удалось найти учебники о том, как это сделать. Пример, который они имеют на git, слишком сложный для того, что мне нужно, и, поскольку я новичок в потоковой передаче видео, я не очень понял. Все, что мне удалось сделать, это показать com.google.android.exoplayer.AspectRatioFrameLayout.

В принципе, у меня есть URL. Мне нужно воспроизвести видео и обработать onConfigurationChanged, когда пользователь перевернет экран.

Может ли кто-нибудь помочь?

4b9b3361

Ответ 1

Библиотека ExoMedia обертывает exoplayer в более простой api и обеспечивает просмотр видео для использования в макетах. См. Примеры использования в github: https://github.com/brianwernick/ExoMedia/

Ответ 2

VideoView будет лучшей идеей, если вы хотите отобразить только URL-адрес видео. ExoPlayer требует некоторых усилий в области развития, даже для вызова его простого экземпляра. Однако есть преимущество более быстрого и эффективного воспроизведения, поддерживаемого активным сообществом с открытым исходным кодом. Эта ссылка обеспечивает хорошую прогулку по реализации, предоставляя достаточные основания для перехода на ExoPlayer. Конечно, выполните проверку официального руководства для разработчиков, обновленная версия имеет разделенные модули для более простой реализации.

Ответ 5

Вот новая библиотека Github с именем MagicalExoPlayer, основанная на ExoPlayer.

Поддерживает MP4, HLS и Dash.

Поддерживает пользовательские пропорции

Поддержка FullScreen

Ответ 6

Exoplayer - очень продвинутая библиотека. Даже написание минимума заняло бы 40-50 строк кода. Так что, если вы действительно хотите использовать меч для нарезки лука, вот макароны прямого копирования:

//manifest.xml 

<manifest ...>
  <uses-permission android:name="android.permission.INTERNET"/>
  <application
    android:usesCleartextTraffic="true"
    ...>

    ...

  </application>
</manifest>
//app/build.gradle
apply plugin: 'com.android.application'

android {
    ...
    compileOptions {
        sourceCompatibility = 1.8
        targetCompatibility = 1.8
    }
}

dependencies {
    ...
    implementation 'com.google.android.exoplayer:exoplayer:2.10.4'
}



    protected void onCreate(Bundle savedInstanceState) {
        ...

        Context ctx =this;
        String CONTENT_URL = "https://www.radiantmediaplayer.com/media/bbb-360p.mp4";
        int playerID=R.id.pv_main;
        int appNameStringRes = R.string.app_name;
        startPlayingVideo(this,CONTENT_URL,playerID,appNameStringRes);


    }

    //
    private void startPlayingVideo(Context ctx , String CONTENT_URL, int playerID, String appNameRes) {

        PlayerView pvMain = ctx.findViewById(playerID);

        //BandwidthMeter bandwidthMeter = new DefaultBandwidthMeter();
        //TrackSelection.Factory videoTrackSelectionFactory = new AdaptiveTrackSelection.Factory(bandwidthMeter);        
        //TrackSelector trackSelectorDef = new DefaultTrackSelector(videoTrackSelectionFactory);
        TrackSelector trackSelectorDef = new DefaultTrackSelector();

        SimpleExoPlayer absPlayerInternal = ExoPlayerFactory.newSimpleInstance(ctx, trackSelectorDef);

        String userAgent = Util.getUserAgent(ctx, ctx.getString(appNameRes));

        DefaultDataSourceFactory defdataSourceFactory = new DefaultDataSourceFactory(ctx,userAgent);
        Uri uriOfContentUrl = Uri.parse(CONTENT_URL);
        MediaSource mediaSource = new ProgressiveMediaSource.Factory(defdataSourceFactory).createMediaSource(uriOfContentUrl);

        absPlayerInternal.prepare(mediaSource);
        absPlayerInternal.setPlayWhenReady(true);

        pvMain.setPlayer(absPlayerInternal);

    }

    private void stopPlayer(PlayerView pv,SimpleExoPlayer absPlayer){
        pv.setPlayer(null);
        absPlayer.release();
        absPlayer = null;
    }

просто добавьте player view в свой макет деятельности, вызовите startPlayingVideo(...) в onCreate() и stopPlayer() в onStop(). Я не эксперт, но я могу попытаться объяснить это, если вы хотите, но вы попросили никаких сложных вещей, так что вот только код