Как я могу передавать видео с веб-камеры с помощью C#?
Я хочу сделать простое серверное приложение, где люди могут подключаться с помощью браузера на основе клиента (который я сделаю позже), чтобы смотреть потоковое видео. И я хочу использовать C#.
Что мне нужно для захвата видео или быстрых изображений через веб-камеру и отправки их по сети?
6 ответов:
Если вы хотите" захват/стример в коробке " компонент, есть несколько там, как другие уже упоминали.
Если вы хотите перейти к низкоуровневому контролю над всем этим, вам нужно будет использовать DirectShow, как указывает thealliedhacker. Лучший способ использовать DirectShow в C# - это через DirectShow.Net Библиотека-она обертывает все API DirectShow COM и включает в себя множество полезных функций быстрого доступа для вас.
В дополнение к фиксации и потоковая передача, вы также можете сделать запись, аудио и видео преобразования форматов, аудио и видео живые фильтры, и многое другое.
Microsoft утверждает, что DirectShow уходит, но им еще предстоит выпустить новую библиотеку или API, которая делает все, что предоставляет DirectShow. Я подозреваю, что многие из последних вещей, которые они выпустили, все еще находятся под капотом DirectShow. Из-за его статуса в Microsoft на нем не так много книг или ссылок, кроме MSDN и того, что вы можете найти на форумах. В прошлом году, когда мы начали проект, используя его, лучшая книга на эту тему - Программирование Microsoft DirectShow - был из печати и собирается около $ 350 за использованную копию!
обычный API для этого является DirectShow.
вы можете использовать P/Invoke для импорта API C++, но я думаю, что уже есть несколько проектов, которые сделали это.
http://channel9.msdn.com/forums/TechOff/93476-Programatically-Using-A-Webcam-In-C/
http://www.codeproject.com/KB/directx/DirXVidStrm.aspx
чтобы получить потоковую часть, вы, вероятно, хотите использовать DirectShow для применения сжатия кодек для уменьшения задержки, то вы можете получить поток и передать его. Вы можете рассмотреть возможность использования многоадресной рассылки для снижения сетевой нагрузки.
вы могли бы просто использовать новая версия. VideoLAN будет работать как сервер (или вы можете обернуть свое собственное приложение C# вокруг него для большего контроля). Существуют также оболочки .NET для просмотра, которые можно использовать и, таким образом, внедрить в клиент C#.
Я использовал VideoCapX для нашего проекта. Он будет транслироваться как поток MMS/ASF, который может быть открыт медиаплеером. Затем вы можете встроить медиаплеер в свою веб-страницу.
Если вам не нужно много контроля, или если вы хотите попробовать VideoCapX без написания кода, попробовать U-Broadcast, они используют VideoCapX за сценой.
Если вы хотите записывать видео из веб-браузера, я думаю, что ваш единственный вариант-Flash. Мы хотим сделать то же самое. Мы также в первую очередь дом .NET, и я не вижу способа использовать .NET для захвата веб-камеры _from_within_the_browser_. Все другие решения, упомянутые здесь, вероятно, будут отлично работать, если вы с удовольствием согласитесь на настольное приложение
другой вариант для потоковой передачи изображений с веб-камеры в браузер через mjpeg. Это всего лишь серия изображений jpeg, которые большинство современных браузеров поддерживают как часть тега. Вот пример сервера, написанного на C#:
https://www.codeproject.com/articles/371955/motion-jpeg-streaming-server
Это хорошо работает по локальной сети, но не так хорошо через интернет, как mjpeg не так эффективен, как другие видеокодеки (h264, VP8 и т. д..)
Comments