Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Video über VLC abspielen? (https://www.delphipraxis.net/140554-video-ueber-vlc-abspielen.html)

gandime 20. Sep 2009 21:20


Video über VLC abspielen?
 
Hi,
ich versuche ein Video mit dem VLC Player abspielen... aber es funktioniert nicht!
meine bisherigen verusche:
Delphi-Quellcode:
function GetConsoleOutput(const Command: String; var Output, Errors: TStringList): Boolean;
var
  StartupInfo: TStartupInfo;
  ProcessInfo: TProcessInformation;
  SecurityAttr: TSecurityAttributes;
  PipeOutputRead: THandle;
  PipeOutputWrite: THandle;
  PipeErrorsRead: THandle;
  PipeErrorsWrite: THandle;
  Succeed: Boolean;
  Buffer: array [0..255] of Char;
  NumberOfBytesRead: DWORD;
  Stream: TMemoryStream;
begin
  //Initialisierung ProcessInfo
  FillChar(ProcessInfo, SizeOf(TProcessInformation), 0);

  //Initialisierung SecurityAttr
  FillChar(SecurityAttr, SizeOf(TSecurityAttributes), 0);
  SecurityAttr.nLength := SizeOf(SecurityAttr);
  SecurityAttr.bInheritHandle := true;
  SecurityAttr.lpSecurityDescriptor := nil;

  //Pipes erzeugen
  CreatePipe(PipeOutputRead, PipeOutputWrite, @SecurityAttr, 0);
  CreatePipe(PipeErrorsRead, PipeErrorsWrite, @SecurityAttr, 0);

  //Initialisierung StartupInfo
  FillChar(StartupInfo, SizeOf(TStartupInfo), 0);
  StartupInfo.cb:=SizeOf(StartupInfo);
  StartupInfo.hStdInput := 0;
  StartupInfo.hStdOutput := PipeOutputWrite;
  StartupInfo.hStdError := PipeErrorsWrite;
  StartupInfo.wShowWindow := sw_Hide;
  StartupInfo.dwFlags := STARTF_USESHOWWINDOW or STARTF_USESTDHANDLES;

  if CreateProcess(nil, PChar(command), nil, nil, true,
  CREATE_DEFAULT_ERROR_MODE or CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil, nil,
  StartupInfo, ProcessInfo) then begin
    result:=true;
    //Write-Pipes schließen
    CloseHandle(PipeOutputWrite);
    CloseHandle(PipeErrorsWrite);

    //Ausgabe Read-Pipe auslesen
    Stream := TMemoryStream.Create;
    try
      while true do begin
        succeed := ReadFile(PipeOutputRead, Buffer, 255, NumberOfBytesRead, nil);
        if not succeed then break;
        Stream.Write(Buffer, NumberOfBytesRead);
      end;
      Stream.Position := 0;
      Output.LoadFromStream(Stream);
    finally
      Stream.Free;
    end;
    CloseHandle(PipeOutputRead);

    //Fehler Read-Pipe auslesen
    Stream := TMemoryStream.Create;
    try
      while true do begin
        succeed := ReadFile(PipeErrorsRead, Buffer, 255, NumberOfBytesRead, nil);
        if not succeed then break;
        Stream.Write(Buffer, NumberOfBytesRead);
      end;
      Stream.Position := 0;
      Errors.LoadFromStream(Stream);
    finally
      Stream.Free;
    end;
    CloseHandle(PipeErrorsRead);

    WaitForSingleObject(ProcessInfo.hProcess, INFINITE);
    CloseHandle(ProcessInfo.hProcess);
  end
  else begin
    result:=false;
    CloseHandle(PipeOutputRead);
    CloseHandle(PipeOutputWrite);
    CloseHandle(PipeErrorsRead);
    CloseHandle(PipeErrorsWrite);
  end;
end;

var
 s,sFile:String;
begin
  sFile:='C:\Videos\abc.avi';

  s:='C:\Program Files\VideoLAN\VLC\vnc.exe';

  GetConsoleOutput('"'+sFile+'"',sl,sl);

  GetConsoleOutput('"'+s+'" "'+sFile+'"',sl,sler);

  ZeroMemory(@StartInfo, SizeOf(TStartupInfo));
  StartInfo.cb := SizeOf(TStartupInfo);
  GetStartupInfo(StartInfo);
  StartInfo.wShowWindow := SW_NORMAL;
  CreateProcess(nil,Pchar('"'+s+'" "'+sFile+'"'),nil,nil,False,0,nil,nil,StartInfo,ProcInfo);

  CreateProcess(nil,Pchar('"'+s+'",nil,nil,False,0,nil,nil,StartInfo,ProcInfo);

  ShellExecute( handle, 'open', pchar('"'+s+'" "'+sFile+'"'),nil, nil, sw_show);

  shellexecute(application.handle,'open','vnc.exe',pchar('"'s'"'),'C:\Program Files\VideoLAN\VLC\',0);

  shellexecute( 0,'open',pchar('"'+extractfilename(sFile)+'"'),'',pchar('"'+extractfilepath(sFile)+'"'),0);
All das habe ich auch ohne " versucht!
Was mache ich falsch?

mfg
gandime

mkinzler 20. Sep 2009 21:27

Re: Video über VLC abspielen?
 
Was meinst du mit "geht nicht"?

Kruemel_02 20. Sep 2009 21:43

Re: Video über VLC abspielen?
 
- libvlc
- Is it possible to use libvlc.dll directly instead of ActiveX
- ActiveX-Komponente von "VideoLAN" nutzbar

gandime 20. Sep 2009 21:54

Re: Video über VLC abspielen?
 
die libVLC hab ich auch schon durch... ich verstehe einfach warum das dingen nicht starten will... wenn ich es z.B. manuell über cmd starte geht es ohne Probleme!
Diese gute Stück hab ich auch ausprobilert...

blauweiss 19. Nov 2009 14:23

Re: Video über VLC abspielen?
 
Hallo gandime,

ich habe gerade auf der Suche nach "VLC" diesen Thread gefunden.
Also daß es bei Dir nicht geht, liegt wohl zu 99.9999999% daran, daß Du das Programm "VNC.exe" zu starten versuchst anstelle "VLC.exe".....

Grüße,
blauweiss

DeddyH 19. Nov 2009 14:27

Re: Video über VLC abspielen?
 
[OT] *Pruuuust* :lol: , das haben aber auch wirklich alle übersehen (mich eingeschlossen) [/OT]


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