Основы потокового мультимедиа - HTTP против RTMP - PullRequest
13 голосов
/ 30 апреля 2011

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

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

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

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

1 Ответ

21 голосов
/ 03 июня 2011

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

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

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

2) что такое "http-streaming" или "pseudo-streaming".Если вы просто поместите свой файл на 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 не поддерживаются.

...