Основы потоковой передачи мультимедиа - HTTP vs RTMP

Я очень новичок в потоковой передаче мультимедиа, и у меня есть некоторые основные сомнения:

  • Насколько я понимаю, разница между потоковой передачей HTTP (скажем, через Apache) и потоковой RTMP (через Red5) заключается в том, что потоковые серверы обеспечивают буферизацию и предварительные элементы управления, такие как поиск и т.д. Я прав?

  • Можно ли передавать только флеш-видео с серверов RTMP, таких как Red5? Если мне нужно передавать различные форматы файлов, нужно ли мне тратить HTTP-потоки? Могу ли я использовать такие инструменты, как xuggler, для динамического перекодирования файлов и отправки в соответствии с запросом с сервера Red5?

Я высказываю все эти сомнения, потому что я должен предоставлять потоковое вещание всем мобильным клиентам - iPhone, Blackberry, Android - iPhone не поддерживает флеш, так что это хорошая идея для Red5?

Ответы

Ответ 1

Позвольте мне быть немного подробным для уточнения деталей.

1) Что такое "потоковая передача". Обычно в мире потоковой передачи видео является передача кадров в реальном времени. Если у вас есть 30-минутное видео, оно будет доставлено пользователю через 30 минут.

Существуют специальные протоколы, предназначенные исключительно для потоковой передачи: RTSP (возможно, древний из жизни сегодня), RTMP, MJPEG, семейство протоколов на основе http (apple, abobe, microsoft) и некоторые другие закрытые протоколы поставщиков.

2) что такое "HTTP-потоковая передача" или "псевдопоток". Если вы просто поместите свой файл на HTTP-сервер, пользователь может загрузить его и посмотреть. Если он загружает полное видео, он может даже искать в нем. Но что будет, если пользователь хочет искать середину фильма, не загружая первую часть? Он должен как-то сказать серверу: открыть контейнер файлов, искать этот момент и упаковать файл обратно. Таким образом, HTTP-сервер должен знать о структуре контейнера файлов для доставки функции поиска клиенту.

nginx и apache могут делать это для контейнеров flv и mp4, что вполне приемлемо для 100% видео, которые можно воспроизводить через Flash Player.

3) то, что в настоящее время происходит с HTTP-потоками. Apple, Adobe и Microsoft разработали и внедрили потоковое вещание поверх HTTP. Это означает, что клиент загружает 10-секундный сегмент, сохраняя при этом правильную частоту кадров. 30-минутный фильм все еще загружается через 30 минут, но между сегментами загружаются большие задержки. Можно искать в таком "формате", переключать битрейты и т.д.

4) Потоковые серверы RTMP, такие как Red5 или erlyvideo, могут передавать видео H.264, H.263, VP6 и Screen. MPEG-4 (Xvid/DivX) или MPEG-2 не поддерживается.