androidandroid-videoviewmediacontroller

"Can't play this video" Error using URL with VideoView and Mediacontroller


So I'm trying to do my homework, but the teacher's given me 0 information about this. There is an example of how to play a video from a file in the res/raw folder, but there's nothing about online URLs. Please help me, I just want a simple player. I'll attach a picture detailing exactly what is up. I'll also add the code, since it's not that much and I really have no clue what could be wrong. Error says this:

W/MediaPlayer: Couldn't open http://techslides.com/...

java.io.FileNotFoundException: No content provider: http://techslides.com/demos/sample-videos/small.mp4

And this is the code:

    VideoView video;
    String url = "http://techslides.com/demos/sample-videos/small.mp4";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    video = (VideoView) findViewById(R.id.videoView);
    MediaController mc = new MediaController(this);
    mc.setAnchorView(mc);
    video.setVideoPath(url);
    video.setMediaController(mc);
    video.start();
    }

Error and code - screenshot

I will finally add to this that I've tried several different URLs, including some https ones and some http.

EDIT: So, I tried fixing it and it ended up looking like this:

    video = (VideoView) findViewById(R.id.videoView);
    final MediaController mc = new MediaController(this);
    mc.setAnchorView(mc);
    video.setVideoPath(url);
    video.setMediaController(mc);

    video.setOnPreparedListener(new MediaPlayer.OnPreparedListener(){
        @Override
        public void onPrepared(MediaPlayer mp){
            video.start();
        }
    });

But it still gives me the same error when the emu is open. "Can't play this video". On the other hand, I got a bunch of new errors:

E/MediaPlayerNative: error (1, -2147483648)
E/MediaPlayer: Error (1,-2147483648)
D/VideoView: Error: 1,-2147483648

I'm not really familiarized with this technology, and the teacher hasn't given us any notions whatsoever as to what should or shouldn't be in the code for it to work. Just an example of a locally stored video playing in Android Studio with VideoView... that doesn't work when applied to online URLs.


Solution

  • So I've ended up fixing it myself. The problem wasn't in the code, for anyone wondering I've ended up using this simple format:

        protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        video = (VideoView) findViewById(R.id.video);
    
        Uri uri = Uri.parse("http://techslides.com/demos/sample-videos/small.mp4");
        video.setMediaController(new MediaController(this));
        video.setVideoURI(uri);
        video.requestFocus();
        video.start();
    
    }
    

    The problem was the AVD itself. I had a Pixel 1 running Android 9, and that for some reason didn't work. I've installed a Nexus 5 with Oreo and it works flawlessly.