ext. Programme starten (VLC)

Für Fragen von Einsteigern und Programmieranfängern...
reiter
Beiträge: 198
Registriert: Sa 18. Nov 2017, 16:58

ext. Programme starten (VLC)

Beitrag von reiter »

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 Mi 2. Okt 2019, 23:56, insgesamt 3-mal geändert.

wp_xyz
Beiträge: 3271
Registriert: Fr 8. Apr 2011, 09:01

Re: ext. Programme starten (VLC)

Beitrag von wp_xyz »

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;

reiter
Beiträge: 198
Registriert: Sa 18. Nov 2017, 16:58

Re: ext. Programme starten (VLC)

Beitrag von reiter »

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: 198
Registriert: Sa 18. Nov 2017, 16:58

Re: ext. Programme starten (VLC)

Beitrag von reiter »

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 Mi 2. Okt 2019, 22:23, insgesamt 1-mal geändert.

sstvmaster
Beiträge: 342
Registriert: Sa 22. Okt 2016, 23:12
OS, Lazarus, FPC: OS: Windows 10 | Lazarus: 2.0.8 + Fixes + Trunk 32bit
CPU-Target: 32Bit
Wohnort: Dresden

Re: ext. Programme starten (VLC)

Beitrag von sstvmaster »

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

reiter
Beiträge: 198
Registriert: Sa 18. Nov 2017, 16:58

Re: ext. Programme starten (VLC)

Beitrag von reiter »

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: 198
Registriert: Sa 18. Nov 2017, 16:58

Re: ext. Programme starten (VLC)

Beitrag von reiter »

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: 198
Registriert: Sa 18. Nov 2017, 16:58

Re: ext. Programme starten (VLC)

Beitrag von reiter »

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 Mo 7. Okt 2019, 08:27, insgesamt 1-mal geändert.

pluto
Lazarusforum e. V.
Beiträge: 7092
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: ext. Programme starten (VLC)

Beitrag von pluto »

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

reiter
Beiträge: 198
Registriert: Sa 18. Nov 2017, 16:58

Re: ext. Programme starten (VLC)

Beitrag von reiter »

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

wp_xyz
Beiträge: 3271
Registriert: Fr 8. Apr 2011, 09:01

Re: ext. Programme starten (VLC)

Beitrag von wp_xyz »

Wird das eine "LazMediathekView"?

reiter
Beiträge: 198
Registriert: Sa 18. Nov 2017, 16:58

Re: ext. Programme starten (VLC)

Beitrag von reiter »

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

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 4187
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Niederösterreich
Kontaktdaten:

Re: ext. Programme starten (VLC)

Beitrag von af0815 »

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).

reiter
Beiträge: 198
Registriert: Sa 18. Nov 2017, 16:58

Re: ext. Programme starten (VLC)

Beitrag von reiter »

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: 198
Registriert: Sa 18. Nov 2017, 16:58

Re: ext. Programme starten (VLC)

Beitrag von reiter »

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) 105-mal heruntergeladen

Antworten