使用rstp和vnd.youtube播放Android youtube视频://

使用rstp和vnd.youtube播放Android youtube视频://,android,Android,//此方法仅显示youtube加载 Intent-Intent=newintent(Intent.ACTION_视图,Uri.parse(“vnd.youtube://“+videoId))startActivity(Intent) //第二种方法是根本不播放视频 二, 公共类MyTask扩展了AsyncTask { @凌驾 受保护的void onPreExecute(){ //TODO自动生成的方法存根 super.onPreExecute(); mProgressBar.setVisibil

//此方法仅显示youtube加载

  • Intent-Intent=newintent(Intent.ACTION_视图,Uri.parse(“vnd.youtube://“+videoId))startActivity(Intent)
  • //第二种方法是根本不播放视频 二,

    公共类MyTask扩展了AsyncTask
    {
    @凌驾
    受保护的void onPreExecute(){
    //TODO自动生成的方法存根
    super.onPreExecute();
    mProgressBar.setVisibility(LinearLayout.VISIBLE);
    }
    @凌驾
    受保护的Void doInBackground(Void…参数){
    //TODO自动生成的方法存根
    url=getUrlVideoRTSP(urlRstp[0]);
    rstlUrl=Uri.parse(url);
    返回null;
    }
    @凌驾
    受保护的void onPostExecute(void结果){
    //TODO自动生成的方法存根
    super.onPostExecute(结果);
    //Toast.makeText(VODVideoPlayActivity.this,url,Toast.LENGTH_LONG.show();
    //System.out.println(url);
    mVideoView.setVideoURI(rstlUrl);
    //MediaController mc=新的MediaController(VODVideoPlayActivity.this);
    //mVideoView.setMediaController(mc);
    //mVideoView.requestFocus();
    mVideoView.start();
    //mc.show();
    mProgressBar.setVisibility(LinearLayout.GONE);
    }
    }
    公共静态字符串getUrlVideoRTSP(字符串urlYoutube)
    {
    尝试
    {
    字符串gdy=”http://gdata.youtube.com/feeds/api/videos/";
    DocumentBuilder DocumentBuilder=DocumentBuilderFactory.newInstance().newDocumentBuilder();
    String id=extractYoutubeId(urlYoutube);
    URL=新URL(gdy+id);
    HttpURLConnection connection=(HttpURLConnection)url.openConnection();
    Document doc=documentBuilder.parse(connection.getInputStream());
    Element el=doc.getDocumentElement();
    NodeList list=el.getElementsByTagName(“媒体:内容”);///媒体:内容
    字符串游标=urlYoutube;
    对于(int i=0;i>”,例如toString();
    }
    返回YouTube;
    }
    受保护的静态字符串extractYoutubeId(字符串url)引发格式错误的异常
    
    调用新的VideoAsyncTask().execute()

    私有类VideoAsyncTask扩展了AsyncTask{
    进行对话进行对话;
    字符串videoUrl;
    @凌驾
    受保护的void onPreExecute(){
    super.onPreExecute();
    progressDialog=progressDialog.show(GallaryActivity.this,“,
    “正在加载视频等待…”,为真);
    }
    @凌驾
    受保护的Void doInBackground(Void…参数){
    试一试{
    //
    字符串id=”“;//youtube的视频id
    字符串url=”http://www.youtube.com/watch?v=“+id;
    videoUrl=getUrlVideoRTSP(url);
    Log.e(“播放的视频url===>>>>”,视频url);
    }捕获(例外e){
    e(“登录Soap调用异常”,e.toString());
    }
    返回null;
    }
    @凌驾
    受保护的void onPostExecute(void结果){
    super.onPostExecute(结果);
    progressDialog.disclose();
    /*
    *videoView.setVideoURI(Uri.parse(
    * "rtsp://v4.cache1.c.youtube.com/CiILENy73wIaGQk4RDShYkdS1BMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp"
    *);videoView.setMediaController(新
    *MediaController(AlertDetail.this));videoView.requestFocus();
    *videoView.start();
    */
    if(myvideoview.isPlaying())
    myvideoview.stopPlayback();
    myvideoview.setVideoURI(Uri.parse(videoUrl));
    MediaController mc=新的MediaController(GallaryActivity.this);
    设置媒体控制器(mc);
    myvideoview.requestFocus();
    myvideoview.start();
    mc.show();
    }
    }
    公共静态字符串getUrlVideoRTSP(字符串urlYoutube){
    试一试{
    字符串gdy=”http://gdata.youtube.com/feeds/api/videos/";
    DocumentBuilder DocumentBuilder=DocumentBuilderFactory
    .newInstance().newDocumentBuilder();
    String id=extractYoutubeId(urlYoutube);
    URL=新URL(gdy+id);
    HttpURLConnection连接=(HttpURLConnection)url
    .openConnection();
    Document doc=documentBuilder.parse(connection.getInputStream());
    Element el=doc.getDocumentElement();
    NodeList list=el.getElementsByTagName(“媒体:内容”);///媒体:内容
    字符串游标=urlYoutube;
    对于(int i=0;ipublic class MyTask extends AsyncTask<Void, Void, Void>
        {
    
        @Override
        protected void onPreExecute() {
            // TODO Auto-generated method stub
            super.onPreExecute();
            mProgressBar.setVisibility(LinearLayout.VISIBLE);
    
        }
    
        @Override
        protected Void doInBackground(Void... params) {
            // TODO Auto-generated method stub
            url=getUrlVideoRTSP(urlRstp[0]);
            rstlUrl=Uri.parse(url);
    
            return null;
        }
    
        @Override
        protected void onPostExecute(Void result) {
            // TODO Auto-generated method stub
            super.onPostExecute(result);
            //Toast.makeText(VODVideoPlayActivity.this, url, Toast.LENGTH_LONG).show();
            //System.out.println(url);
    
            mVideoView.setVideoURI(rstlUrl);
            //MediaController mc = new MediaController(VODVideoPlayActivity.this);
            //mVideoView.setMediaController(mc);
            //mVideoView.requestFocus();
            mVideoView.start();          
            //mc.show();
            mProgressBar.setVisibility(LinearLayout.GONE);          
        }
    
    
    
    
    }
    
    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
    
    private class VideoAsyncTask extends AsyncTask<Void, Void, Void> {
        ProgressDialog progressDialog;
        String videoUrl;
    
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            progressDialog = ProgressDialog.show(GallaryActivity.this, "",
                    "Loading Video wait...", true);
        }
    
        @Override
        protected Void doInBackground(Void... params) {
            try {
                //
    
                String id = ""; //video id of youtube
    
                String url = "http://www.youtube.com/watch?v=" + id;
                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();
             */
    
            if (myvideoview.isPlaying())
                myvideoview.stopPlayback();
            myvideoview.setVideoURI(Uri.parse(videoUrl));
            MediaController mc = new MediaController(GallaryActivity.this);
            myvideoview.setMediaController(mc);
            myvideoview.requestFocus();
    
            myvideoview.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;
    }