Если можно то Пример на любом языке, или готовая программа с такой реализацией.
1) Набросал простой пример:
Подключаю "Microsoft Mirror Driver", что-то вроде тестового драйвера для видео захвата. Работает без глюков, прост в эксплуатации. Давно хотел такой...
2) есть еще avifil32.dll ее используют, начиная с версии VB5.0 для монтажа видео
В моем случае Принцип BMP2AVI
Задача: Проецировать на форме, область захвата, если весь экран то весь, но в видео поток AVI файла эта проекция, не должна идти.
Решение 1: Копируем контекст формы в виртуальный контекст до начала проекции, а после снимка восстанавливаем контекст формы, что-то вроде:
hDisp = CreateDC("", "\\.\DISPLAY1", "", 0)
memDC=CreateCompatibleDC
'' #######################################
With Screen ''
w = .Width / .TwipsPerPixelX
h = .Height / .TwipsPerPixelX
Call Blt(memDC, 0, 0, w, h, hDisp, 0, 0, w, h, vbSrcCopy)
End With
Dim Rt As RECT
Call GetWindowRect(Me.hwnd, Rt)
With Rt
w = .Right - .Left
h = .Bottom - Top
Call Blt(memDC, .Left, .Top, w, h, Me.hdc, .Left, .Top, w, h, vbSrcCopy)
End With
With Screen
w = .Width / .TwipsPerPixelX
h = .Height / .TwipsPerPixelX
Call StretchBlt(Form1.hdc, 0, 0, Form1.ScaleWidth, Form1.ScaleHeight, hDisp, 0, 0, w, h, vbSrcCopy)
End With
res = AVIFileOpen(pfile, szOutputAVIFile, OF_WRITE Or OF_CREATE, 0&)
''###########################################
Решение 2: ………….
Я думаю – это не красивое решение, и есть более правильный вариант, подскажите, пожалуйста.
Язык СР любой, мануал на русском, английском и на базовом французском., без Native API
Ответить
|