После прочтения заметки в блоге Кори Шумана о возможности проигрывать youtube видео в Silverlight, я решил самостоятельно попробовать сделать это.
Вот скриншот Asteroid Impact, который проигрывается в Silverlight 3 Video Player c галереи кода MSDN, используя Youtube поток.

Как же я получил URL видео потока?
Сразу оговорюсь, я пытался получить URL на стороне клиента, но политика доступа Youtube запрещает это сделать. Тогда я поступил иначе, я создал WCF севис, который возвращает требуемый нам URL.
Хотелось бы заметить, что пункт 4.С. в условиях соглашения youtube запрещает, получения видео-контента таким образом, это всего лишь эксперимент.
Вот скриншот Asteroid Impact, который проигрывается в Silverlight 3 Video Player c галереи кода MSDN, используя Youtube поток.

Как же я получил URL видео потока?
Сразу оговорюсь, я пытался получить URL на стороне клиента, но политика доступа Youtube запрещает это сделать. Тогда я поступил иначе, я создал WCF севис, который возвращает требуемый нам URL.
- Делаем HttpWebRequest к "www.youtube.com/get_video_info?video_id= " + videoID
- Считываем ответ и парсим. Вернувшийся ответ будет строкой и выглядеть как запрос.
- Нужные кусочки ответа, которые нам нужно парсить — "token" и "fmt_map"
- Значение
"fmt_map" примерно будет выглядеть, как "18/640000/9/0/115". Первое число 18 или 22 означает, что h.264 поток доступен, существуют и другие значения, но мы их опустим. Если первое число 6, то проиграть поток не удастся, так как он является flash типом, который Silverlight не поддерживает.
- Делаем второй HttpWebRequest к "www.youtube.com/get_video.php?video_id= " + videoID + "&t=" + token + "&fmt=" + fmt(должен быть 18 или 22, в зависимости какой доступен)
- В заголовке ответа, в ключе "Location" будет URL видео потока
Хотелось бы заметить, что пункт 4.С. в условиях соглашения youtube запрещает, получения видео-контента таким образом, это всего лишь эксперимент.