【问题标题】:How to get RTSP Links Android如何获取 RTSP 链接 Android
【发布时间】:2011-06-29 12:02:26
【问题描述】:

我有像 http://www.youtube.com/v/YR71GnQ4CU4?f=videos&app=youtube_gdata 这样的 YouTube 链接,然后如何将其转换为 RTSP 格式以在 VideoView 中播放。

我正在用这个搜索 gdata api:http://gdata.youtube.com/feeds/api/videos?&max-results=20&v=2&format=1&q="+ URLEncoder.encode(activity.criteria) 但我找不到如何获取相关的 RTSP url。

【问题讨论】:

  • User919216 here 是一个关于如何从 youtube 获取 RTSP 的简单视频,大约需要 45 秒。
  • @KaSiris:不工作......

标签: android youtube rtsp android-videoview


【解决方案1】:

我得到了我的答案..thanx

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 中播放。

【讨论】:

  • 嗨,您能否将代码 sn-p 粘贴到您将正常 youtube url 准确转换为 rtsp 的位置。
  • @Udaykiran 你能发布整个代码 sn-p 使用它来生成一个 rstp url。
【解决方案2】:

这可能有点晚了。这是一些有问题的人的工作代码。

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());
    }

【讨论】:

  • "Q-GLuydiMe4" id不会通过这种方式打开?有什么想法吗??
  • 有时 rtsp 视频无法在移动设备上播放。您可能解析了错误的 url。您没有在 videoview/mediaplayer 中实现缓冲。如果没有更多信息,您将很难找到解决问题的方法。
  • 当我通过这个视频 id 解析数据时,在 JSON 中有一个字段 app$Control。并且有标签具有字符串“Restricted”。所以,我认为这是无法播放视频的原因,但相同的 id 在 iOS 和其他 Android 应用程序中运行。所以你有什么想法吗???为什么...???
  • Android 和 iOS 应用程序正在运行相同的 id,因为它指向 youtube 视频,而不是任何特定于移动平台的内容。我建议您将带有深思熟虑的问题的实际错误消息发布到 stackoverflow,而不是将其埋在该线程的 cmets 中。
  • 能否请您提供完整的 RTSP 代码...因为我尝试了很长时间但没有得到结果,所以请您帮我解决这个问题
【解决方案3】:

以下是可以获取 youtube 视频 RTSP 链接的功能

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

【讨论】:

  • 好吧...我已经剪切并粘贴并通过了youtube.com/watch?v=Y6hz_s2XIAU,但这不起作用。我错过了什么吗?
  • 我已经尝试过但没有工作。此 API 似乎已被弃用。
猜你喜欢
  • 1970-01-01
  • 2021-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-04
  • 1970-01-01
  • 2014-01-11
相关资源
最近更新 更多