Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Tmediaplayer xe 2 (https://www.delphipraxis.net/168123-tmediaplayer-xe-2-a.html)

bernhard_LA 6. Mai 2012 16:11

Tmediaplayer xe 2
 
ich möchte div. AVI#s mit verschiedner Codierung, fps und Auflösung hintereinander mit einem Tmediaplayer abspielen. ( Habe leider kein Programm gefunden was hier aus den Mini AVIs ein gesamtes AVI erstellen kann)

Wenn ich die Dateien einzeln lade klappt die Wiedergabe, wenn ich die Files in einer Schleife durchlaufen lasse kommt die AV : "there is no driver in your system" ...., muss ich TMediaPlayer vorm laden des nächsten *.avi aufräumen ?

Luckie 6. Mai 2012 16:13

AW: Tmediaplayer xe 2
 
Zitat:

Zitat von bernhard_LA (Beitrag 1165066)
muss ich TMediaPlayer vorm laden des nächsten *.avi aufräumen ?

Warum fragst du das? Probiere es doch einfach aus. Und es wäre auch hilfreich, wenn du uns deinen Code zeigen würdest.

bernhard_LA 6. Mai 2012 17:33

AW: Tmediaplayer xe 2
 
anbei der code .... ein File OK, dass ganze in einer Schleife -> ACCESS VIOLATION

Delphi-Quellcode:


unit SimpleMovieplayer;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
  System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ComCtrls, Vcl.ExtCtrls, Vcl.MPlayer,
  Vcl.StdCtrls, Vcl.Buttons;

type
  TMediaPlayerForm = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    MediaPLayerStatusBar: TStatusBar;
    MediaPlayer1: TMediaPlayer;
    BitBtn1: TBitBtn;
    PlayBitBtn: TBitBtn;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure BitBtn1Click(Sender: TObject);
    procedure PlayBitBtnClick(Sender: TObject);
  private
    procedure PlayFile(s: string);
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    playList: TStringList;

  end;

var
  MediaPlayerForm: TMediaPlayerForm;

implementation

{$R *.dfm}

uses UnitSelectAVIFiles;

procedure TMediaPlayerForm.BitBtn1Click(Sender: TObject);
begin
  SelectMediaFilesForm.playList := playList;
  SelectMediaFilesForm.Showmodal;
  if SelectMediaFilesForm.ModalResult = mrOK then
  begin
    playList := SelectMediaFilesForm.playList;
  end;

end;

procedure TMediaPlayerForm.PlayBitBtnClick(Sender: TObject);
var
  i: integer;
begin
  for i := 0 to playList.Count - 1 do
  begin
    MediaPLayerStatusBar.SimpleText := IntToStr(i) + ' now playing mediafile ->'
      + playList[i];
    PlayFile(playList[i]);
  end;
end;

procedure TMediaPlayerForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  playList.Free;
end;

procedure TMediaPlayerForm.FormCreate(Sender: TObject);
begin
  playList := TStringList.Create;

end;

procedure TMediaPlayerForm.PlayFile(s: string);
begin
  if (FileExists(s)) then
  begin
    MediaPlayer1.Display := Panel1;
    MediaPlayer1.FileName := s;
    MediaPlayer1.Wait := true;
    MediaPlayer1.Open;
    MediaPlayer1.play;
  end;
end;

end.

Luckie 6. Mai 2012 17:38

AW: Tmediaplayer xe 2
 
Suche hilft: Bei Google suchendelphi tmediaplayer playlist

bernhard_LA 7. Mai 2012 15:14

AW: Tmediaplayer xe 2
 
ich kann alle Videos mit IRVANVIEW anschauen, alle Videos liegen im *.avi Format vor. (Die Bildgröße und Codierung sind jedoch nicht immer gleich) TMediaPlayer kann einige Dateien nicht öffnen AV " THERE IS NO DRIVER INSTALLED ON YOUR SYSTEM". Ich hättet erwartet von der MediaPlayer von IRVANVIEW mein Files abspielen kann, dann sollte dies doch auch der TMediaplayer von DELPHI heraus schaffen? Wenn IRVANVIEW einen DRIVER findet sollte TMEDIAPLAYER in auch finden könenn :evil:

Klaus01 7. Mai 2012 15:22

AW: Tmediaplayer xe 2
 
Hallo,

der TMediaplayer kapselt den mplayer von Windows.
Kann dieser die Dateien nicht abspielen - kann das TMediaplayer auch nicht.

Grüße
Klaus

bernhard_LA 7. Mai 2012 15:35

AW: Tmediaplayer xe 2
 
verstanden, Datei RECHTSKLICK und PLAY und dann die *.avi datei im Mediaplayer ansehen geht aber

Klaus01 7. Mai 2012 15:39

AW: Tmediaplayer xe 2
 
zur Beachtung:

mplayer != Windows Media Player

Grüße
Klaus

jaenicke 7. Mai 2012 15:53

AW: Tmediaplayer xe 2
 
Es gibt aber auch die Möglichkeit einfach das Windows Media Player Control in Delphi einzubinden. (Komponente --> Komponente importieren...)

Zudem gibt es auch Komponenten zur Videowiedergabe zum Download.

lbccaleb 7. Mai 2012 21:07

AW: Tmediaplayer xe 2
 
http://www.delphipraxis.net/140677-d...iedergabe.html

implementation 7. Mai 2012 21:18

AW: Tmediaplayer xe 2
 
Zitat:

Zitat von Klaus01 (Beitrag 1165215)
mplayer != Windows Media Player

Den da?

Klaus01 7. Mai 2012 22:05

AW: Tmediaplayer xe 2
 
Zitat:

Zitat von implementation (Beitrag 1165243)
Zitat:

Zitat von Klaus01 (Beitrag 1165215)
mplayer != Windows Media Player

Den da?

Nein, ich meinte den der bei Windows dabei ist.
Aber dessen Name ist mplayer2 (wie ich eben festgestellt habe).
Sorry, wenn ich für Verwirrung gesorgt haben sollte.

Grüße
Klaus

Medium 7. Mai 2012 22:30

AW: Tmediaplayer xe 2
 
Zitat:

Zitat von bernhard_LA (Beitrag 1165201)
ich kann alle Videos mit IRVANVIEW anschauen, alle Videos liegen im *.avi Format vor. (Die Bildgröße und Codierung sind jedoch nicht immer gleich) TMediaPlayer kann einige Dateien nicht öffnen AV " THERE IS NO DRIVER INSTALLED ON YOUR SYSTEM". Ich hättet erwartet von der MediaPlayer von IRVANVIEW mein Files abspielen kann, dann sollte dies doch auch der TMediaplayer von DELPHI heraus schaffen? Wenn IRVANVIEW einen DRIVER findet sollte TMEDIAPLAYER in auch finden könenn :evil:

Irfanview ;)
AVI ist an und für sich kein "Format", da es lediglich einen Container für diverse Formate beschreibt, ähnlich wie RIFF WAVE. In einem AVI können also Videos als MPEG2, DivX, Cinepak, h.264, etc. etc. stecken, die meist auch alle je ihren eigenen Codec brauchen, und ein Codec auch ggf. je nach weiterem Subformat wiederum neu/anders initialisiert werden muss. Dass alles AVI sei, hilft daher kein Stück weiter.
Ich vermute einfach, dass der Mediaplayer in Delphi bei einem Dateiwechsel nicht auch automatisch eine Neuinitialisierung des zu verwendenden Codecs veranlasst. Ich hab grad kein Delphi zur Hand, aber TMediaplayer bietet vermutlich irgend eine Methode, die dazu fürhren kann. Sei es ein Close() oder was auch immer. Einfach mal in der Codevervollständigung scrollen und zu wahrscheinlichen Kandidaten die Hilfe starten und auch mal einfach testen. Das ist zumindest meine übliche Methode wenn ich ein bestimmtes Verhalten suche, was meist ganz gut klappt.

