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/

  • Código para descargar el video de Youtube en Java, Android
  • ¿Hay una versión HD (Higher Quality) .3gp de vídeo en youtube para los jugadores de HTML?
  • Youtube Video no se muestra en RecyclerView
  • El botón Reproducir en una incrustación de youtube no funciona en android-chrome
  • ¿Cómo iniciar la aplicación Youtube para abrir un canal?
  • RTSP enlace de youtube
  • Los controles de YouTube (reproducción / pausa) no funcionan después de restaurar el reproductor / se reanuda la actividad
  • Cargando video de Youtube a través de i-frame en android webview
  • ¿Cómo podemos reproducir código incrustado de YouTube en una aplicación de Android mediante webview?
  • La API de reproductor de YouTube para Android lanza "BadParcelableException ClaseNotFoundException al desmarcar: asc" con la nueva versión de YouTube
  • Cómo reproducir video de YouTube dentro de Android WebView?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.