![]() |
Mediaplayer Pause Screen erstellen fehlt das Bild
Hallo,
Ich wollte im Mediaplayer auf Pause stellen und dann mit einem Button ein Bild erstellen und in ZW-Ablage speichern. Die Form ist ist zwar komplett als Bild vorhanden,nur der Inhalt des "Bildes vom Mediaplayer" is weechh...:stupid: Hat jemand eine Idee wie das funktioniert?
Delphi-Quellcode:
procedure TForm18.AdvGlassButton11Click(Sender: TObject);
var Bitmap:TBitmap; begin Bitmap:=GetFormImage; try Clipboard.Assign(Bitmap); finally Bitmap.Free; end; end; |
AW: Mediaplayer Pause Screen erstellen fehlt das Bild
Such mal nach
![]() |
AW: Mediaplayer Pause Screen erstellen fehlt das Bild
Hab ich schon gesucht wie ein Blödi,noch nix gefunden...:cry:
|
AW: Mediaplayer Pause Screen erstellen fehlt das Bild
Wie man
![]() |
AW: Mediaplayer Pause Screen erstellen fehlt das Bild
Zitat:
Es sei denn man liest die Video Datei in einen stream und greift auf das gerade abgespielte Frame zu. Mit AVI habe ich es schon gemacht mit dem Mediaplayer dürfte das etwas komplizierter werden abhängig vom Codec der verwendet wird beim abspielen. gruss |
AW: Mediaplayer Pause Screen erstellen fehlt das Bild
Also würde das bedeuten,ich kann ein Srceen vom Frame erstellen?
Oder sehe ich das falsch?:-D |
AW: Mediaplayer Pause Screen erstellen fehlt das Bild
Zitat:
gruss |
AW: Mediaplayer Pause Screen erstellen fehlt das Bild
Das DSPack ist recht handlich, wenn es darum geht Einzelbilder aus einem Video zu bekommen, dass einen beliebigen installierten Codec verwendet. (Die Codecs selber alle zu implementieren dürfte Mannjahre dauern.)
|
AW: Mediaplayer Pause Screen erstellen fehlt das Bild
Zitat:
Siehe ..
Delphi-Quellcode:
BMP := AVIStreamGetFrame(GetFramePointer, frame);
Delphi-Quellcode:
procedure GetAVIFrame;
var Frame : Integer; AVIElapsedTime : DWord; BMP : ^TBITMAPINFOHEADER; begin // Get the elapsed time. If the elapsed time is longer than the // video clip, then reset the elapsed time and video start AVIElapsedTime :=GetTickCount() - AVIStart; if AVIElapsedTime > AVILength then begin AVIStart :=GetTickCount(); AVIElapsedTime :=0; end; // Get the next frame based on the elaped time Frame :=AVIStreamTimeToSample(AVIStream, AVIElapsedTime); if Frame <> ActiveFrame then begin ActiveFrame :=Frame; { // use this for uncompressed video ONLY AVIStreamRead(AviStream, Frame, 1, FrameData, AviInfo.dwWidth*AviInfo.dwHeight*3, nil, nil); } // use this for compressed video BMP := AVIStreamGetFrame(GetFramePointer, frame); FrameData := Pointer(Cardinal(BMP) + BMP.biSize + BMP.biClrUsed*sizeof(RGBQUAD)); // the drawdib function will uncompress the framedata as it tries to copy the BMP DrawDibDraw(0, H_DC, 0, 0, AviInfo.dwWidth, AviInfo.dwHeight, @BMP, FrameData, 0, 0, AVIInfo.dwWidth, AVIInfo.dwHeight, 0); SwapRGB(FrameData, AviInfo.dwWidth * AviInfo.dwHeight); // Swap the BGR image to a RGB image glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, AviInfo.dwWidth, AviInfo.dwHeight, GL_RGB, GL_UNSIGNED_BYTE, FrameData); end; end; Zitat:
gruss |
AW: Mediaplayer Pause Screen erstellen fehlt das Bild
|
AW: Mediaplayer Pause Screen erstellen fehlt das Bild
Das ist doch wieder so ein überflüssiges Programm :? Die Druck-Taste tut unter Win7 klaglos, und auch das Programm da wird keinen Grabber für DirectX Overlays an Bord haben, sei versichert.
Allerdings: Wenn man Aero aktiviert hat, geht tatsächlich ein einfaches GetDC(0) und daraus die entsprechende Stelle ausschneiden, da Win7 hier ohnehin den Screenshot aus DX holen muss (weil dann ja alles via DX dargestellt wird). Das geht ABER NUR wenn Aero an ist! |
AW: Mediaplayer Pause Screen erstellen fehlt das Bild
Hallo nochmal,
ich habe es auf eine ganz einfache Weise" selber lösen können.:thumb:
Delphi-Quellcode:
hab es probiert mit mpg,wmv. Geht gut! Bin gerade beim testen mit avi und
procedure TForm18.AdvGlassButton11Click(Sender: TObject);
var Bitmap : TBitmap; DC:HDC; begin DC:=GetDc(Panel1.Handle); Bitmap:=TBitmap.Create(); Bitmap.Width:=Panel1.Width; Bitmap.Height:=Panel1.Height; mediaplayer1.Display.PaintTo(Bitmap.Canvas,0,0); BitBlt(Bitmap.Canvas.Handle,0,0,Panel1.Width,Panel1.Height,DC,0,0,SRCCOPY); Clipboard.Assign(Bitmap); Bitmap.Free; end; was der Mediaplayer sonst noch "FRIST":-D |
AW: Mediaplayer Pause Screen erstellen fehlt das Bild
Und dann mach das mal mit abgeschaltetem Aero ;)
Edit: Warum erst noch das Mediaplayer1.Display.PaintTo, wenn du nachher eh vom Panel DC blittest? |
AW: Mediaplayer Pause Screen erstellen fehlt das Bild
Hab ich gerade auf 3 verschiedenen Rechnern probiert.Es geht.Bei mir kam keine Fehlermeldung.WIN XP,Vista,WIN7 ohne Aero...:-D
|
AW: Mediaplayer Pause Screen erstellen fehlt das Bild
Dann nutzt der Mediaplayer kein Direct2D bzw. DirectDraw. Schwein gehabt ;)
(Trotzdem müsste das
Delphi-Quellcode:
überflüssig sein.)
mediaplayer1.Display.PaintTo(Bitmap.Canvas,0,0);
|
AW: Mediaplayer Pause Screen erstellen fehlt das Bild
Aero und spezieller der Windows-Desktop-Manager leitet gerne solche Sachen um, so daß sie dann doch direkt im Bild enthalten sind. (könnte aber auch sein, daß die es in diesen Programmen selber machen :gruebel:)
Ansonsten könnte man kein anderes Fenster halbtransparent davorlegen und hätte auch kein Bild in der Aerovorschau. Was mit aber aufgefallen ist, als ich mal Screenshots machen wollte. Wenn man einen zweiten Videoplayer offen hat, der als erstes die Schnittstellen für's direkte Zeichnen blockioert, dann weichen der WMP und VLC aus und zeichnen auch direkt, so daß man da auch wieder "billige" Screenshots machen kann. |
AW: Mediaplayer Pause Screen erstellen fehlt das Bild
Vielleicht den Code wieder rausradieren:-D,nicht dass es sich
jemand von Meikroosoooftbande noch anders überlegt.:-D:shock: Ja und der eeene Code ist überflüssig :cyclops: |
AW: Mediaplayer Pause Screen erstellen fehlt das Bild
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:49 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz