Cómo obtener el ID de video de YouTube, incluidos los parámetros

En mi aplicación de Android, tengo un video de YouTube incrustado.

Estoy recibiendo el ID de video de Youtube de la URL original de la siguiente manera:

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

Esto funciona muy bien para una URL original como esta: http://www.youtube.com/watch?v=A7ry4cx6HfY

Cuando hago eso el video se carga y se juega perfectamente bien, pero la calidad es muy mala. (240p o peor aún, creo)

Por lo tanto, de google, sé que sólo necesita agregar un parámetro como &vq=large o &vq=hd1080 para obtener 480p / 1080p.

Pero cuando uso una url como esta http://www.youtube.com/watch?v=A7ry4cx6HfY&vq=hd1080 el parámetro es ignorado y la calidad sigue siendo mala.

¿Cómo puedo obtener el video con mejor calidad? Por supuesto, suponiendo que el video está disponible en esa calidad. ¿Por qué se ignora mi parámetro?

2 Solutions collect form web for “Cómo obtener el ID de video de YouTube, incluidos los parámetros”

Pruebe este código aquí.

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

Puedes encontrar mi código de analizador completo aquí https://github.com/TheFinestArtist/YouTubePlayerActivity/blob/master/library/src/main/java/com/thefinestartist/ytpa/utils/YoutubeUrlParser.java

Esta es una fuente abierta muy útil que hice para reproducir Youtube Video. https://github.com/TheFinestArtist/YouTubePlayerActivity

Solucioné este problema utilizando la API oficial de Google Youtube para Android.

Probablemente no sea la mejor idea intentar implementar la obtención de los videos por uno mismo. El uso de la API hace que para usted y funciona muy bien.

EDITAR

Aquí el enlace a la API: https://developers.google.com/youtube/android/player/

  • Se bloquea el SDK de Youtube al cargar vídeos en directo
  • Intentando reproducir video de YouTube en una aplicación PhoneGap / Cordova
  • Transmisión en directo desde la aplicación de Android a Youtube
  • reproducir archivo de vídeo de youtube en android
  • Cómo jugar video de youtube en ExoPlayer en Android?
  • "403 - useLimits" en la API de youtube
  • Cómo terminar YoutubeStandAlonePlayer después de completar el video en Android?
  • Custom WebView de Android para abrir todos los enlaces internamente, excepto los enlaces de YouTube.
  • Opción de pantalla completa no disponible al cargar video de YouTube en WebView
  • Aplicación de reproductor de youtube para Android, reproducción de Google rechazada para jugar en segundo plano
  • Cómo actualizar Youtube Player View onItemClickListener () en un ListView
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.