如何设置 exoplayer 以播放 mp4 和 m3u8 取决于 url 结局

how to setup exoplayer to play both mp4 and m3u8 depends on url ending

你们能告诉我如何在 exoplayer android studio 中使用单个播放按钮播放 m3u8 和 mp4 视频吗? 我的应用程序 运行 使用 JSON 改造我的 URL 来自哪里。它连接到回收器适配器和阵列,并通过我调用 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(在另一个 activity 我试过它作为预告片 activity)

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);

    }

创建媒体项时只需将 mime 类型设置为 M3U8 或 MP4。像这样,

创建 mp4 媒体时,

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

在 M3U8 视频的 setMimeType 方法中将 mime 类型更改为 Application_M3U8。