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

StackOverflow https://stackoverflow.com/questions/1424946

Вопрос

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

Редактировать:

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

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

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

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

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

Это было полезно?

Решение

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

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

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

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

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

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

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

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

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

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top