захватить видео с экрана для потока - PullRequest
0 голосов
/ 31 октября 2011

Я ищу разные решения для захвата видеопотока с экрана монитора и отправки его на сервер видеопотока для трансляции в Интернете.это должно происходить в «живом».

Я бы не хотел использовать внешние сервисы, такие как «procaster» для широкого доступа.

ОС: Windows.

Было бы здорово узнать, какие идеи и опыт нужны людям для достижения этой цели.

Спасибо всем.

Ответы [ 2 ]

2 голосов
/ 14 ноября 2016

В последнее время я создаю проект GoLang под названием ScreenStreamer , представляющий собой инструмент для потоковой передачи текущего активного окна или полноэкранного режима (Linux или Windows) на другое устройство, например телефон или другой компьютер, например MJPEG через http или FLV через RTMP, это очень в реальном времени (задержка <100 мс). Работает на Windows и Linux. </p>

После сборки вы можете запустить его как:

# enter the project root directory
cd ./src/ScreenStreamer
# run it
./mjpeg or .\mjpeg.exe
# use a web browser or other video player, open http://host:port/mjpeg

./rtmp or .\rtmp.exe
# use a video player, open rtmp://host:port/live/screen

Скриншот:

2 голосов
/ 31 октября 2011

Windows SDK включает Образец Push Source Filters , который, в свою очередь, содержит CPushSourceDesktop фильтр / класс.

CPushSourceDesktop: копия текущего изображения рабочего стола (только GDI)

Захватывает изображение рабочего стола и помещает его в конвейер DirectShow.Оттуда вы можете обрабатывать его с помощью кодека сжатия видео и передавать его в удаленное место.Приличный кодек сжатия изображения экрана включен в подсистему Windows Media, потоковая передача по сети должна быть пользовательским или сторонним компонентом.В качестве альтернативы можно сделать класс захвата виртуальной камерой и транслировать его с помощью кодировщика Windows Media (или он уже имеет встроенную функцию simila).

В качестве альтернативы , вы можете проверитьVNC (или один из клонов) исходный код и посмотрите, как он перехватывает окна и захватывает обновления изображений, затем сжимает их и делает их доступными для удаленных приложений.

Обратите внимание, что вам придется специально захватывать изображения без GDI(например, из видео / игровых приложений, использующих аппаратное ускорение и не связанные с RGB)).

...