How to play Youtube videos in Android Video View? How to play Youtube videos in Android Video View? android android

How to play Youtube videos in Android Video View?


As I can't find any way to load the rtsp URL in video view (for all devices & android versions), I solved my problem with another work around. I used a webview to embed the youtube player within it, and this method working nicely in all tested devices.

Here is my code:

mWebView.getSettings().setJavaScriptEnabled(true);mWebView.getSettings().setPluginState(PluginState.ON);mWebView.loadUrl("http://www.youtube.com/embed/" + videoID + "?autoplay=1&vq=small");mWebView.setWebChromeClient(new WebChromeClient());

Thank you very much for all your help guys.


private class YourAsyncTask extends AsyncTask<Void, Void, Void>    {        ProgressDialog progressDialog;        @Override        protected void onPreExecute()        {            super.onPreExecute();            progressDialog = ProgressDialog.show(AlertDetail.this, "", "Loading Video wait...", true);        }        @Override        protected Void doInBackground(Void... params)        {            try            {                String url = "http://www.youtube.com/watch?v=1FJHYqE0RDg";                videoUrl = getUrlVideoRTSP(url);                Log.e("Video url for playing=========>>>>>", videoUrl);            }            catch (Exception e)            {                Log.e("Login Soap Calling in Exception", e.toString());            }            return null;        }        @Override        protected void onPostExecute(Void result)        {            super.onPostExecute(result);            progressDialog.dismiss();/*            videoView.setVideoURI(Uri.parse("rtsp://v4.cache1.c.youtube.com/CiILENy73wIaGQk4RDShYkdS1BMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp"));            videoView.setMediaController(new MediaController(AlertDetail.this));            videoView.requestFocus();            videoView.start();*/                        videoView.setVideoURI(Uri.parse(videoUrl));            MediaController mc = new MediaController(AlertDetail.this);            videoView.setMediaController(mc);            videoView.requestFocus();            videoView.start();                      mc.show();        }    }public static String getUrlVideoRTSP(String urlYoutube)    {        try        {            String gdy = "http://gdata.youtube.com/feeds/api/videos/";            DocumentBuilder documentBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();            String id = extractYoutubeId(urlYoutube);            URL url = new URL(gdy + id);            HttpURLConnection connection = (HttpURLConnection) url.openConnection();            Document doc = documentBuilder.parse(connection.getInputStream());            Element el = doc.getDocumentElement();            NodeList list = el.getElementsByTagName("media:content");///media:content            String cursor = urlYoutube;            for (int i = 0; i < list.getLength(); i++)            {                Node node = list.item(i);                if (node != null)                {                    NamedNodeMap nodeMap = node.getAttributes();                    HashMap<String, String> maps = new HashMap<String, String>();                    for (int j = 0; j < nodeMap.getLength(); j++)                    {                        Attr att = (Attr) nodeMap.item(j);                        maps.put(att.getName(), att.getValue());                    }                    if (maps.containsKey("yt:format"))                    {                        String f = maps.get("yt:format");                        if (maps.containsKey("url"))                        {                            cursor = maps.get("url");                        }                        if (f.equals("1"))                            return cursor;                    }                }            }            return cursor;        }        catch (Exception ex)        {            Log.e("Get Url Video RTSP Exception======>>", ex.toString());        }        return urlYoutube;    }protected static String extractYoutubeId(String url) throws MalformedURLException    {        String id = null;        try        {            String query = new URL(url).getQuery();            if (query != null)            {                String[] param = query.split("&");                for (String row : param)                {                    String[] param1 = row.split("=");                    if (param1[0].equals("v"))                    {                        id = param1[1];                    }                }            }            else            {                if (url.contains("embed"))                {                    id = url.substring(url.lastIndexOf("/") + 1);                }            }        }        catch (Exception ex)        {            Log.e("Exception", ex.toString());        }        return id;    }


Due to current version of YouTube you are likely to get a “Can’t play this video” error if you will use VideoView to show your video.

Take a look at this approcach with YouTubePlayerView:http://xinyustudio.wordpress.com/2014/03/17/android-development-play-youtube-video-in-your-app-cant-play-this-video-and-troubleshooting/