Я хочу использовать Exoplayer для потоковой передачи URL-ссылки видео m4v https://storage.cloud.google.com/math_oneticha/Numbers/NUMBERS.m4v?authuser=2 из облачного хранилища Google, но мое приложение продолжает давать сбой, потому что доступный экстрактор Exoplayer не может прочитать поток. Когда я использую ту же URL-ссылку в браузере, она отлично транслируется. Я также пробовал транслировать URL-адрес mp4, https://media.publit.io/file/Mathematic/LinearEquation/Linear-Equation-4.mp4
с помощью приложения exoplayer, и он отлично транслируется, что означает, что приложение exoplayer просто имеет проблемы с URL-адресом m4v. Ниже мой код для exoplayer
Uri videoUrl;
// Initialize Player view and variables
PlayerView player;
ProgressBar vprogressBar;
ImageView fullScreenImage, closeLecture;
SimpleExoPlayer simpleExoPlayer;
// ref Player variables
player = findViewById(R.id.playerView);
vprogressBar = findViewById(R.id.video_loading_bar);
fullScreenImage = findViewById(R.id.fullscreen_option);
closeLecture = findViewById(R.id.videoClose);
String stringUrl = "https://storage.cloud.google.com/math_oneticha/Numbers/NUMBERS.m4v?authuser=2";
videoUrl = Uri.parse(stringUrl);
LoadControl loadControl = new DefaultLoadControl();
BandwidthMeter bandwidthMeter = new DefaultBandwidthMeter();
TrackSelector trackSelector = new DefaultTrackSelector(
new AdaptiveTrackSelection.Factory(bandwidthMeter)
);
simpleExoPlayer = ExoPlayerFactory.newSimpleInstance(LectureActivity.this, trackSelector,loadControl);
DefaultHttpDataSourceFactory factory = new DefaultHttpDataSourceFactory("exoplayer video");
ExtractorsFactory extractorsFactory = new DefaultExtractorsFactory();
MediaSource mediaSource = new ExtractorMediaSource(videoUrl,factory,extractorsFactory,null,null);
player.setPlayer(simpleExoPlayer);
player.setKeepScreenOn(true);
simpleExoPlayer.prepare(mediaSource);
simpleExoPlayer.setPlayWhenReady(true);
simpleExoPlayer.addListener(new Player.EventListener(){
@Override
public void onPlayerStateChanged(boolean playWhenReady, int playbackState) {
if (playbackState == Player.STATE_BUFFERING){
vprogressBar.setVisibility(View.VISIBLE);
}else if (playbackState == Player.STATE_READY){
vprogressBar.setVisibility(View.INVISIBLE);
}
}
}
И ниже мой cra sh log
E/ExoPlayerImplInternal: Source error.
com.google.android.exoplayer2.source.UnrecognizedInputFormatException: None of the available extractors (MatroskaExtractor, FragmentedMp4Extractor, Mp4Extractor, Mp3Extractor, AdtsExtractor, Ac3Extractor, TsExtractor, FlvExtractor, OggExtractor, PsExtractor, WavExtractor) could read the stream.
Пожалуйста, что я могу сделать иначе, чтобы мое приложение могло передавать мою ссылку m4v url из облачное хранилище Google?