Использование ffmpeg для сетевого стриминга удаленного дестопа
От: JacobR  
Дата: 26.04.20 19:20
Оценка:
Добрый день, коллеги

Возникла такая задача, нужно сделать что-то типа remoute admin. Из-за специфики окружения в чистом виде RPD и готовый компонент MSTSCLib не подходит (серверная часть C#), для проверки самой идеи было сделано следующее. На гесте реализовали простого агента в виде Windows Service, который захватывает экран через GDI в цикле, берется разница между кадрами, жмется zlib, шифруется и по сети отправляется фреймы, которые разжимаются на принимающей стороне и рендереться в контроле, и так же передается курсор.

Хотелось бы найти простые примеры (от которых можно было бы уже оттолкнуться), где используется ffmpeg в идеале конечно с кодеком H.264, примерно по такой же схеме, со стороны геста захватывается экран, в кодек скармливается сырой битмап, на выходе сжатые данные которые можно отправить по сети.
Re: Использование ffmpeg для сетевого стриминга удаленного дестопа
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 27.04.20 07:07
Оценка:
Здравствуйте, JacobR, Вы писали:

JR>Хотелось бы найти простые примеры (от которых можно было бы уже оттолкнуться), где используется ffmpeg в идеале конечно с кодеком H.264, примерно по такой же схеме, со стороны геста захватывается экран, в кодек скармливается сырой битмап, на выходе сжатые данные которые можно отправить по сети.


Это? Находится по первой же ссылке в гугле. Или что-то другое имеется ввиду?
Re[2]: Использование ffmpeg для сетевого стриминга удаленного дестопа
От: JacobR  
Дата: 27.04.20 13:00
Оценка:
Здравствуйте, Nuzhny, Вы писали:

N>Здравствуйте, JacobR, Вы писали:


JR>>Хотелось бы найти простые примеры (от которых можно было бы уже оттолкнуться), где используется ffmpeg в идеале конечно с кодеком H.264, примерно по такой же схеме, со стороны геста захватывается экран, в кодек скармливается сырой битмап, на выходе сжатые данные которые можно отправить по сети.


N>Это? Находится по первой же ссылке в гугле. Или что-то другое имеется ввиду?


Не совсем то, хотелось бы следующий кейс, получать скрин экрана, в виде битмапа, в него кое-что дополнительно дорисовывается (получение и рендеринг в битмап реализовано), после “засунуть” его в кодек, на выходе получить сжатые данные эти данные посылаются по сети, и на принимающей стороне происходит обратная процедура. И собственно искал примеры работы с ffmpeg от чего можно оттолкнуться в чести добавление фрейма в кодек и получение сжатых данных.
Re[3]: Использование ffmpeg для сетевого стриминга удаленного дестопа
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 27.04.20 13:13
Оценка:
Здравствуйте, JacobR, Вы писали:

JR>Не совсем то, хотелось бы следующий кейс, получать скрин экрана, в виде битмапа, в него кое-что дополнительно дорисовывается (получение и рендеринг в битмап реализовано), после “засунуть” его в кодек, на выходе получить сжатые данные эти данные посылаются по сети, и на принимающей стороне происходит обратная процедура. И собственно искал примеры работы с ffmpeg от чего можно оттолкнуться в чести добавление фрейма в кодек и получение сжатых данных.


А, так это совсем легко делается, пару функций вызвать. Кажется, что примеров у самого ffmpeg вагон: например. Там смотреть только на видео.
Re[3]: Использование ffmpeg для сетевого стриминга удаленного дестопа
От: alexander_r  
Дата: 27.04.20 13:44
Оценка:
Здравствуйте, JacobR, Вы писали:

JR>Здравствуйте, Nuzhny, Вы писали:


N>>Здравствуйте, JacobR, Вы писали:


JR>>>Хотелось бы найти простые примеры (от которых можно было бы уже оттолкнуться), где используется ffmpeg в идеале конечно с кодеком H.264, примерно по такой же схеме, со стороны геста захватывается экран, в кодек скармливается сырой битмап, на выходе сжатые данные которые можно отправить по сети.


N>>Это? Находится по первой же ссылке в гугле. Или что-то другое имеется ввиду?


JR>Не совсем то, хотелось бы следующий кейс, получать скрин экрана, в виде битмапа, в него кое-что дополнительно дорисовывается (получение и рендеринг в битмап реализовано), после “засунуть” его в кодек, на выходе получить сжатые данные эти данные посылаются по сети, и на принимающей стороне происходит обратная процедура. И собственно искал примеры работы с ffmpeg от чего можно оттолкнуться в чести добавление фрейма в кодек и получение сжатых данных.


https://github.com/Rukhlov/ScreenStreamer/blob/master/MediaToolkit.FFmpeg/VideoEncoder.cpp
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.