Как я могу транслировать URL-адрес m4v из Google Cloud Platform с помощью Exoplayer - PullRequest
0 голосов
/ 10 июля 2020

Я хочу использовать 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?

1 Ответ

0 голосов
/ 10 июля 2020

AFAIK, вам нужно использовать gsutil cp для потоковой передачи в ExoPlayer. Я мало знаю обо всем процессе, но я нашел документацию , которая может направить вас в правильном направлении.

...