2011-06-29 18 views
8

Estoy teniendo enlaces de tubo como http://www.youtube.com/v/YR71GnQ4CU4?f=videos&app=youtube_gdata, entonces cómo convertirlo a formato RTSP para jugar en VideoView.Cómo obtener enlaces RTSP Android

Am buscar API gdata con esto:. http://gdata.youtube.com/feeds/api/videos?&max-results=20&v=2&format=1&q= "+ URLEncoder.encode (activity.criteria) pero no puedo encontrar la manera de llegar relacionada url RTSP

+0

User919216 [aquí] (http://www.youtube.com/watch?v=ZA7Kkhv30WA) es una video simple sobre cómo obtener RTSP de youtube, toma como 45 segundos. – KaSiris

+0

@KaSiris: no funciona ... –

Respuesta

6

Tengo mi ..thanx respuesta a esta

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

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

en api gdata única que están recibiendo este tipo de enlaces:. rtsp://v3.cache7.c.youtube.com/CiILENy73wIaGQlOCTh0GvUeYRMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp

Estos están jugando en VideoView

+7

hola, por favor, puede pegar el fragmento de código donde está exactamente convirtiendo la url de youtube normal a rtsp. –

+0

@Udaykiran Puedes publicar un fragmento de código completo con el que estás generando una url rstp. – GrIsHu

1

Th puede ser un poco tarde Aquí hay un código de trabajo para personas que tienen problemas.

try{ 
     DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
     DocumentBuilder db = dbf.newDocumentBuilder(); 
     Document doc = db.parse(new URL(url).openStream()); 
     doc.getDocumentElement().normalize(); 
     NodeList content = doc.getElementsByTagName("media:content"); 
     for(int i=0; i<content.getLength(); i++){ 
      Element rsp = (Element)content.item(i); 
      result.add(rsp.getAttribute("url")); 
     } 

    }catch(Exception e){ 
     Log.e("log_tag", "Error in http connection "+e.toString()); 
    } 
+0

¿La identificación "Q-GLuydiMe4" no se abrirá de esta manera? Alguna idea ?? –

+0

En ocasiones, los videos de rtsp no se pueden reproducir en dispositivos móviles. Es posible que haya analizado la URL incorrecta. No implementó el almacenamiento en búfer en la videoview/mediaplayer. Sin más información, tendrá problemas para encontrar una solución a su problema. – HarshMarshmallow

+0

Cuando analizo los datos a través de esta identificación de video, en JSON hay una aplicación de campo $ Control. Y hay una etiqueta que tiene la cadena "Restringida". Por lo tanto, creo que esa es la razón por la que el video no se puede reproducir, pero la misma identificación se está ejecutando en iOS y otras aplicaciones de Android. Entonces, ¿tienes alguna idea? ¿Por qué es ...? –

0

A continuación se muestra la función que se puede obtener enlace RTSP para el video de youtube

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); 
     Log.i(MyActivity.class.getSimpleName(), url.toString()); 
     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; 

} 

private 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; 
} 
+1

bien ... corté y pegué y pasé https://www.youtube.com/watch?v=Y6hz_s2XIAU y esto no funciona. ¿Me estoy perdiendo de algo? –

+0

He intentado pero no trabajo. Esta API parece obsoleta. – Johnny

Cuestiones relacionadas