Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Video vergrößern (https://www.delphipraxis.net/193601-video-vergroessern.html)

EWeiss 18. Aug 2017 18:31

Video vergrößern
 
Hat jemand Informationen darüber wie ich Videos mit DirectShow zoomen kann?
Informationen darüber im NET zu finden sind spärlich.

Wie kompliziert wäre das?

gruss

Ydobon 18. Aug 2017 19:05

AW: Video vergrößern
 
Was meinst du mit vergrößern? Nur die Anzeige oder so speichern?

EWeiss 18. Aug 2017 19:07

AW: Video vergrößern
 
Zitat:

Zitat von Ydobon (Beitrag 1379029)
Was meinst du mit vergrößern? Nur die Anzeige oder so speichern?

Das Video?

gruss

Ydobon 18. Aug 2017 19:19

AW: Video vergrößern
 
Möchtest du z.B. ein 320x200 Video mit 640x400 ansehen oder als ein Video mit der Auflösung speichern?

EWeiss 18. Aug 2017 19:26

AW: Video vergrößern
 
Zitat:

Zitat von Ydobon (Beitrag 1379033)
Möchtest du z.B. ein 320x200 Video mit 640x400 ansehen oder als ein Video mit der Auflösung speichern?

Ich möchte zoomen.
Von speichern war nicht die rede. ;)

gruss

Ydobon 18. Aug 2017 19:36

AW: Video vergrößern
 
Ich habe da noch etwas uraltes (2006). Könnte mittlerweile etwas anders aussehen, läuft aber zumindest noch. Über die Größe des Fensters ergibt sich einfach die angezeigte Größe.
Weiter ist ein Boolean zum Abbrechen.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var pGraph: IGraphBuilder;
    pMediaControl: IMediaControl;
    pEvent: IMediaEvent;
    pSeek: IMediaSeeking;
    pVidWin: IVideoWindow;
    evCode, x, y: Integer;
    lpParam1, lpParam2: LONG_PTR;
    tim, dim: Int64;
begin
  if not OpenDialog1.Execute then exit;
  CoCreateInstance(CLSID_FilterGraph, Nil, CLSCTX_INPROC_SERVER,
                    IID_IGraphBuilder, pGraph);
  pGraph.QueryInterface(IID_IMediaControl, pMediaControl);
  pGraph.QueryInterface(IID_IMediaEventEx, pEvent);
  pGraph.RenderFile(PWIdeChar(OpenDialog1.FileName), Nil);
  pGraph.QueryInterface(IID_IMediaSeeking, pSeek);
  pSeek.GetDuration(tim);
  Label1.Caption:=IntToStr(tim div 10000000);
  pGraph.QueryInterface(IID_IVideoWindow, pVidWin);
  pVidWin.put_Owner(Handle);
  pVidWin.put_WindowStyle(WS_CHILD);
  pVidWin.get_Width(x);
  pVidWin.get_Height(y);
  pVidWin.SetWindowPosition(2, Panel1.Height+2, x, y); //Wiedergabegröße
  weiter:=true;
  pMediaControl.Run;
  while weiter do
  begin
    if pEvent.GetEvent(evCode, lpParam1, lpParam2, 0)<>E_ABORT then
    begin
      if evCode=EC_COMPLETE then weiter:=false;
      pEvent.FreeEventParams(evCode, lpParam1, lpParam2);
    end;
    pSeek.GetPositions(tim, dim);
    Label2.Caption:=IntToStr(tim div 10000000);
    Application.ProcessMessages;
  end;
  pVidWin.put_Visible(FALSE);
  pVidWin.put_Owner(0);
  pVidWin._Release;
  Pointer(pVidWin):=Nil;
  pMediaControl._Release;
  Pointer(pMediaControl):=Nil;
  pEvent._Release;
  Pointer(pEvent):=Nil;
  pGraph._Release;
  Pointer(pGraph):=Nil;
end;

EWeiss 18. Aug 2017 19:49

AW: Video vergrößern
 
Danke werde mich mal einlesen ;)

gruss

Ydobon 18. Aug 2017 20:08

AW: Video vergrößern
 
Mit Delphi 2010 hast du aber wohl noch Glück und kannst dir die Arbeit sparen. http://www.delphipraxis.net/158430-d...delphi-xe.html

EWeiss 18. Aug 2017 20:25

AW: Video vergrößern
 
Zitat:

Zitat von Ydobon (Beitrag 1379039)
Mit Delphi 2010 hast du aber wohl noch Glück und kannst dir die Arbeit sparen. http://www.delphipraxis.net/158430-d...delphi-xe.html

Vergiss es ;) Danke.
Kein DSPack..

gruss

EWeiss 19. Aug 2017 14:53

AW: Video vergrößern
 
Habe den zoom jetzt auf der Basis von DSPack ausgelegt eine andere Möglichkeit mit madVr in Zusammenhang
mit BasicVideo2 würde nicht funktionieren.

Das Problem ist nun das EVR und die anderen Filter aber nicht auf BasicVideo2 ausgelegt sind.
Ich finde nicht das richtige Spektrum um auch hier den Zoom Effekt anwenden zu können.

Hmm....

über
Delphi-Quellcode:
    function SetVideoPosition({unique} pnrcSource: PMFVideoNormalizedRect; {unique} prcDest: PRECT): HResult; stdcall;
    function GetVideoPosition(out pnrcSource: TMFVideoNormalizedRect; out prcDest: TRECT): HResult; stdcall;
sieht das sehr bescheiden aus.

gruss


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:35 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz