23

enter image description here

I've looked for existing potential solutions with other formats and those still responds with mentioned error.

Finally, recorded the video with the same device and used it as a resource for this app and it still doesn't work.

Devices: SGS2, lenovo a820

Video type: MPEG-4 video (video/mp4)

    videoView = (VideoView)findViewById(R.id.videoView);
    videoView.setVideoPath("android.resource://raw/sample.mp4");
    videoView.start();
Jacob
  • 14,949
  • 19
  • 51
  • 74
  • Check [this][1] thread for the explanation. [1]: http://stackoverflow.com/questions/7806261/strange-behavior-of-android-videoview-cant-play-video – intrepidkarthi Jul 14 '14 at 05:39
  • This answer worked for me: https://stackoverflow.com/questions/59882785/cant-play-this-video-error-using-url-with-videoview-and-mediacontroller#:~:text=Add%20a%20comment-,1,Hope%20this%20will%20help.,-Share – Hila Grossbard Feb 21 '22 at 22:09

9 Answers9

19

Please refer below code snippet...problem was with the path declaration..

 String uriPath = "android.resource://"+getPackageName()+"/"+R.raw.aha_hands_only_cpr_english;
        Uri uri = Uri.parse(uriPath);
        mVideoView.setVideoURI(uri);

Thats it...

Jayesh Khasatiya
  • 2,140
  • 1
  • 14
  • 15
12

I tried everything mentioned before but it turns out that internet permission is needed to play a mp4 file.

<uses-permission android:name="android.permission.INTERNET" />
Vol-i
  • 149
  • 1
  • 4
1

try following code..

videoView = (VideoView)this.findViewById(R.id.videoView);
String path = "android.resource://" + getPackageName() + "/" + R.raw.video_file;
MediaController mc = new MediaController(this);
videoView.setMediaController(mc);
videoView.start();
1
public class videoplayer extends Activity {
    private static final String Videos_URL = "*your URI*";

    private VideoView myVideoView;
    private int position = 0;
    private ProgressDialog progressDialog;
    private MediaController mediaControls;

    @Override
    protected void onCreate(final Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // Get the layout from video_main.xml
        setContentView(R.layout.activity_main);

        if (mediaControls == null) {
            mediaControls = new MediaController(this);
        }

        // Find your VideoView in your video_main.xml layout
        myVideoView = (VideoView) findViewById(R.id.videoView);

        // Create a progressbar
        progressDialog = new ProgressDialog(this);
        // Set progressbar title
        progressDialog.setTitle("ABCDEFGH");
        // Set progressbar message
        progressDialog.setMessage("Loading...");

        progressDialog.setCancelable(false);
        // Show progressbar
        progressDialog.show();

        try {
            Uri video = Uri.parse(Videos_URL);
            myVideoView.setVideoURI(video);
            myVideoView.setMediaController(mediaControls);
        } catch (Exception e) {
            Log.e("Error", e.getMessage());
            e.printStackTrace();
        }

        myVideoView.requestFocus();
        myVideoView.setOnPreparedListener(new OnPreparedListener() {
            // Close the progress bar and play the video
            public void onPrepared(MediaPlayer mp) {
                progressDialog.dismiss();
                myVideoView.seekTo(position);
                if (position == 0) {
                    myVideoView.start();
                } else {
                    myVideoView.pause();
                }
            }
        });

    }

    @Override
    public void onSaveInstanceState(Bundle savedInstanceState) {
        super.onSaveInstanceState(savedInstanceState);
        savedInstanceState.putInt("Position", myVideoView.getCurrentPosition());
        myVideoView.pause();
    }

    @Override
    public void onRestoreInstanceState(Bundle savedInstanceState) {
        super.onRestoreInstanceState(savedInstanceState);
        position = savedInstanceState.getInt("Position");
        myVideoView.seekTo(position);
    }
}
Andrii Krupka
  • 4,276
  • 3
  • 20
  • 41
Arjun Singh
  • 724
  • 1
  • 8
  • 24
1

Be sure that the decoder (target sdk) supports the video format you are using. You can use VLC Player to convert video format to the desired one. In my case, I converted the MP4 to WebM file and load it in the VideoView.

Here is how you get the file path and play your video.

String path = "android.resource://" + getPackageName() + "/" + R.raw.sample;
VideoView videoView = (VideoView)findViewById(R.id.videoView);
videoView.setVideoURI(Uri.parse(path));
videoView.start()

Source: Video format and codec support https://developer.android.com/guide/topics/media/media-formats.html

noahutz
  • 1,207
  • 1
  • 9
  • 11
0

For Lenovo a820 ,below is need :

- MP4/WMV/H.264/H.263 player
- MP3/WAV/WMA/eAAC+ player

make sure that ur video fits in above codec format.

KOTIOS
  • 11,177
  • 3
  • 39
  • 66
0

Just Replace your code with this code and it will be working:

VideoView videoView = findViewById(R.id.videoView);
        videoView.setVideoPath("android.resource://" + getPackageName() + "/" + R.raw.sample);
        videoView.start();
Riya Gupta
  • 69
  • 3
  • While this might answer the question, you should [edit] your answer to include an explanation of *how* this code block answers the question. This makes your answer much more useful to those who come across the same issue later on. – Hoppeduppeanut Jun 16 '20 at 01:20
0

I think the issue is with the device on which we try to play video, sometimes it doesn't support. I tried running it on Linux emulatoe

-1

Try this following code it works..........

VideoView videoView=(VideoView)findViewById(R.id.videoView);

videoView.setVideoPath("android.resource://"+getPackageName()+"/"+R.raw.videoname;

videoView.start();