6

在我的 Android 应用程序中,我有一个嵌入式 YouTube 视频。

我从原始网址获取 Youtube 视频 ID,如下所示:

private String extractYoutubeId(String url) {

    String video_id = "";
    if (url != null && url.trim().length() > 0 && url.startsWith("http")) {

        String expression = "^.*((youtu.be" + "\\/)"
                + "|(v\\/)|(\\/u\\/w\\/)|(embed\\/)|(watch\\?))\\??v?=?([^#\\&\\?]*).*";
        CharSequence input = url;
        Pattern pattern = Pattern.compile(expression, Pattern.CASE_INSENSITIVE);
        Matcher matcher = pattern.matcher(input);
        if (matcher.matches()) {
            String groupIndex1 = matcher.group(7);
            if (groupIndex1 != null && groupIndex1.length() == 11)
                video_id = groupIndex1;
        }
    }

    return video_id;
}

这适用于这样的原始网址:http ://www.youtube.com/watch?v=A7ry4cx6HfY

当我这样做时,视频被加载并播放得非常好,但质量很差。(我认为是 240p 甚至更糟)

因此,通过谷歌搜索,我知道您只需要添加一个参数,如&vq=large&vq=hd1080获得 480p/1080p。

但是当我使用这样的网址http://www.youtube.com/watch?v=A7ry4cx6HfY&vq=hd1080时,该参数被忽略并且质量仍然很差。

如何获得更好质量的视频?当然,假设视频以这种质量可用。为什么我的参数被忽略?

4

2 回答 2

3

在此处尝试此代码。

// (?:youtube(?:-nocookie)?\.com\/(?:[^\/\n\s]+\/\S+\/|(?:v|e(?:mbed)?)\/|\S*?[?&]v=)|youtu\.be\/)([a-zA-Z0-9_-]{11})
final static String reg = "(?:youtube(?:-nocookie)?\\.com\\/(?:[^\\/\\n\\s]+\\/\\S+\\/|(?:v|e(?:mbed)?)\\/|\\S*?[?&]v=)|youtu\\.be\\/)([a-zA-Z0-9_-]{11})";

public static String getVideoId(String videoUrl) {
    if (videoUrl == null || videoUrl.trim().length() <= 0)
        return null;

    Pattern pattern = Pattern.compile(reg, Pattern.CASE_INSENSITIVE);
    Matcher matcher = pattern.matcher(videoUrl);

    if (matcher.find())
        return matcher.group(1);
    return null;
}

你可以从这里找到我的整个解析器代码 https://github.com/TheFinestArtist/YouTubePlayerActivity/blob/master/library/src/main/java/com/thefinestartist/ytpa/utils/YoutubeUrlParser.java

这是我用来播放 Youtube 视频的有用开源。 https://github.com/TheFinestArtist/YouTubePlayerActivity

于 2015-02-16T03:09:43.160 回答
1

我通过使用适用于 Android 的官方 Google Youtube API 解决了这个问题。

尝试自己实现视频的获取可能不是最好的主意。使用 API 可以为您做到这一点,而且效果很好。

编辑

这里是 API 的链接:https ://developers.google.com/youtube/android/player/

于 2013-09-03T16:29:49.170 回答