Потоковое видео / аудио на основе браузера (не прогрессивная загрузка) - PullRequest
5 голосов
/ 15 сентября 2009

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

Edit:

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

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

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

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

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

Ответы [ 2 ]

6 голосов
/ 10 ноября 2009

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

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

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

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

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

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

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

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

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

0 голосов
/ 20 марта 2010

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

...