Can't play this video. Android videoView mp4 recorded by android device

53,650

Solution 1

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...

Solution 2

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" />

Solution 3

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();

Solution 4

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);
    }
}

Solution 5

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

Share:
53,650

Related videos on Youtube

Jacob
Author by

Jacob

Hi :) .. avoid this for your life quality ;) https://www.linkedin.com/in/kozlowskijakub

Updated on July 09, 2022

Comments

  • Jacob
    Jacob almost 2 years

    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();
    
  • Jayesh Khasatiya
    Jayesh Khasatiya almost 10 years
  • Arjun Singh
    Arjun Singh over 8 years
    thanx Andrii.. Actually i was getting late for my class.. :-)
  • Hoppeduppeanut
    Hoppeduppeanut almost 4 years
    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.
  • Piyush Kumar
    Piyush Kumar almost 2 years
    after this add mVideoView.start();