Как я могу транслировать видео с веб-камеры с помощью C #?
Я хочу создать простое серверное приложение, в котором люди могут подключаться с помощью клиентского браузера (который я сделаю позже) для просмотра streamового видео. И я хочу использовать C #.
Что мне нужно для захвата видео или быстрых изображений через веб-камеру и отправки их по сети?
- Использование VideoView для streamовой или прогрессивной загрузки видео
- Видео HTML5 не работает в IE 11
- Возможно ли воспроизводить streamи интернет-радиосигналов shoutcast с помощью html5?
- Отображение изображения Qt jpg
- Попытка понять CMTime и CMTimeMake
- Видео YouTube не воспроизводится в WebView
- Потоковое видео и Android
- Потоковое видео в Java
- Ошибка Android MediaPlayer (1, -2147483648)
- FFmpeg преобразование последовательности изображений в видео приводит к пустому видео
- Считать количество кадров ffmpeg
- Потоковое видео с Android-камеры на сервер
- Видео YouTube не воспроизводится в WebView - Android
Если вам нужен компонент «захват / стример в коробке», есть несколько других, как упомянули другие.
Если вы хотите перейти к управлению низким уровнем над всем этим, вам нужно будет использовать DirectShow, как указывает thealliedhacker. Лучший способ использовать DirectShow в C # – через библиотеку DirectShow.Net – он обертывает все API-интерфейсы DirectShow COM и включает в себя множество полезных функций быстрого доступа для вас.
В дополнение к захвату и streamовой передаче вы также можете делать конверсии в форматах записи, аудио и видео, аудио и видео в реальном времени и многое другое.
Microsoft утверждает, что DirectShow уходит, но они еще не выпустили новую библиотеку или API, которые делают все, что предоставляет DirectShow. Я подозреваю, что многие из последних вещей, которые они выпустили, по-прежнему являются DirectShow под капотом. Из-за своего статуса в Microsoft на нем не так много книг или ссылок, кроме MSDN, и что вы можете найти на форумах. В прошлом году, когда мы начали использовать проект, лучшая книга на эту тему – « Программирование Microsoft DirectShow» – была напечатана и стоила около 350 долларов за использованную копию!
Обычный API для этого – DirectShow.
Вы можете использовать P / Invoke для импорта C ++ API, но я думаю, что есть уже несколько проектов, которые сделали это.
http://channel9.msdn.com/forums/TechOff/93476-Programatically-Using-A-Webcam-In-C/
http://www.codeproject.com/KB/directx/DirXVidStrm.aspx
Для получения streamовой части вы, вероятно, захотите использовать DirectShow для применения кодека сжатия для уменьшения запаздывания, тогда вы можете получить Stream и передать его. Вы можете рассмотреть возможность использования многоадресной рассылки для снижения сетевой нагрузки.
Вы можете просто использовать VideoLAN . VideoLAN будет работать как сервер (или вы можете обернуть свое собственное приложение C # вокруг него для большего контроля). Существуют также .NET-оболочки для зрителя, которые вы можете использовать и тем самым внедрять в свой клиент C #.
Я использовал VideoCapX для нашего проекта. Он будет транслироваться как stream MMS / ASF, который может быть открыт медиаплеером. Затем вы можете вставлять медиаплеер на свою веб-страницу.
Если вам не понадобится много контроля или если вы хотите попробовать VideoCapX без написания кода, попробуйте U-Broadcast , они используют VideoCapX за сценой.
Если вы хотите записывать видео из веб-браузера, я думаю, что ваш единственный вариант – Flash. Мы ищем то же самое. Мы также в основном являемся .NET-house, и я не вижу способа использовать .NET для захвата веб-камеры _from_within_the_browser_. Все другие решения, упомянутые здесь, вероятно, будут работать отлично, если вы с удовольствием соглашаетесь на настольное приложение
Другой вариант для streamовой передачи изображений с веб-камеры в браузер – через mjpeg. Это всего лишь серия jpeg-изображений, которые большинство современных браузеров поддерживают как часть тега. Вот пример сервера, написанного на c #:
https://www.codeproject.com/articles/371955/motion-jpeg-streaming-server
Это хорошо работает по локальной сети, но не по интернету, поскольку mjpeg не так эффективен, как другие видеокодеки (h264, VP8 и т. Д.).