Мне было интересно, возможно ли создать клиент (или веб-клиент), который может подключить двух пользователей, а затем отправляет их поток с веб-камеры друг другу. Это должно произойти без использования Red5 или любого другого сервера flash/media. Какой протокол я могу использовать? Какой апи и тд...
Потоковая передача с веб-камеры в одноранговой сети
Ответы (4)
В качестве очень простого метода посмотрите учебники по UDP:
http://msdn.microsoft.com/en-us/library/system.net.sockets.udpclient.aspx
Если UDP окажется слишком ненадежным (он не гарантирует, что данные прибудут туда, куда они отправляются), вы также можете попробовать TCP-соединения.
Однако одна из самых больших проблем, с которой вы столкнетесь, — это попытка пройти через NAT. Большинство брандмауэров будут блокировать входящие данные, если перед этим не будет установлено установленное соединение. Вы можете использовать UPnP, чтобы обойти это, но это, вероятно, потребует немного кода:
http://www.codeproject.com/KB/IP/upnpnattraversal.aspx
Надеюсь это поможет. С UDP вы смотрите примерно на 10 строк кода для отправки и получения данных, с TCP это немного больше, но надежнее. Google оба из них для получения дополнительной информации.
Оттуда это довольно просто. Вы получаете данные с веб-камеры. Сохраните его в MemoryStream (System.IO) как .jpg. Затем отправьте эти данные через TCP или UDP.
Скорее всего, вы захотите использовать TCP или UDP напрямую и отправлять/получать необработанные байты. Любые протоколы более высокого уровня будут просто ненужными накладными расходами.
Я хочу добавить одну вещь: чтобы два клиента, оба за своими брандмауэрами, общались друг с другом с помощью UDP, вам нужно выполнить обход NAT. Так работает Скайп.
Adobe Stratus позволит вам это сделать.