2013-04-01 10 views
6

私のAndroidアプリケーションでは、埋め込みYouTube動画があります。パラメータを含むYouTube動画IDを取得する

次のように私は、元のURLからYouTubeの動画IDを取得しています:これは、このような元のURLのためだけで正常に動作し

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を取得する必要があることを知っています。

しかし、このようなURLを使用すると、http://www.youtube.com/watch?v=A7ry4cx6HfY&vq=hd1080のパラメータは無視され、品質はまだ悪いです。

ビデオの品質を上げるにはどうすればよいですか?もちろん、そのビデオがその品質で利用可能であると仮定します。私のパラメータはなぜ無視されますか?

答えて

1

Googleの公式のGoogle Youtube API for Androidを使用してこの問題を解決しました。

動画を自分で取得することをおすすめします。 APIを使用すると、それはうまく動作します。

EDITここ

APIへのリンク:https://developers.google.com/youtube/android/player/

+10

YouTube APIでURL – CommonMan

+0

からビデオIDを抽出する方法はありません。それは正しいですが、高品質のビデオにアクセスするために必要なのはIDだけです。 YouTube APIを使用すると、すべての品質のバリエーションにアクセスできるため、不要になります –

2

ここにこのコードを試してみてください。

// (?: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; 
} 

あなたは、これは私がYouTubeのビデオを再生するために作られた便利なオープンソースであり、ここで https://github.com/TheFinestArtist/YouTubePlayerActivity/blob/master/library/src/main/java/com/thefinestartist/ytpa/utils/YoutubeUrlParser.java

から私の全体のパーサコードを見つけることができます。 https://github.com/TheFinestArtist/YouTubePlayerActivity

関連する問題