как настроить exoplayer для воспроизведения как mp4, так и m3u8, зависит от окончания URL

#android #exoplayer #m3u8

Вопрос:

ребята, вы можете рассказать мне, как воспроизводить видео m3u8 и mp4 с помощью одной кнопки воспроизведения в exoplayer Android studio. мое приложение запускается с использованием JSON-модификации, из которой исходит мой URL-адрес. он подключается к адаптеру и массиву recycler, и это передается intent через intent, который я вызываю по URL или URI для воспроизведения файла .

Я могу использовать код m3u8 или mp4, но я не знаю, как реализовать оба в одном файле Java внутри кнопки

для m3u8 я использую :

 LoadControl LoadControls = new DefaultLoadControl();
        BandwidthMeter bandwidthMeter = new DefaultBandwidthMeter();
        ExoTrackSelection.Factory videoTrackSelectionFactory = new
                AdaptiveTrackSelection.Factory();
        trackSelector = new
                DefaultTrackSelector(VideoPortrait.this, videoTrackSelectionFactory);
        DefaultRenderersFactory renderersFactory = new DefaultRenderersFactory(this);
        renderersFactory.setExtensionRendererMode(DefaultRenderersFactory.EXTENSION_RENDERER_MODE_PREFER);
        simpleExoPlayer = new SimpleExoPlayer.Builder(this, renderersFactory)
                .setTrackSelector(trackSelector)
                .build();
        videoPlayer.setPlayer(simpleExoPlayer);
        DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(this, Util.getUserAgent(this, "ChristianGospelApp"));
        MediaSource mediaSource = new ProgressiveMediaSource.Factory(dataSourceFactory).createMediaSource(MediaItem.fromUri(Uri.parse(mp4Url)));

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

Для mp4, который я использую (в другом упражнении я попробовал его в качестве трейлера)

 private void setUpExoplayer(String mp4Url) {

        LoadControl LoadControls = new DefaultLoadControl();
        BandwidthMeter bandwidthMeter = new DefaultBandwidthMeter();
        ExoTrackSelection.Factory videoTrackSelectionFactory = new
                AdaptiveTrackSelection.Factory();
        trackSelector = new
                DefaultTrackSelector(VideoPlayerActivity.this, videoTrackSelectionFactory);
        DefaultRenderersFactory renderersFactory = new DefaultRenderersFactory(this);
        renderersFactory.setExtensionRendererMode(DefaultRenderersFactory.EXTENSION_RENDERER_MODE_PREFER);
        simpleExoPlayer = new SimpleExoPlayer.Builder(this, renderersFactory)
                .setTrackSelector(trackSelector)
                .build();
        videoPlayer.setPlayer(simpleExoPlayer);
        DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(this, Util.getUserAgent(this, "ChristianGospelApp"));
        MediaSource mediaSource = new ProgressiveMediaSource.Factory(dataSourceFactory).createMediaSource(MediaItem.fromUri(Uri.parse(mp4Url)));

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

    } 

Ответ №1:

Просто установите тип mime на M3U8 или MP4 при создании мультимедийного элемента. Подобный этому,

При создании мультимедиа mp4,

 val mediaItem = MediaItem.Builder()
            .setUri(Uri.parse(intent.getStringExtra("videoUri")))
            .setMimeType(MimeTypes.APPLICATION_MP4)
            .build()
 

Измените тип mime на Application_M3U8 в методе setMimeType для видео M3U8.

Комментарии:

1. Я также добавил свой код @Vaibhav Goyal