![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Кто-нибудь откроет секрет PowerDVD
AbrosimovA © (2006-08-03 15:19:00)Каким-образом он делает скриншоты Видеоокна или оверлея?
Может у кого есть готовый способ в коде Дельфи.
AbrosimovA (2006-08-07 11:28:00) [1]
> antonn © (04.08.06 08:06) [6]
Твой код работает, еслиVideoWindow.Mode:=vmVMR;
Но Overlay Mixer не хочет соединяться с VideoWindow, если включён VMR режим, только еслиVideoWindow.Mode:=vmNormal.
AbrosimovA (2006-08-07 10:56:00) [2]
> Правильно,
А что из вышесказанного правильно?
NailMan (2006-08-07 10:36:00) [3]Правильно, потому что SampleGrabber внедряется сразу перед рендерером, так как ему на вход подается итоговая картинка выводящаяся на экран. ;-)
---
P.L.U.R. and WBR, NailMan aka 2:5020/3337.13
AbrosimovA (2006-08-07 09:59:00) [4]Также в обоих случаях использую следующие настройки для граббёра:
Major type: Automatic;
Sub type: MPEG2_VIDEO;
Format type: VideoInfo.
AbrosimovA (2006-08-07 08:44:00) [5]
> NailMan © (03.08.06 22:17) [4]
> ISampleGrabber спасет отца руской демократии.
Не спасает, так как не работает при воспроизведении DVD.
Если *.avi, граф следующий :
File Source (Async)->AVI Splitter-> SampleGrabber->ffdshow MPEG-4 Video Decoder->Overlay Mixer->Video Renderer, в этом случае SampleGrabber работает.
Если *.ifo (DVD), граф следующий :
DVD Navigator-> SampleGrabber->Nero Video Decoder->Overlay Mixer2->Video Renderer, в этом случае SampleGrabber почему-то не работает.
В обоих случаях использую следующий код:
if not SavePictureDialog1.Execute then Exit;
Bmp:=TBitmap.Create;
try
if SampleGrabber1.GetBitmap(Bmp) then
Bmp.SaveToFile(SavePictureDialog1.FileName);
finally
Bmp.Free
end;
antonn (2006-08-05 04:29:00) [6]Sitr (04.08.06 19:25) [7]
у повер-двд нет, у mplayer2.exe ловит. Также ловит все прозрачные окна.
Sitr (2006-08-04 19:25:00) [7]2antonn
А у тебя это работает?
Например видио тоже ловит? у меня вот почему то так не работало
antonn (2006-08-04 08:06:00) [8]а, хотя, ладно...
var DC:HDC; BM:TBitmap;
begin
BM:=TBitmap.Create;
try
BM.Width:=screen.Width;
BM.Height:=screen.Height;
DC:=GetDC(0);
BitBlt(BM.Canvas.Handle,0,0,BM.Width,BM.Height,DC,0,0,SrcCopy or $40000000);
ReleaseDC(0,DC);
BM.SaveToFile('c:\1.bmp');
finally
bm.Free;
end;
antonn (2006-08-04 07:37:00) [9]Cash © (03.08.06 20:15) [2]
Нет, этот метод не подходит, т. к. при аппаратном ускорении кадр не
рисуется на поврхности.
можно этот код?
NailMan (2006-08-03 22:17:00) [10]ISampleGrabber спасет отца руской демократии. Только так и делается. Описание как пользовать с примером - в DX SDK, а точнее в .CHM файле!
Sitr (2006-08-03 20:34:00) [11]Хм надо наверное с видюхой работать, была у меня такая проблема, но не помню что с ней делал... :(
Cash (2006-08-03 20:15:00) [12]antonn © (03.08.06 15:51) [1]:
Нет, этот метод не подходит, т. к. при аппаратном ускорении кадр не
рисуется на поврхности.
antonn (2006-08-03 15:51:00) [13]подойдет и обычный способ "скриншотирования"