1

I am not able to play videos from assets folder using MediaController in VideoView. I looked into many stack overflow answers but none of them work. It works perfectly when I use Raw folder or SD Card folder path.

Below is my code :

    private void getVideoFromAssets() {

    try {
        // Start the MediaController
        MediaController mediacontroller = new MediaController(
                VideoViewActivity.this);
        mediacontroller.setAnchorView(videoview);
        // Get the URL from String VideoURL
        Uri video = Uri.parse("file:///android_asset/test.mp4");
        videoview.setMediaController(mediacontroller);
        videoview.setVideoURI(video);


    } catch (Exception e) {
        Log.e("Error", e.getMessage());
        e.printStackTrace();

    }

    videoview.requestFocus();
    videoview.setOnPreparedListener(new OnPreparedListener() {
        // Close the progress bar and play the video
        public void onPrepared(MediaPlayer mp) {

            videoview.start();

        }
    });


}

This same code works for raw and sd card folder while changing the respective path.But it does not work with assets. Any help will be appreciated.Thanks.

Siddharth_Vyas
  • 9,972
  • 10
  • 39
  • 69

2 Answers2

1

Try:

   AssetFileDescriptor afd = getAssets().openFd(fileName);
   player.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(), afd.getLength());
steevoo
  • 621
  • 6
  • 18
1

"file:///android_asset/..." works only for a WebView, you need to pass a Uri like this "content://your.authority/path.to.resource" that is you need to create custom ContentProvider and override its openAssetFile

pskink
  • 23,874
  • 6
  • 66
  • 77