Andreas L. 8. Mai 2012 07:26

AW: Tmediaplayer xe 2
 
Zitat:

Zitat von Luckie (Beitrag 1165067)
Zitat:

Zitat von bernhard_LA (Beitrag 1165066)
muss ich TMediaPlayer vorm laden des nächsten *.avi aufräumen ?

Warum fragst du das? Probiere es doch einfach aus.

@bernhard_LA: Hast du das ausprobiert? Könnte die Lösung sein.

Delphi-Quellcode:
procedure TMediaPlayerForm.PlayFile(s: string);
begin
  if (FileExists(s)) then
  begin

    // Player "löschen"
    if Assigned(MediaPlayer1) then
      FreeAndNil(MediaPlayer1);

    // Neuen Player erzeugen
    MediaPlayer1 := TMediaPlayer.Create(Self);
    MediaPlayer1.Parent := Self;

    // wie gewohnt benutzen
    MediaPlayer1.Display := Panel1;
    MediaPlayer1.FileName := s;
    MediaPlayer1.Wait := true;
    MediaPlayer1.Open;
    MediaPlayer1.play;
  end;
end;
oder

Delphi-Quellcode:
procedure TMediaPlayerForm.PlayFile(s: string);
begin
  if (FileExists(s)) then
  begin

    MediaPlayer1 := TMediaPlayer.Create(Self);
    try
      MediaPlayer1.Parent := Self;

      MediaPlayer1.Display := Panel1;
      MediaPlayer1.FileName := s;
      MediaPlayer1.Wait := true;
      MediaPlayer1.Open;
      MediaPlayer1.play;
   finally
     FreeAndNil(MediaPlayer1);
  end;
end;
Vielleicht genügt aber auch schon die Methode: http://docwiki.embarcadero.com/Libra...iaPlayer.Close

bernhard_LA 8. Mai 2012 16:03

AW: Tmediaplayer xe 2
 
der Tmediaplayer hat weiterhin beim Abspielen einzelner Files Probleme, auch mit der neuen Codeversion.
Ihm fehlen vermutlich die richtigen Codecs.

Kann ich die Liste der verfügbaren Codecs mir vom Tmediaplayer ausgebenlassen ?





Delphi-Quellcode:

procedure TMediaPlayerForm.PlayFile(s: string);
var
  MediaPlayer1: TMediaPlayer;
begin
  if (FileExists(s)) then
  begin
    MediaPlayer1 := TMediaPlayer.Create(Self);
    try
      MediaPlayer1.Parent := Self;

      MediaPlayer1.Display := Panel1;
      MediaPlayer1.FileName := s;
      MediaPlayer1.Wait := true;
      MediaPlayer1.Open;
      MediaPlayer1.play;
    finally
      begin
        //  warte bis video abgespielt ....
        repeat
          sleep(1000);
        until (MediaPlayer1.Position = MediaPlayer1.Length);
        FreeAndNil(MediaPlayer1);
      end;
    end;
  end;
end;

jaenicke 9. Mai 2012 05:42

AW: Tmediaplayer xe 2
 
Warum bestehst du denn so auf dem alten TMediaPlayer?

Naja, sei es drum, hier steht etwas zu den Codecs bei MCI:
http://support.microsoft.com/kb/142731/de


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:05 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