Search
Write a publication
Pull to refresh

Проигрывание Youtube HD в Silverlight

Reading time1 min
Views1.1K
Original author: Danny Park
После прочтения заметки в блоге Кори Шумана о возможности проигрывать youtube видео в Silverlight, я решил самостоятельно попробовать сделать это.

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

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

Хотелось бы заметить, что пункт 4.С. в условиях соглашения youtube запрещает, получения видео-контента таким образом, это всего лишь эксперимент.
Tags:
Hubs:
Total votes 56: ↑29 and ↓27+2
Comments14

Articles