Para todos los demás deja de ser curioso el problema a superar es conseguir un enlace directo al vídeo, que requiere un pequeño truco, pero es muy fiable y fácil que hacer. Primero necesitas la identificación del video para que puedas obtener la url de youtube para la que puedes usar la API de youtube. Entonces haz algo como esto. Casi convertí un usuario a Silverlight.
WebClient client = new WebClient();
string url = "http://www.youtube.com/watch?v=HLQqOpILDcI";
client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(ClientDownloadStringCompleted);
client.DownloadStringAsync(new Uri(url, UriKind.Absolute));
el siguiente bit se ve mal.
private void ClientDownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
rx = new Regex("(?<=url_encoded_fmt_stream_map=)([^(\\\\)]*)(?=\\\\)", RegexOptions.IgnoreCase);
match = rx.Matches(flashvars);
string video_format = match[0].ToString();
string sep1="%2C";
string sep2="%26";
string sep3="%3D";
string link = "";
string[] videoFormatsGroup = Regex.Split(video_format, sep1);
for (var i=0;i<videoFormatsGroup.Length;i++){
string[] videoFormatsElem = Regex.Split(videoFormatsGroup[i], sep2);
if (videoFormatsElem.Length<5) continue;
string[] partialResult1 = Regex.Split(videoFormatsElem[0], sep3);
if (partialResult1.Length<2) continue;
string url = partialResult1[1];
url = HttpUtility.UrlDecode(HttpUtility.UrlDecode(url));
string[] partialResult2 = Regex.Split(videoFormatsElem[4], sep3);
if (partialResult2.Length<2) continue;
int itag = Convert.ToInt32(partialResult2[1]);
if (itag == 18){
link = url;
}
}
}
el == itag último bit 18 Selecciona la calidad de acuerdo con este
{'5':'FLV 240p','18':'MP4 360p','22':'MP4 720p (HD)','34':'FLV 360p','35':'FLV 480p','37':'MP4 1080p (HD)','38':'MP4 4K (HD)','43':'WebM 360p','44':'WebM 480p','45':'WebM 720p (HD)','46':'WebM 1080p (HD)'};
ahora usted puede hacer lo que quiera con el enlace tal que abierto con mediaplayerlauncher o MediaElement. Personalmente, me encantaría descargarlo en un almacenamiento aislado y reproducirlo al mismo tiempo, pero por el momento parece más fácil decirlo que hacerlo. gracias por tu tiempo, perdón por la larga publicación.
Hmm, así que supongo que la pregunta cambia, ¿hay algún método permitido para obtener acceso al enlace directo del video con la API oficial de youtube? o es que generalmente no está permitido? –
No hay un método API oficial para descargar el video. Hay soluciones y "hacks", pero no están generalizados y no están bien documentados. –
Ok, gracias ... esto me ayuda a establecer instrucciones y expectativas para mi aplicación :-) –