Потоковое видео / аудио на основе браузера (без прогрессивной загрузки)

Я пытаюсь концептуально понять лучший способ доставки реального потокового аудио и видео контента. Я бы хотел, чтобы он использовался с веб-браузером, используя наименьшее количество проприетарных технологий. Я бы не стал обслуживать статические файлы и использовать прогрессивную загрузку, это были бы реальные аудиопотоки, записываемые вживую. Как транслировать поток, который будет разумно синхронизирован с источником? Какой протокол подходит?

Изменить:

В ходе исследования я обнаружил, что существует несколько протоколов: RTSP, HTTP Streaming, RTMP и RTP.

Потоковая передача HTTP в какой-то мере не подходит, если вы транслируете какое-либо выступление / общение в реальном времени, потому что она полагается на TCP (как его основанный на HTTP), и вы не теряете пакеты. В ситуации с низкой пропускной способностью клиент может значительно отставать в воспроизведении. ref

RTMP - это запатентованная технология, требующая сервера флэш-памяти. Вот дерьмо. Я обратил внимание на флеш-память потому, что она чрезвычайно гибкая с точки зрения пользовательского опыта. SoundManager2 предоставляет отличный интерфейс javascript для воспроизведения мультимедиа с флэш-памятью. Это то, что я ищу в клиентском приложении.

RTSP / RTP - это то, что Microsoft перешла на использование, отказавшись от своего протокола MMS. RTSP - это протокол управления. Это похоже на HTTP с некоторыми отличиями - сервер также может разговаривать с клиентом, и есть дополнительные команды, такие как PAUSE. Это также протокол с отслеживанием состояния, который поддерживается с помощью идентификатора сеанса. RTP - это протокол для доставки полезной нагрузки (закодированного аудио или видео). Есть несколько проектов с открытым исходным кодом, один из которых поддерживается Apple здесь. Похоже, это может делать то, что я хочу, и похоже, что это поддерживает довольно много игроков.. Похоже, он подходит для "прямой трансляции" с этой страницы, здесь.

Спасибо, Джош


person Josh    schedule 15.09.2009    source источник


Ответы (2)


Во-первых, позвольте мне быстро скинуть два неверных пункта. Подробности приведены ниже:

  • RTMP может выполняться на других серверах, кроме Flash Media Server.
  • ПТС в прямом эфире нормально. Слишком много F.U.D. от людей, любящих UDP. Apple только что выпустила проект спецификации простой потоковой передачи в реальном времени. через HTTP (и, следовательно, TCP) для iPhone. Я ожидаю, что он попадет и в браузеры. Кроме того, TCP имеет преимущество более частого и легкого прохождения корпоративных брандмауэров.

Я считаю, что сложная потоковая передача на основе UDP постепенно сокращается. Я не предсказываю смерть, просто все меньшую и меньшую долю рынка. Серверы потоковой передачи на основе UDP потребляют огромные ресурсы по сравнению с решениями на основе TCP (например, в 10 раз или больше), и преимущества просто не так ощутимы.

Вы говорите, что вам не нужны проприетарные технологии и "лажа на [Flash]", но вы все равно хотите использовать настоящую потоковую передачу? Ненавижу раскрывать это вам, но как RealAudio, так и RealVideo являются частными.

Если переход на открытый исходный код действительно так важен для вас, что я понимаю, вам нужно игнорировать подавляющее большинство рынка потокового мультимедиа. Посмотри на

  • Theora: бесплатная, открытая стандартная технология сжатия видео с потерями.
  • Vorbis: бесплатное программное обеспечение / проект с открытым исходным кодом, который создает формат аудио. спецификация и программная реализация для сжатия звука с потерями.
  • Ogg: бесплатный формат контейнера открытого стандарта.

Если прагматизм берет верх, пересмотрите свое отвращение к продуктам Adobe. Помните, что Flash распространяется более широко, чем любой другой браузер на основе проигрывателя (а именно Windows Media Player, Quick Time и Real Players).

Вы по-прежнему можете использовать RTMP с открытым исходным кодом: Red5, вероятно, представляет наибольший интерес - он может транслировать в прямом эфире в браузеры с поддержкой Flash .

Я бы порекомендовал подумать о своих приоритетах. Расскажите нам о них в своем вопросе.

person Stu Thompson    schedule 10.11.2009

Я бы добавил к ответу Стю, что протоколы потоковой передачи на основе UDP часто имеют дополнительную сложность для работы, когда они находятся за брандмауэрами или NAT. Например, если вы планируете использовать точки доступа WIFI вне дома, многие из них не будут поддерживать RTP с использованием доставки UDP. Многие клиенты имеют механизм восстановления после сбоя, при котором, если до истечения тайм-аута не было получено ни одного пакета, клиент попытается доставить TCP.

person J. Fritz Barnes    schedule 20.03.2010