ext. Programme starten (VLC)

Für Fragen von Einsteigern und Programmieranfängern...

ext. Programme starten (VLC)

Beitragvon reiter » 29. Sep 2019, 17:06 ext. Programme starten (VLC)

hallo
Vielleicht kann mir von Euch einer helfen.
Ausgangslage ist
eine MovieListe wird per FTP geladen.. das funktioniert auch.
downloaden kann man den Film auch.. funktioniert auch
VLC Player starten geht auch aber nur in Windows und Linux (auf dem MAC gehts nicht und kommt auch keine Fehlermeldung)
fest eingestellten Film abspielen funktioniert, ist aber nicht das was ich will.

Ich würde gern den Film aus der Liste wählen und nicht downloaden sondern auf der Platte über einen Netzwerkstream schauen.
Mit dem VLC sollte das doch gehen
kann mir da mal jemand helfen wie ich den Eintrag unter Filename ändern muss das ich einen Film aus der Liste wählen kann und übers Netzwerk mit dem VLC streamen kann?

mit Filename := 'listbox1.getselectedText' geht es ja nicht
auch geht der Eintrag nicht PlayerPath := FindDefaultExecutablePath('vlc');

und wie bekomm ich das auf dem MAC ans laufen? da wird der VLC garnicht gestartet was auf Windows und Linux funktioniert.

Code: Alles auswählen
unit Unit1;
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,
  ComCtrls, StdCtrls, FileCtrl, IdFTP, Process, LCLProc, UTF8Process;
 
type
 
  { TForm1 }
 
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Listbox1: TListBox;
    IdFTP1: TIdFTP;
    Panel1: TPanel;
    Panel3: TPanel;
    SaveDialog1: TSaveDialog;
    Splitter2: TSplitter;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    procedure FtpConnect ;
 
  public
 
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.lfm}
 
{ TForm1 }
 
procedure TForm1.FtpConnect ;
begin
  idftp1.Username:='root';
  idftp1.Password:='password';
  idftp1.Host:='192.168.0.147';
  idftp1.Passive:=True;
  idftp1.Connect;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  ftpConnect;
 idftp1.ChangeDir('media/hdd/movie');
 idftp1.List(Listbox1.Items,'*.ts',false);
 
end;
 
procedure TForm1.Button2Click(Sender: TObject);
Var
datei{, Line}: String;
begin
datei := IdFTP1.DirectoryListing.Items[ListBox1.ItemIndex].FileName;
SaveDialog1.FileName := datei;
if SaveDialog1.Execute then begin
IdFTP1.Get(datei, SaveDialog1.FileName, true);
end;
end;
 
procedure TForm1.Button3Click(Sender: TObject);
var
  Player: TProcessUTF8;
  Filename: String;
  PlayerPath: String;
  PlayerParams: String;
begin
  Filename := 'ftp://user:passwort@192.168.0.147/media/hdd/movie/' + idftp1.DirectoryListing.Items[ListBox1.ItemIndex].FileName;
 
// PlayerPath := FindDefaultExecutablePath('vlc');  geht nicht
 
 PlayerPath := '/Applications/VLC.app/Contents/MacOS/VLC';
  PlayerParams := '"' + Filename + '"';
  Player:=TProcessUTF8.Create(nil);
  try
    Player.CommandLine := PlayerPath + ' ' + PlayerParams;
    Player.Execute;
  finally
    Player.Free;
  end;
 
end;
end.
 
Zuletzt geändert von reiter am 2. Okt 2019, 23:56, insgesamt 3-mal geändert.
reiter
 
Beiträge: 120
Registriert: 18. Nov 2017, 17:58

Beitragvon wp_xyz » 29. Sep 2019, 19:17 Re: ext. Programme starten (VLC)

Keine Ahnung, hab' keinen Mac. Aber vielleicht stört er sich an den Anführungsstrichen beim Dateinamen. TProcess.CommandLine ist ohnehin "deprecated". Nimm stattdessen .Executable und .Parameters:

Code: Alles auswählen
  PlayerPath := '/Users/Andy/ProgTest/vlc-test-movie/vlc';
  PlayerParams := '"' + Filename + '"';
  Player:=TProcessUTF8.Create(nil);
  try
    Player.Executable := PlayerPath;
    Player.Parameters.Add(FileName)// oder doch PlayerParams? - ausprobieren...
    Player.Execute;
  finally
    Player.Free;
  end;
wp_xyz
 
