Comment jouer à la vidéo youtube dans ExoPlayer dans Android?

J'essaie de jouer à la vidéo youtube en exoplayer, mais voici une certaine confusion, je ne sais pas ce que c'est que DASH url, j'ai seulement une véritable URL de youtube comme " https://www.youtube.com/watch?v=v1uyQZNg2vE ", i Je n'ai aucune idée de comment générer url de tableau de bord de l'url réel.

Dash Url:

  • Comment puis-je calculer le hash SHA-256 d'une chaîne dans Android?
  • "Aucune image système installée pour cette cible" même si Image est installée
  • Changer les emplacements de sortie ndk-build
  • Android LatinIME build
  • Comment obtenir un élément de l'enfant dans ExpandableListView?
  • Préférences sans méthodes obsolètes
  • new Sample("Google Glass", "http://www.youtube.com/api/manifest/dash/id/bf5bb2419360daf1/source/youtube?" + "as=fmp4_audio_clear,fmp4_sd_hd_clear&sparams=ip,ipbits,expire,as&ip=0.0.0.0&" + "ipbits=0&expire=19000000000&signature=255F6B3C07C753C88708C07EA31B7A1A10703C8D." + "2D6A28B21F921D0B245CDCF36F7EB54A2B5ABFC2&key=ik0", DemoUtil.TYPE_DASH), 

    Url réel:

      https://www.youtube.com/watch?v=v1uyQZNg2vE 

  • Comment faire une vue Android qui bascule entre les vues sur swipe / fling
  • Meilleure pratique pour afficher des messages d'erreur
  • Impossible de résoudre le symbole FragmentCompat
  • Android: trouver un bouton par identifiant
  • Devrais-je me soucier des messages du journal de la console DDMS "Impossible de lier le nnnn local pour le débogueur"?
  • Affichage de style d'habillage Android AlertDialog
  • 3 Solutions collect form web for “Comment jouer à la vidéo youtube dans ExoPlayer dans Android?”

    J'ai écrit une classe qui récupère l'URL de diffusion vidéo YouTube actuelle pour le format comme DASH et HLS en utilisant http://www.youtube.com/get_video_info?&video_id=%5Bvideo_id%5D url avec l'ID vidéo comme décrit par Karim Abdell Salam . J'ai également testé l'URL dans une application qui utilise ExoPlayer et ça marche:

     import java.io.BufferedInputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.UnsupportedEncodingException; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.ProtocolException; import java.net.URL; import java.net.URLDecoder; import java.util.Map; import java.util.TreeMap; /** * Represents youtube video information retriever. */ public class YouTubeVideoInfoRetriever { private static final String URL_YOUTUBE_GET_VIDEO_INFO = "http://www.youtube.com/get_video_info?&video_id="; public static final String KEY_DASH_VIDEO = "dashmpd"; public static final String KEY_HLS_VIDEO = "hlsvp"; private TreeMap<String, String> kvpList = new TreeMap<>(); public void retrieve(String videoId) throws IOException { String targetUrl = URL_YOUTUBE_GET_VIDEO_INFO + videoId; SimpleHttpClient client = new SimpleHttpClient(); String output = client.execute(targetUrl, SimpleHttpClient.HTTP_GET, SimpleHttpClient.DEFAULT_TIMEOUT); parse(output); } public String getInfo(String key) { return kvpList.get(key); } public void printAll() { System.out.println("TOTAL VARIABLES=" + kvpList.size()); for(Map.Entry<String, String> entry : kvpList.entrySet()) { System.out.print( "" + entry.getKey() + "="); System.out.println("" + entry.getValue() + ""); } } private void parse(String data) throws UnsupportedEncodingException { String[] splits = data.split("&"); String kvpStr = ""; if(splits.length < 1) { return; } kvpList.clear(); for(int i = 0; i < splits.length; ++i) { kvpStr = splits[i]; try { // Data is encoded multiple times kvpStr = URLDecoder.decode(kvpStr, SimpleHttpClient.ENCODING_UTF_8); kvpStr = URLDecoder.decode(kvpStr, SimpleHttpClient.ENCODING_UTF_8); String[] kvpSplits = kvpStr.split("=", 2); if(kvpSplits.length == 2) { kvpList.put(kvpSplits[0], kvpSplits[1]); } else if(kvpSplits.length == 1) { kvpList.put(kvpSplits[0], ""); } } catch (UnsupportedEncodingException ex) { throw ex; } } } public static class SimpleHttpClient { public static final String ENCODING_UTF_8 = "UTF-8"; public static final int DEFAULT_TIMEOUT = 10000; public static final String HTTP_GET = "GET"; public String execute(String urlStr, String httpMethod, int timeout) throws IOException { URL url = null; HttpURLConnection conn = null; InputStream inStream = null; OutputStream outStream = null; String response = null; try { url = new URL(urlStr); conn = (HttpURLConnection) url.openConnection(); conn.setConnectTimeout(timeout); conn.setRequestMethod(httpMethod); inStream = new BufferedInputStream(conn.getInputStream()); response = getInput(inStream); } finally { if(conn != null && conn.getErrorStream() != null) { String errorResponse = " : "; errorResponse = errorResponse + getInput(conn.getErrorStream()); response = response + errorResponse; } if (conn != null) { conn.disconnect(); } } return response; } private String getInput(InputStream in) throws IOException { StringBuilder sb = new StringBuilder(8192); byte[] b = new byte[1024]; int bytesRead = 0; while (true) { bytesRead = in.read(b); if (bytesRead < 0) { break; } String s = new String(b, 0, bytesRead, ENCODING_UTF_8); sb.append(s); } return sb.toString(); } } } 

    Voici le code de test:

     public static void main(String[] args) { String youTubeVideoID = "v1uyQZNg2vE"; YouTubeVideoInfoRetriever retriever = new YouTubeVideoInfoRetriever(); try { retriever.retrieve(youTubeVideoID); System.out.println(retriever.getInfo(YouTubeVideoInfoRetriever.KEY_DASH_VIDEO)); } catch (IOException e) { e.printStackTrace(); } } 

    J'ai eu le même problème mais j'ai finalement trouvé la solution la plus simple et fonctionne si bien

    1. D'abord, vous devez appeler cette URL … http://www.youtube.com/get_video_info?&video_id=v1uyQZNg2vE et n'oubliez pas de modifier le dernier identifiant avec le numéro cible.

    2. Maintenant, vous recevrez un avis pour télécharger un fichier appelé get_video_info sans exasion.

    3. Essayez d'ouvrir ce fichier à l'aide du bloc-notes et ainsi de suite.
    4. Maintenant, vous avez les bonnes données mais vous ne pouvez pas la lire car il est codé. Vous avez besoin d'un décodeur HTML pour reed this data, utilisez celui-ci: http://meyerweb.com/eric/tools/dencoder/

    – simplement coller vos données et appuyer sur décoder plusieurs fois pour s'assurer qu'elle soit bien décodée

    Enfin recherchez une clé appelée dashmpd et profitez de votre URL

    Vous devrez obtenir la réponse HTTP de l'URL de youtube (dans votre URL réelle, puis rechercher la section "url_encoded_fmt_stream_map"). Dans cette section, vous obtiendrez un URI qui doit être décodé deux fois pour obtenir l'URL DASH que vous recherchez.

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.