2011-11-16 119 views
2

我开发了包括视频查看应用程序,这是我的问题如何获取RTSP网址?

  1. 时,我已加载正常的网址无法正常运作,YouTube的
  2. 如何上面的URL转换为RTSP的网址是什么?
  3. 我已经试过我都用http://www.youtube.com/watch?v=8mIOkkkA2jA

代码的链接:

VideoView videoView = (VideoView) findViewById(R.id.VideoView); 
MediaController mediaController = new MediaController(this); 
mediaController.setAnchorView(videoView); Uri video = Uri.parse("youtube.com/watch?v=8mIOkkkA2jA";); 
videoView.setMediaController(mediaController); 
videoView.setVideoURI(video); 
videoView.start(); 

请你们u能解释我如何实现这一目标? 在此先感谢!!!!!!

+0

和您所使用的代码,而不是工作? –

+0

但什么不工作?如果你在这里粘贴代码,最好能够找到确切的问题。 –

+0

VideoView videoView =(VideoView)findViewById(R.id.VideoView); \t \t MediaController mediaController = new MediaController(this); \t \t mediaController.setAnchorView(videoView); \t \t Uri video = Uri.parse(“http://www.youtube.com/watch?v=8mIOkkkA2jA”); \t \t videoView.setMediaController(mediaController); \t \t videoView.setVideoURI(video); \t \t videoView.start(); –

回答

4

注:只工作Android手机(而不是在平板)

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; 
    } 
+0

我可以问你为什么这不适用于平板电脑,只适用于手机? –

+1

Q-GLuydiMe4 id不会通过这种方式打开?我试过,但不能转换成rtsp链接,但有些工作正常。该视频ID在YouTube上完美运行。 –

1

我用这个代码把我在app YouTube视频的工作:http://code.google.com/p/android-youtube-player/

它做的正是你所寻找的,所以如果你不希望所有的代码,你可以撕裂出位它正在检查YouTube视频流并在您的应用中使用它。

经过多年的发现,希望它有所帮助。

+0

肯定我会检查它... –

1

实际我所做的就是:代码在这里

if (responseCode == HttpURLConnection.HTTP_OK) { 
         InputStream in = httpConnection.getInputStream(); 

         DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
         DocumentBuilder db = dbf.newDocumentBuilder(); 

         Document dom = db.parse(in);  
         Element docEle = dom.getDocumentElement(); 

         NodeList nl = docEle.getElementsByTagName("entry"); 
         if (nl != null && nl.getLength() > 0) { 
         for (int i = 0 ; i < nl.getLength(); i++) { 
          Element entry = (Element)nl.item(i); 
          Element title = (Element)entry.getElementsByTagName("title").item(0); 

          String titleStr = title.getFirstChild().getNodeValue(); 

          Element content = (Element)entry.getElementsByTagName("content").item(0); 
          String contentStr = content.getAttribute("src"); 

          Element rsp = (Element)entry.getElementsByTagName("media:content").item(1); 

          String anotherurl=rsp.getAttribute("url"); 

         // System.out.println("content uri"+anotherurl); 

          Element photoUrl = (Element)entry.getElementsByTagName("media:thumbnail").item(0); 
          String photoStr = photoUrl.getAttribute("url"); 


          JSONObject temp = new JSONObject(); 
          try { 
          temp.put("Title", titleStr); 
          temp.put("Content", contentStr); 
          temp.put("PhotoUrl", photoStr); 
          temp.put("VideoUrl", anotherurl); 
          } catch (JSONException e) { 
          // TODO Auto-generated catch block 
          e.printStackTrace(); 
          } 

          collection.put(temp); 

          //VideoCell cell = new VideoCell(titleStr); 
         } 
         } 
        } 

这里命名为anotherurl字符串是你在寻找RTSP URL链接。

希望它有帮助。

+0

它在我的个人资料.. – Udaykiran

+0

Q-GLuydiMe4 id不会通过这种方式打开?你有什么想法,为什么? –