Beiträge: 2968
Registriert: 8. Apr 2011, 09:01

Beitragvon reiter » 29. Sep 2019, 19:34 Re: ext. Programme starten (VLC)

Dankeschön,
Werde ich mal probieren.

Code: Alles auswählen
  PlayerPath := '/Users/Andy/ProgTest/vlc-test-movie/vlc';
  PlayerParams := '"' + Filename + '"';
  Player:=TProcessUTF8.Create(nil);
  try
    Player.Executable := PlayerPath;
    Player.Parameters.Add(FileName)// oder doch PlayerParams? - ausprobieren...
    Player.Execute;
  finally
    Player.Free;
  end;


das war es leider nicht, auf dem MAC startet der VLC nicht
Zu meinem anderen Problem.. weiß jemand wie ich die Einträge aus der Liste mit dem vlc aufrufen kann?
Filename := ˋVideo.mpg‘; war ja nur ein Test ob der vlc auch gestartet wird und das abspielt .
Wie könnte ich den das noch lösen..?
reiter
 
Beiträge: 120
Registriert: 18. Nov 2017, 17:58

Beitragvon reiter » 29. Sep 2019, 22:31 Re: ext. Programme starten (VLC)

Bildschirmfoto 2019-09-29 um 22.35.29.png
so mit der pfadangabe

Code: Alles auswählen
PlayerPath := '/Applications/VLC.app/Contents/MacOS/VLC';


öffnet der VLC Player nun auch auf dem MAC
und läuft somit auf allen 3 Systemen

jetzt bräuchte ich nur noch ne Lösung wie ein Listeneintrag an den VLC übergeben wird und als Netzwerkstream ausführt
hat mal jemand was ähnliches gemacht ?
Zuletzt geändert von reiter am 2. Okt 2019, 22:23, insgesamt 1-mal geändert.
reiter
 
Beiträge: 120
Registriert: 18. Nov 2017, 17:58

Beitragvon sstvmaster » 29. Sep 2019, 23:23 Re: ext. Programme starten (VLC)

reiter hat geschrieben:jetzt bräuchte ich nur noch ne Lösung wie ein Listeneintrag an den VLC übergeben wird und als Netzwerkstream ausführt
hat mal jemand was ähnliches gemacht ?


Hier findest du eine Übersicht der Kommandozeilen Befehle: https://www.videoanleitungen.eu/videola ... zeile.html
LG Maik
sstvmaster
 
Beiträge: 226
Registriert: 22. Okt 2016, 23:12
Wohnort: Dresden
OS, Lazarus, FPC: Windows 7 32bit (L 2.0.4 FPC 3.0.4) | 
CPU-Target: 32Bit
Nach oben

Beitragvon reiter » 29. Sep 2019, 23:37 Re: ext. Programme starten (VLC)

danke schön, werde ich mir mal ansehen und auf der Konsole bisschen probieren.
sollte ja dann von der Syntax so ungefähr aussehen

Filename:= 'listbox1.getselectedText' + 'konsolenbefehl';
reiter
 
Beiträge: 120
Registriert: 18. Nov 2017, 17:58

Beitragvon reiter » 2. Okt 2019, 21:09 Re: ext. Programme starten (VLC)

Hallo,
so funktioniert es jetzt

Code: Alles auswählen
Filename := 'ftp://user:passwort@192.168.0.147/media/hdd/movie/' + idftp1.DirectoryListing.Items[ListBox1.ItemIndex].FileName;


danke
reiter
 
Beiträge: 120
Registriert: 18. Nov 2017, 17:58

Beitragvon reiter » 6. Okt 2019, 16:37 Re: ext. Programme starten (VLC)

eine Frage habe ich noch...
Im Moment lese ich die Filme über diesen Befehl ein

Code: Alles auswählen
idftp1.List(Listbox1.Items,'*.ts',false);


das funktioniert soweit ,

nur wenn ich den Filter erweitern möchte z.b. so

Code: Alles auswählen
idftp1.List(Listbox1.Items,'*.ts','*.mp4',false); 


Code: Alles auswählen
idftp1.List(Listbox1.Items,'*.*',false); 




funktioniert das nicht.

desweiteren wird bei dem Befehl die Liste dann abgeschnitten (siehe Foto)



Bildschirmfoto 2019-10-06 um 16.36.25.png


wie kann ich das ändern z.b. mit einer StringList die das dann an die Listbox übergibt?

komm da nicht weiter

