YouTube на Windows Phone с помощью MediaElement - PullRequest
6 голосов
/ 25 ноября 2010

В этом блоге предполагается, что можно было бы воспроизводить видео на YouTube с помощью Silverlight MediaEelement напрямую.

<MediaElement HorizontalAlignment="Left"
VerticalAlignment="Top"
Source="http://www.youtube.com/get_video?
video_id=8yuIw_0ejLs&t=vjVQa1PpcFPrX3tFoahhu4DbniDIqTLkwybdm8xuCt8%3D&fmt=22"/>

Мне было интересно, верно ли это для Windows Phone 7. У меня есть приложение, основанное на воспроизведении видео, размещенное на YouTube, и было бы неплохо иметь возможность лучше контролировать работу с видео, помимо простого запуска. браузер с URL-адресом видео YouTube.

Ответы [ 4 ]

4 голосов
/ 20 июня 2012

Для всех остальных, кто все еще интересуется проблемой, которую нужно решить, это получение прямой ссылки на видео, которое требует небольшого взлома, но это очень надежно и легко сделать. Во-первых, вам нужен идентификатор видео, чтобы вы могли получить URL-адрес YouTube, для которого вы можете использовать API YouTube. Тогда сделай что-нибудь подобное. Я в значительной степени преобразовал пользовательский скрипт в 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));

следующий бит выглядит плохо.

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

последний бит itag == 18 выбирает качество в соответствии с этим

    {'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)'};

теперь вы можете делать все, что захотите, с помощью ссылки, например, открыть ее с помощью mediaplayerlauncher или mediaelement. лично я хотел бы загрузить его в изолированное хранилище и одновременно играть в него, но в данный момент это кажется легче сказать, чем сделать. спасибо за ваше время извините за длинный пост.

4 голосов
/ 09 февраля 2011

Цитирование из Часто задаваемых вопросов для разработчиков Windows Phone

Как я могу воспроизводить видео на YouTube в своем приложении?

Используйте WebBrowserTask и откройте целевой URL в браузере; Если приложение YouTube установлено, оно будет воспроизводиться, если не установлено, оно предложит пользователю установить и затем воспроизвести.

4 голосов
/ 25 ноября 2010

Если у вас нет прямой ссылки на видеоконтент, вы не можете отображать видео YouTube на Windows Phone 7. Насколько мне известно, get_video больше не доступен для публичного доступа.

0 голосов
/ 18 ноября 2011

Я уверен, что вы можете настроить его для Windows Phone http://www.codeproject.com/KB/WPF/YouViewer.aspx

...