HD-видео YouTube, передающее технологию сервера потоком?

В последнее время я исследовал различные методы для потоковой передачи MP4s к браузеру. Медиасервер Flash является очевидным выбором здесь (использующий Cloudfront), и большинство решений, которые я видел, использует протокол RTMP.

Однако я провел некоторое время на YouTube с Firebug и отладчиком Chrome, выясняющим, как их потоковая передача работала, и я обнаружил некоторые интересные различия между некоторыми их видео и качественные уровни.

Мои два демонстрационных видео являются A и B. A составляет доступных до 480 пунктов, и B составляет доступных до 1 080 пунктов. Для обоих видео все уровни до 480 пунктов подаются в контейнере FLV с видео H.264 и аудио AAC по HTTP. Что интересно, вот то, что, если Вы еще не загрузили (кэшировал) все видео, и Вы пытаетесь пропустить вперед к некэшируемой части видео, новый запрос будет выполнен с 'начать' параметром, равным целевому смещению в миллисекундах. Пример от Видео в 480 пунктах:

http://v11.lscache8.c.youtube.com/videoplayback?ip=0.0.0.0&sparams=id%2Cexpire%2Cip%2Cipbits%2Citag%2Calgorithm%2Cburst%2Cfactor%2Coc%3AU0dWTldQVF9FSkNNNl9PSlhJ&fexp=904806%2C902906%2C903711&algorithm=throttle-factor&itag=35&ipbits=0&burst=40&sver=3&expire=1279756800&key=yt1&signature=D2D704D63C242CF187CAA5B5D5BAFB8DFACAC5FF.39180C01559C976717B651A7EB1D0C6249231EB7&factor=1.25&id=8568eb3135971f6f&begin=111863

Response Headers:
Cache-Control:public,max-age=23472
Connection:close
Content-Length:14320637
Content-Type:video/x-flv
Date:Wed, 21 Jul 2010 17:23:48 GMT
Expires:Wed, 21 Jul 2010 23:55:00 GMT
Last-Modified:Wed, 19 May 2010 12:31:41 GMT
Server:gvs 1.0
X-Content-Type-Options:nosniff

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

Я сделал тот же вид теста на более высоких версиях разрешения Видео B. В 720 пунктах и 1 080 пунктах, YouTube возвратит видео в контейнере MP4, также с видео H.264 и аудио AAC. То, что является впечатляющим мне, - то, что их сервер берет тот же тип смещения для видео MP4 (через 'начать' параметр) и возвращает допустимое, streamable MP4 (moov атом впереди файла с корректными смещениями), который также только включает требуемую часть видео.

Так, как YouTube делает это? Как они генерируют FLV или контейнер MP4 на лету с корректными заголовками и только желаемым сегментом требуемого видео? Я знаю, что это может быть выполнено с помощью FFMPEG, чтобы стремиться на желаемую стартовую точку и спокойный-faststart сценарий изменить местоположение moov атома к передней стороне потока, но кажется, что это также не спешило бы обрабатывать по запросу для миллионов средств просмотра YouTube.

Идеи?

Заранее спасибо!

Сноска: Мне не разрешают включать больше чем 1 ссылку в эту точку, таким образом, вот URL Видео A: http:// www.youtube .com/watch? v=hWjrMTWXH28 "Видео доступных до 480 пунктов"

13
задан bgentry 21 July 2010 в 18:22
поделиться