Захват веб-камеры / микрофона Flash с помощью медиа-сервера с открытым исходным кодом

Для захвата видео из Flash требуется медиа-сервер, но, похоже, ни один из них не имеет доступной документации (даже документации API или других комментариев к исходному коду). Я бы предпочел crtmpserver, потому что мое приложение написано на C ++ и ему необходимо получать и обрабатывать захваченные данные в реальном времени. Однако Red5 явно намного более зрелый и более известный проект, поэтому я тоже считаю это возможным. Adobe FMS слишком дорого стоит, и его может быть сложно интегрировать с моим приложением, поскольку Adobe никогда не упоминает такой вариант использования.

Насколько я могу судить, нужно написать «приложение» для медиа-сервера (они не поставляются с чем-либо пригодным для использования), и оно затем должно будет пересылать данные для фактической обработки. Какие данные может ожидать приложение от медиасервера, будет ли это простой поток FLV или есть что-то еще (согласование пропускной способности и т. Д.)?

Кодирование стороны Flash не является проблемой, для этого есть множество примеров (даже если они не говорят, как должен быть построен URL-адрес медиа-сервера).

Актуальный вопрос: как работает серверная часть (представление высокого уровня) и есть ли что-нибудь, чтобы начать работу с функцией записи в реальном времени?


person Tronic    schedule 15.12.2010    source источник


Ответы (4)


Пару лет назад я работал над проектом электронного обучения, который позволял студентам записывать ответ (только аудио в моем случае), а профессор мог слушать его и ставить оценку студенту.

Мы рассматривали Adobe FMS, Wowza Media Server (http://www.wowzamedia.com) и Red5. В конце концов, был выбран Red5, потому что это были единственные бесплатные варианты с открытым исходным кодом, которые были достаточно стабильны для использования в этом проекте, даже несмотря на недостаток документации.

Как это работало, я закончил тем, что изменил один из упакованных примеров в соответствии со своими потребностями, и сервер работал на Mac OS 10.4? Red5 в основном захватил аудиопоток и сохранил файл в каталоге на машине. Затем мне пришлось обновить базу данных, чтобы указать на аудиофайл, чтобы профессор мог его воспроизвести. Обратите внимание, я не делал никаких изменений в реальном времени или ретрансляции потока; в случае, если это входит в объем вашего проекта.

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

person nedk    schedule 04.01.2011
comment
Сохранение в файл полностью подходит для моих нужд, потому что это должно работать в реальном времени. Однако, если бы я мог заставить даже это работать, я, вероятно, мог бы сам решить остальное (скорее всего, мне нужно написать какой-нибудь JNI для Red5, чтобы общаться с моим приложением). Не могли бы вы подробнее рассказать, как вы это настроили? - person Tronic; 08.01.2011
comment
Я бы порекомендовал эти отличные ресурсы Денни Хупингарнера из МГУ: fms.denniehoopingarner.com и fms.denniehoopingarner.com/FMS_solutions.pdf - person nedk; 08.01.2011
comment
Мое решение следовало инструкциям Денни и многое позаимствовало у oflaDemo, поставляемого с Red5. Одна вещь, которую я помню, для меня было трудным (в основном из-за того, что я был новичком в серверах), - это убедиться, что правильные права записи предоставлены streams папке, в которой были сохранены записанные файлы. - person nedk; 08.01.2011

Вы можете посмотреть, подходит ли haxevideo для вашей разработки.

person TheHippo    schedule 15.12.2010
comment
Извините, но меня действительно не интересует экспериментальный сервер, написанный на малоизвестном языке программирования. Это был бы кошмар обслуживания :) - person Tronic; 15.12.2010

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

Однако, если вы пытаетесь захватить и опубликовать потоковое видео с флэш-памяти, помимо потоков с веб-камеры, AFAIK нет отличного способа сделать это.

Для публикации потоков с веб-камеры в реальном времени и другого базового взаимодействия вы можете воспользоваться Служба совместной работы Adobe LiveCycle (кодовое имя Cocomo).

person Jeremy Ruppel    schedule 03.01.2011

Сейчас мы используем crtmpserver. Несколько примечаний: Flash необходимо подключиться к rtmp: // server: 1935 / appname (где appname - это приложение, которое нужно использовать - они настраиваются на стороне сервера). Даже если в URL-адресе есть несколько частей (разделенных косой чертой), вся комбинация считается именем приложения (даже если для воспроизведения есть исключение, позволяющее поместить туда имя файла flv).

Запись происходит путем подключения к приложению «flvplayback» и последующей публикации по «somename» (с «записью» или «добавлением»), заставляя сервер записывать (относительно CWD) приложения / flvplayback / mediaFolder / somename.flv

Вы не можете изменить имя приложения, но может выглядеть лучше, если использовать один из псевдонимов flvplayback в URL-адресе (это не влияет на папку, в которой находятся файлы). Один из псевдонимов по умолчанию - «live», поэтому вы можете использовать «rtmp: // server: 1935 / live» в качестве URL-адреса.

person Tronic    schedule 03.03.2011