Воспроизведение видео на YouTube с помощью ExoPlayer

Я заинтересован в использовании воспроизведения ExoPlayer для воспроизведения на YouTube. Из примеров ExoPlayer я вижу, что они воспроизводят видео YouTube через URL-адреса DASH.

Я использую API YouTube YouTube для поиска видео и не вижу средств для получения URL-адреса DASH для любого из результатов поиска. Кто-нибудь знает какие-либо образцы для интеграции API YouTube (v3) с ExoPlayer (без использования жестко настроенных видеороликов) или знаете способ получения необходимой информации из API YouTube для загрузки видео в ExoPlayer?

Solutions Collecting From Web of "Воспроизведение видео на YouTube с помощью ExoPlayer"

Для получения URL-адреса DASH вам необходимо загрузить файл: http://www.youtube.com/get_video_info?&video_id= «+ videoId (образец« BU2zodCxwwo »). Разберите файл, получите« dashmpd »и используйте его.

Запустите url dashmpd , сначала введите url.

Пример (dashmpd = http://manifest.googlevideo.com/api/manifest/dash/fexp/3300133%2C3300164%2C3312381%2C9416126%2C9418044%2C9418777%2C9419452%2C9420096%2C9420452%2C9422596%2C9423291%2C9423455%2C9423661%2C9423662% 2C9426963% 2C9427247% 2C9427888% 2C9428559% 2C9428564% 2C9429237% 2C9429515 / мм / 31 / источник / YouTube / истекают / 1456756908 / ITAG / 0 / UPN / 5xR9ZCMatkY / мин / SN-ov8vuxaxjvh-v8ce / ключ / yt6 / ipbits / 0 / HFR / 1 / ID / о-AIiY1RGtClDFVTCNTuhp8pRSGDPgiBHby0Il52tFnHix / sparams / в% 2Chfr% 2Cid% 2Cip% 2Cipbits% 2Citag% 2Cmm% 2Cmn% 2Cms% 2Cmv% 2Cpl% 2Cplayback_host% 2Csource% 2Cexpire / SVER / 3 / пл / 16 / с / 3640F01A917CDAD260DD0BB27CE627BB9A113ED1.3CEF418955ADD2F9C2048C289AD8D0E1FB6D5F034034 / мс / Au / мв / м / playback_host / г1 — sn-ov8vuxaxjvh-v8ce.googlevideo.com/mt/1456735204/as/fmp4_audio_clear%2Cwebm_audio_clear%2Cfmp4_sd_hd_clear%2Cwebm_sd_hd_clear%2Cwebm2_sd_hd_clear/ip/37.193.113.79 )

Этот URL-адрес для файла XML, где содержится информация о видео. Этот URL немного живет, а не все видео содержат формат fmp4. Если вы используете старый URL или видео, которые не содержат формат fmp4, вы принимаете ошибку 403 (у вашего клиента нет разрешения на получение URL-адреса). Решение этой проблемы я не нашел.

public static Observable<String> downloadSound(String youtubeUrl, final String baseDir) { return DownloadManager.downloadFile("http://www.youtube.com/get_video_info?&video_id=" + youtubeUrl, baseDir + File.separator + FILEYOUTUBE, new DownloadManager.IDownloadProgress() { @Override public void onProgress(long current, long max) { } }) .subscribeOn(Schedulers.newThread()) .observeOn(AndroidSchedulers.mainThread()) .map(new Func1<File, String>() { @Override public String call(File youtubeFile) { String dashmpd = null; BufferedReader br = null; try { br = new BufferedReader(new FileReader(youtubeFile.toString())); } catch (FileNotFoundException e) { e.printStackTrace(); } try { StringBuilder sb = new StringBuilder(); String line = br.readLine(); while (line != null) { sb.append(line); line = br.readLine(); } String everything = sb.toString(); Log.d("TAG", everything); dashmpd = getQueryParams(everything); } catch (IOException e) { e.printStackTrace(); } finally { try { br.close(); } catch (IOException e) { e.printStackTrace(); } } return dashmpd; } }); } public static String getQueryParams(String url) { String dashUrl1 = url.substring(url.lastIndexOf("dashmpd")); String dashUrl2 = dashUrl1.substring(dashUrl1.lastIndexOf("dashmpd"), dashUrl1.indexOf("&")); String dashUrl = null; try { dashUrl = URLDecoder.decode(dashUrl2.substring(dashUrl2.indexOf("http")), "UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return dashUrl; }