#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