![]() |
TMediaPlayer - Video in Vollbild anzeigen
Moin Moin liebe Delphianer ;)
So kurz vor Feierabend und ich hab dennoch n Problem ... Ich muss in Video in Vollbild anzeigen lassen ... das Video wird über die TMediaPlayer-Komponente geöffnet und abgespielt. Als Display dient ein Panel. Ich hab der Form (auf der das Video abgespielt werden soll) ...
Delphi-Quellcode:
... zugewiesen
Height := Screen.Height;
Width := Screen.Width; Das gleiche auch dem Panel ... Das Video wird zwar abgespielt ... allerdings füllt es nur n drittel des Panels aus ... Die eigentliche Größe des Videos ist nämlich nicht so groß, die Qualität auf einer Auflösung von 1600x1200 ist aber immer noch beachtlich und somit kann das Video problemlos im Maximierten Modus angezeigt werden (Mit VLC-Player, bzw. Windows Media Player) gibt es evtl. in der TMediaPlayer-Komponente dass ich das Video maximiert anzeigen lassen kann?! oder über die Display-Eigenschaft?! Wenn Fragen offen sind einfach drauf los schiessen ;) Vielen Dank für Eure Hilfe Euer f4k3 ;) |
Re: TMediaPlayer - Video in Vollbild anzeigen
|
Re: TMediaPlayer - Video in Vollbild anzeigen
Zitat:
in dem Thread wird ja behandelt wie man das Video skaliert. Meiner Ansicht nach gibts in dem Thread nix darüber wie ich mit DisplayReg oder mcisendstring umgehen muss ... werd da in der hilfe auch net ganz schlau draus ;( kann mir des jemand erklären?! Danke euer f4k3 :coder: |
Re: TMediaPlayer - Video in Vollbild anzeigen
Hi,
Delphi-Quellcode:
Sollte eigentlich klappen.
//MediaPlayer.DisplayRect := Rect(links, oben, rechts, unten);
MediaPlayer.DisplayRect := Rect(0, 0, Panel.Width, Panel.Height); Wenn es nicht verzerren sollte, musst du natürlich ein wenig rumrechnen. Ich hab es mal so gemacht:
Delphi-Quellcode:
Hintergrund: Wenn man DisplayRect auf (0, 0, 0, 0) setzt, werden die letzten beiden Koordinaten automatisch auf die Videomaße gesetzt. (Falls es kein Video ist, sind sie natürlich auch 0.) Damit hat man die Videomaße und muss nun so rechnen, dass das Verhältnis beibehalten wird. Ich habe es nach der LetterBox-Methode gemacht, d. h. es wird nichts vom Video abgeschnitten, sondern es bleiben evtl. Teile frei, um das Seitenverhältnis zu bewahren.
//MCIAnzeige ist mein Panel
MediaPlayer.Open; MediaPlayer.DisplayRect := Rect(0, 0, 0, 0); if (MediaPlayer.DisplayRect.Right > 0) and (MediaPlayer.DisplayRect.Bottom > 0) then begin if (MediaPlayer.DisplayRect.Right > MCIAnzeige.Width) or (MediaPlayer.DisplayRect.Bottom > MCIAnzeige.Height) or ((MediaPlayer.DisplayRect.Right * 2 <= MCIAnzeige.Width) and (MediaPlayer.DisplayRect.Bottom * 2 <= MCIAnzeige.Height)) then begin NewWidth := MediaPlayer.DisplayRect.Right * MCIAnzeige.Height div MediaPlayer.DisplayRect.Bottom; if NewWidth > MCIAnzeige.Width then begin NewHeight := MediaPlayer.DisplayRect.Bottom * MCIAnzeige.Width div MediaPlayer.DisplayRect.Right; NewWidth := MCIAnzeige.Width; end else NewHeight := MCIAnzeige.Height; end else begin NewWidth := MediaPlayer.DisplayRect.Right; NewHeight := MediaPlayer.DisplayRect.Bottom; end; MediaPlayer.DisplayRect := Rect( (MCIAnzeige.Width - NewWidth) div 2, (MCIAnzeige.Height - NewHeight) div 2, NewWidth, NewHeight); end; [edit] Mein Code skaliert nur zu große Videos oder die, die kleiner als die Hälfte sind, da ich das damals so wollte. Wenn du das nicht willst, lass das
Delphi-Quellcode:
sowie das dazugehörige else begin..end weg.
if (MediaPlayer.DisplayRect.Right > MCIAnzeige.Width) or
(MediaPlayer.DisplayRect.Bottom > MCIAnzeige.Height) or ((MediaPlayer.DisplayRect.Right * 2 <= MCIAnzeige.Width) and (MediaPlayer.DisplayRect.Bottom * 2 <= MCIAnzeige.Height)) then [/edit] Mfg FAlter [edit] Letzten Delphi-Tag korrigiert. [/edit] |
Re: TMediaPlayer - Video in Vollbild anzeigen
Liste der Anhänge anzeigen (Anzahl: 2)
mhm ... also das verändern der Größe hat schonmal geklappt ...
Delphi-Quellcode:
nur hab ich folgendes Problem ... (siehe Vorher_.jpg und dann Nachher._jpg)
MediaPlayer.DisplayRect := Rect(0,0,Screen.Height,Screen.Width);
Ich seh jetzt ca. die linke obere ecke des Video Bereichs ... der rest passt nicht auf die Form ... das Video wird somit verzerrt ... In den beiden Anhängen kannst du ja erkenn wie groß dass Video ist ... Ich hab deine Berechnung nich ganz kapiert ... woher du NewWidth / NewHeight hast ... eigene Variablen? oder extra funktion?! Also ich ermittle die Größe des Videos?! und versuche es dann zu vergrößern bis es auf das Display passt?! Soweit richtig?! Also müsste ich quasi die Höhe und die Breite des Video's * den Wert um auf meine Screen.Height und Screen.Width (Vollbild) zu kommen? Sorry dass du dich so dummen Fragen stellen musst ... aber ich tu mir da noch schwer :( Danke für deine Hilfe Gruß f4k3 |
Re: TMediaPlayer - Video in Vollbild anzeigen
Okay ;)
ich hab mich etz mal hingehockt und copy & paste betrieben und bin einigermaßen hinter die logik gestiegen ... Video wird richtig angezeigt und alles is super ;) Vielen Dank nochmal für deine Hilfe ;) Gruß f4k3 :coder: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:02 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