danke
Zuletzt geändert von reiter am 7. Okt 2019, 08:27, insgesamt 1-mal geändert.
reiter
 
Beiträge: 120
Registriert: 18. Nov 2017, 17:58

Beitragvon pluto » 6. Okt 2019, 17:11 Re: ext. Programme starten (VLC)

Schau dir mal die libvlc an. Die nutzte ich gerade bei einem Aktuellen Projekt, sehr erfolgreich... sie sollte im Prinzip auch auf allen Systemen laufen und du musst kein Externes Programm starten....

Edit1:
das funktioniert soweit ,nur wenn ich den Filter erweitern möchte z.b. so

Du solltest es einzeln prüfen und nicht auf einmal....
MFG
Michael Springwald
Aktuelles Projekt: ContentManager2(Ehmals NoteManager2).
pluto
Lazarusforum e. V.
 
Beiträge: 7007
Registriert: 19. Nov 2006, 13:06
Wohnort: Oldenburg(Oldenburg)
OS, Lazarus, FPC: Linux Mint 19.2 | 
CPU-Target: AMD
Nach oben

Beitragvon reiter » 6. Okt 2019, 17:29 Re: ext. Programme starten (VLC)

hallo pluto,

nein die libvlc läuft auf dem MAC leider nicht
das hab ich ja hinbekommen das funktioniert auch..

wo ich das Problem habe ,ist das einlesen der FTP Liste
reiter
 
Beiträge: 120
Registriert: 18. Nov 2017, 17:58

Beitragvon wp_xyz » 6. Okt 2019, 18:23 Re: ext. Programme starten (VLC)

Wird das eine "LazMediathekView"?
wp_xyz
 
Beiträge: 2968
Registriert: 8. Apr 2011, 09:01

Beitragvon reiter » 6. Okt 2019, 18:37 Re: ext. Programme starten (VLC)

wp_xyz hat geschrieben:Wird das eine "LazMediathekView"?


wenn Ihr mir bei helfen könnt , warum nicht?

ich weiss nicht warum das Einlesen der Listbox abbricht...
das ist aber auch mit einer Stringlist so...
die ich mal davor gesetzt habe und dann an eine Listbox übergeben habe
das selbe Ergebnis
Komponenten habe ich noch nicht selber geschrieben

das Proggi kann ich aber mal anhängen später
reiter
 
Beiträge: 120
Registriert: 18. Nov 2017, 17:58

Beitragvon af0815 » 6. Okt 2019, 19:17 Re: ext. Programme starten (VLC)

reiter hat geschrieben:das Proggi kann ich aber mal anhängen später

Besser sind immer die Sourcen. :-) SCNR.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
af0815
 
Beiträge: 3763
Registriert: 7. Jan 2007, 11:20
Wohnort: Niederösterreich
OS, Lazarus, FPC: FPC 3.2 Lazarus 2.0 per fpcupdeluxe | 
CPU-Target: 32Bit (64Bit)
Nach oben

Beitragvon reiter » 6. Okt 2019, 19:34 Re: ext. Programme starten (VLC)

Vielleicht findet ja dann jemand warum das einlesen der Listbox abgeschnitten wird...
ich werde mal schauen und hänge die Sourcen dann hier mal an
reiter
 
Beiträge: 120
Registriert: 18. Nov 2017, 17:58

Beitragvon reiter » 6. Okt 2019, 19:56 Re: ext. Programme starten (VLC)

wp_xyz hat geschrieben:Wird das eine "LazMediathekView"?


So, hier mal die Sourcen.

vielleicht kann man daraus auch mehr machen
und es kommt jemand dahinter warum die Listbox nicht richtig eingelesen und abgeschnitten wird , wenn die Liste etwas grösser ist...
Soweit bin ich ganz zufrieden damit wenn der Fehler mit dem einlesen einer größeren Liste nicht wäre
Und wie kann ich gleichzeitig mehrere Filter setzen?
Wie *.avi,*.mkv *.mp4 usw.

So geht es ja leider nicht..

Code: Alles auswählen
idftp1.List(Listbox1.Items,'*.ts','*.mp4',false); 


Ich hoffe es sind nicht zuviele Fehler drin.
Dateianhänge
vlc-movie-source.zip
(128.99 KiB) 19-mal heruntergeladen
reiter
 
Beiträge: 120
Registriert: 18. Nov 2017, 17:58

» Weitere Beiträge siehe nächste Seite »
Nächste

Zurück zu Einsteigerfragen



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste

porpoises-institution
accuracy-worried