Не удается потоковое видео с помощью VideoView на некоторых устройствах - PullRequest
0 голосов
/ 10 октября 2019

Я реализовал собственный видеоплеер, который использует URL-адреса в качестве входных данных. При этом все работало отлично, пока я не сменил устройство, с которым я тестировал.

Итак, в Samsung S5 с Android 6.0.1 (и некоторых других устройствах других брендов) я не могу воспроизводить видео. Методы onPrepared () и onError () никогда не вызываются, и я не получаю никакой ошибки в logcat, поэтому у меня нет никаких указаний о том, что происходит в фоновом режиме.

Мое первое предположение,был связан с некоторой проблемой кодека (видео mp4), но я не получаю никаких ошибок / исключений в logcat, и ни один из слушателей не вызывается. Может ли оно все еще быть связано с кодеками?

    videoPlayer = (VideoView) findViewById(R.id.video_player_view);
        videoPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener()
    {
        @Override
        public void onCompletion(MediaPlayer mediaPlayer)
        {
            // never gets called in S5
            videoEnded();
        }
    });

        videoPlayer.setOnErrorListener(
                new MediaPlayer.OnErrorListener()
    {
        @Override
        public boolean onError(MediaPlayer mp, int error, int extra)
        {
            // never gets called in S5
            // error handling

        });


        videoPlayer.setOnPreparedListener(
                new MediaPlayer.OnPreparedListener()
                {
                    @Override
                    public void onPrepared(MediaPlayer mediaPlayer)
                    {
                        mPlayer = mediaPlayer;
                        mediaPlayer.setOnInfoListener(new MediaPlayer.OnInfoListener()
                        {
                            @Override
                            public boolean onInfo(MediaPlayer mp, int what, int extra)
                            {
                                // never gets called in S5
                                // deal with buffering
                                return false;                                }
                        });
                    }
                });
    }

...

videoPlayer.setVideoURI(videoUri);
videoPlayer.start();

Edit Я считаю, что это происходит, потому что я использую PopupWindow в качестве корневого окна дляVideoView. Я просто не понимаю, почему это работает на некоторых устройствах, а другие не

...