| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Мультимедия, OpenGL/DirectX > Видео с юсб камеры |
| Автор: rain87 25.3.2008, 23:38 |
| есть юсб камера. требуется прога, которая будет высылать видеопоток на какой-то сервер в инете, который будет показывать его live (ну, фактически ретранслировать всем подключившимся клиентам. короче неважно) начал работать с WIA API. нахожу камеру, спокойно могу смотреть её на локальном компе или делать отдельные скрины (с помошью IWiaVideo) но не могу понять, как мне получить от неё видеопоток в таком виде, в котором её, к примеру, сможет просмотреть media player classic (если им открыть камеру как устройство то он её вполне показывает) пока что единственное что нашёл в мсдн на эту тему это IWiaDataTransfer, но сэмпл в мсдн показывает как с его помощью получается один кусок (снимок), а не поток видео в общем, может кто помочь? если уже делал нечто подобное. или подскажите какой то другой способ. язык программирования неважен, пишу тут потому что не придумал где ещё написать :( |
| Автор: Яхонт 14.4.2008, 22:42 |
| Привет, товарисч по несчастью! Я над этой темой бьюсь уже месяцев восемь. Есть много решений. Вот парочка: 1) легкое (и быстрое): юзаешь Windows Media Encoder SDK. Для этого достаточно набора dll-к, а весь код может быть написан на C#. Все делается буквально в одну строчку: и захват, и вещание, установка качества передачи и т д и т п. Документация по Windows Media Encoder SDK есть в MSDN. Недостаток в том, что отсутствует гибкость - ты будешь работать лишь в рамках этих dll-к. К тому же, как я выяснил, в них есть глюки, которые могут свести на нет все твои старания. 2) трудное Самое гибкое и кардинальное решение - по сути создание нового Skype или Windows Messenger. Проектируешь систему в под DirectShow. Строишь граф захвата видео с веб-камеры, пишешь ком-сервера: фильтр, отправляющий данные по сети, и фильтр, принимающий данные из сети. Это на основе сокетов, например. Весь механизм передачи данных, есесно пишешь с нуля. По сети передаешь все форматы и команды синхронизации, а главное - сэмплы. Чтоб плеер мог принять видео, надо обговорить форматы, хотя, в данном случае проще написать свой собственный плеер. В Direct Show для этого уже есть готовые ком-сервера, которые уже практически являются плеерами. Между фитльтром, представляющим драйвер веб-камеры и фильтром-отправителем нужен фильтр-кодировщик, а на другой стороне - соответствинно декодер. Но это задача на долгие месяцы (а может и годы). 3) Ну еще можешь воспользоваться библиотеками Window Media Format (это даже труднее, чем под DirectShow), но суть одна: захват - кодирование - передача по сэмплам - прием сэмплов - раскодирование - воспрооизведение. Судя по всему, тебе придется все это реализовывать вручную. |