Как получить RTSP-ссылки Android

У меня есть ссылки на YouTube, такие как http://www.youtube.com/v/YR71GnQ4CU4?f=videos&app=youtube_gdata , а затем как преобразовать его в формат RTSP для воспроизведения в VideoView.

Я ищу gdata api с помощью этого: http://gdata.youtube.com/feeds/api/videos?&max-results=20&v=2&format=1&q="+ URLEncoder.encode(activity.criteria), но я не могу найти, как получить соответствующий URL-адрес RTSP.


person Udaykiran    schedule 29.06.2011    source источник
comment
User919216 здесь простое видео о том, как получить RTSP с YouTube, занимает около 45 секунд. .   -  person KaSiris    schedule 07.02.2012
comment
@KaSiris: не работает...   -  person Akarsh M    schedule 25.02.2014


Ответы (3)


Я получил ответ ..спасибо за это

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

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

Только в gdata api мы получаем ссылки такого типа: rtsp://v3.cache7.c.youtube.com/CiILENy73wIaGQlOCTh0GvUeYRMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp

Они воспроизводятся в VideoView.

person Udaykiran    schedule 29.06.2011
comment
привет, не могли бы вы вставить фрагмент кода, где вы точно конвертируете обычный URL-адрес YouTube в rtsp. - person Chanakya Vadla; 19.01.2012
comment
@Udaykiran Можете ли вы опубликовать весь фрагмент кода, с помощью которого вы создаете URL-адрес rstp. - person GrIsHu; 25.05.2016

Это может быть немного поздно. Вот некоторый рабочий код для тех, у кого проблемы.

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());
    }
person HarshMarshmallow    schedule 24.12.2013
comment
Идентификатор Q-GLuydiMe4 не открывается таким образом? Любая идея ?? - person Akarsh M; 24.02.2014
comment
Иногда видео rtsp невозможно воспроизвести на мобильном телефоне. Возможно, вы проанализировали неправильный URL. Вы не реализовали буферизацию в видеопросмотре/медиаплеере. Без дополнительной информации у вас возникнут проблемы с поиском решения вашей проблемы. - person HarshMarshmallow; 25.02.2014
comment
Когда я анализирую данные через этот идентификатор видео, в JSON есть поле app $ Control. И есть тег со строкой Restricted. Итак, я думаю, что это причина того, что видео не может быть воспроизведено, но тот же идентификатор работает в iOS и других приложениях для Android. Так ты хоть представляешь??? почему это ...??? - person Akarsh M; 25.02.2014
comment
Один и тот же идентификатор работает для приложений Android и iOS, потому что он указывает на видео на YouTube, а не на что-то конкретное для мобильной платформы. Я бы порекомендовал опубликовать ваше фактическое сообщение об ошибке с хорошо продуманным вопросом в stackoverflow, а не похоронить его в комментариях этой темы. - person HarshMarshmallow; 25.02.2014
comment
Не могли бы вы предоставить мне полный код для RTSP ... Потому что я долгое время пытаюсь, но не получаю результата, так что не могли бы вы помочь мне с этим? - person Akarsh M; 25.02.2014
comment
Этот код показывает вам, как получить ссылки. Не чего с ними потом делать. В данный момент я очень занят, и у меня нет достаточно времени, чтобы вернуться к этому коду и отформатировать его так, чтобы это имело смысл для вас. Если у вас есть актуальный вопрос, пожалуйста, создайте новую тему. Обычно люди отвечают быстро и всегда готовы помочь. - person HarshMarshmallow; 25.02.2014

Ниже приведена функция, которая может получить ссылку RTSP для видео на 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;
}
person Nixit Patel    schedule 20.07.2014
comment
ну... я вырезал, вставил и передал youtube.com/watch?v=Y6hz_s2XIAU и это не работает. Я что-то упускаю? - person Chris Sprague; 28.02.2015
comment
Я пробовал, но безрезультатно. Этот API кажется устаревшим. - person Johnny; 02.12.2015