Airam Ashiya
Airam Ashiya

Reputation: 21

VideoView MediaPlayer Error

I am a newbie in android programming and I am trying to create an application that will play videos via urls returned by my server. I used VideoView on my project but my videos won't play when I run my app. I have here a screenshot of my logcat and some methods of mine. Please help me with my problem. Thanks in advance.

screenshots here

public void playVideo(Uri uri)
    {
        progressBar.setVisibility(View.GONE);
        videoView.setVideoURI(uri);
        videoView.requestFocus();
        videoView.start();

        progressBar.setVisibility(View.VISIBLE);
        videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
            @Override
            public void onPrepared(MediaPlayer mp) {
                // TODO Auto-generated method stub
                mp.start();
                mp.setOnVideoSizeChangedListener(new MediaPlayer.OnVideoSizeChangedListener() {
                    @Override
                    public void onVideoSizeChanged(MediaPlayer mp, int arg1,
                                                   int arg2) {
                        // TODO Auto-generated method stub
                        progressBar.setVisibility(View.GONE);
                        mp.start();
                    }
                });

            }
        });

        videoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {

            @Override
            public void onCompletion(MediaPlayer mp) {
                if (videoItem < adList.size() - 1) {
                    getVideo(videoItem++);
                } else if(!waiting){/*
                    videoItem = 0;
                    getVideo();*/
                    videoItem = 0;
                    new GetVideoAdURLTask().execute(jsonURL + location);
                }
                else {
                    videoItem = 0;
                    getVideo(videoItem);
                }
            }
        });
    }

    public synchronized void getVideo(final int n)
    {
        AsyncTask<String, Void, String> task = new AsyncTask<String, Void, String>()
        {
            @Override
            public String doInBackground(String... urls)
            {
                uri = Uri.parse(adList.get(n));
                Log.d("VIDFRAGMENT URI", String.valueOf(uri));

                return null;
            }

            @Override
            protected void onPostExecute(String result)
            {
                playVideo(uri);
            }
        };
        task.execute();
    }

Upvotes: 2

Views: 1298

Answers (2)

Jorgesys
Jorgesys

Reputation: 126445

Based on your error message:

MediaPlayer: Couldn´t open file on client side, trying server side

The problem is that MediaPlayer can´t find the Video.

A good practice to avoid the blank spaces that will truncate the url is encoding the url:

  try {
            String urlVideoEncoded = URLEncoder.encode("http://www.jorgesys.com/provider?videoid=myvideo cool.mp4", "utf-8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }

Upvotes: 1

tk1505
tk1505

Reputation: 312

Try this

//your video url
String VideoURL = "";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // Get the layout from video_main.xml
    setContentView(R.layout.videoview_main);
    // Find your VideoView in your video_main.xml layout
    videoview = (VideoView) findViewById(R.id.VideoView);
    // Execute StreamVideo AsyncTask

    // Create a progressbar
    pDialog = new ProgressDialog(VideoViewActivity.this);
    // Set progressbar title
    pDialog.setTitle("Android Video Streaming Tutorial");
    // Set progressbar message
    pDialog.setMessage("Buffering...");
    pDialog.setIndeterminate(false);
    pDialog.setCancelable(false);
    // Show progressbar
    pDialog.show();

    try {
        // Start the MediaController
        MediaController mediacontroller = new MediaController(
                VideoViewActivity.this);
        mediacontroller.setAnchorView(videoview);
        // Get the URL from String VideoURL
        Uri video = Uri.parse(VideoURL);
        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) {
            pDialog.dismiss();
            videoview.start();
        }
    });

}

Upvotes: 2

Related Questions