Audiodatei abspielen Platformübergreifend
- 
				DL3AD
- Beiträge: 478
- Registriert: Fr 13. Sep 2013, 12:07
- OS, Lazarus, FPC: Debian Bullseye (L 2.2.0)
- CPU-Target: 64Bit
- Wohnort: Rügen
Audiodatei abspielen Platformübergreifend
Hallo,
ich möchte eine Art Daemon bauen der bei einem bestimmten UDP Paket eine Audiodatei im Hintergrund abspielt ohne einen sichtbaren Player.
Wie kann ich eine Audiodatei .ogg oder mp3 platformübergreifend im Hintergrund abspielen ?
Gruß
Frank
			
			
									
									
						ich möchte eine Art Daemon bauen der bei einem bestimmten UDP Paket eine Audiodatei im Hintergrund abspielt ohne einen sichtbaren Player.
Wie kann ich eine Audiodatei .ogg oder mp3 platformübergreifend im Hintergrund abspielen ?
Gruß
Frank
- 
				mse
- Beiträge: 2013
- Registriert: Do 16. Okt 2008, 10:22
- OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
- CPU-Target: x86,x64,ARM
Re: Audiodatei abspielen Platformübergreifend
z.B. mit Freds UOS.
https://github.com/fredvs/uos
			
			
									
									
						https://github.com/fredvs/uos
- 
				DL3AD
- Beiträge: 478
- Registriert: Fr 13. Sep 2013, 12:07
- OS, Lazarus, FPC: Debian Bullseye (L 2.2.0)
- CPU-Target: 64Bit
- Wohnort: Rügen
Re: Audiodatei abspielen Platformübergreifend
... hmmm da sind jede menge Dateien   
 
soll das ein Paket sein das installiert werden muss ?
Wie spiele ich denn nun eine Sounddatei ab ?
			
			
									
									
						 
 soll das ein Paket sein das installiert werden muss ?
Wie spiele ich denn nun eine Sounddatei ab ?
- 
				mse
- Beiträge: 2013
- Registriert: Do 16. Okt 2008, 10:22
- OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
- CPU-Target: x86,x64,ARM
Re: Audiodatei abspielen Platformübergreifend
Im "examples" Verzeichnis sind viele Beispiele, z.B.
In Funktion sieht man UOS auch in diesem Projekt:
http://www.lazarusforum.de/viewtopic.php?f=53&t=11100
			
			
									
									
						Code: Alles auswählen
 
program consoleplay;
 
///WARNING : if FPC version < 2.7.1 => Do not forget to uncoment {$DEFINE consoleapp} in define.inc !
 
{$mode objfpc}{$H+}
   {$DEFINE UseCThreads}
uses
{$IFDEF UNIX}
  cthreads, 
  cwstring, {$ENDIF}
  Classes,
  SysUtils,
  CustApp,
  uos_flat;
 
type
 
  { TUOSConsole }
 
  TuosConsole = class(TCustomApplication)
  private
    procedure ConsolePlay;
  protected
    procedure doRun; override;
  public
    constructor Create(TheOwner: TComponent); override;
  end;
 
var
  res: integer;
  ordir, opath, SoundFilename, PA_FileName, SF_FileName, MP_FileName: string;
  PlayerIndex1, InputIndex1, OutputIndex1 : integer;
 
  { TuosConsole }
 
  procedure TuosConsole.ConsolePlay;
  begin
    ordir := IncludeTrailingBackslash(ExtractFilePath(ParamStr(0)));
 
 {$IFDEF Windows}
     {$if defined(cpu64)}
    PA_FileName := ordir + 'lib\Windows\64bit\LibPortaudio-64.dll';
    SF_FileName := ordir + 'lib\Windows\64bit\LibSndFile-64.dll';
     {$else}
    PA_FileName := ordir + 'lib\Windows\32bit\LibPortaudio-32.dll';
    SF_FileName := ordir + 'lib\Windows\32bit\LibSndFile-32.dll';
     {$endif}
    SoundFilename := ordir + 'sound\test.ogg';
 {$ENDIF}
 
     {$if defined(cpu64) and defined(linux) }
    PA_FileName := ordir + 'lib/Linux/64bit/LibPortaudio-64.so';
    SF_FileName := ordir + 'lib/Linux/64bit/LibSndFile-64.so';
    SoundFilename := ordir + 'sound/test.ogg';
   {$ENDIF}
 
   {$if defined(cpu86) and defined(linux)}
    PA_FileName := ordir + 'lib/Linux/32bit/LibPortaudio-32.so';
    SF_FileName := ordir + 'lib/Linux/32bit/LibSndFile-32.so';
   SoundFilename := ordir + 'sound/test.ogg';
 {$ENDIF}
 
  {$if defined(linux) and defined(cpuarm)}
    PA_FileName := ordir + 'lib/Linux/arm_raspberrypi/libportaudio-arm.so';
    SF_FileName := ordir + ordir + 'lib/Linux/arm_raspberrypi/libsndfile-arm.so';
      SoundFilename := ordir + 'sound/test.ogg';
 {$ENDIF}
 
 {$IFDEF freebsd}
    {$if defined(cpu64)}
    PA_FileName := ordir + 'lib/FreeBSD/64bit/libportaudio-64.so';
    SF_FileName := ordir + 'lib/FreeBSD/64bit/libsndfile-64.so';
    {$else}
    PA_FileName := ordir + 'lib/FreeBSD/32bit/libportaudio-32.so';
    SF_FileName := ordir + 'lib/FreeBSD/32bit/libsndfile-32.so';
    {$endif}
    SoundFilename := ordir + 'sound/test.ogg';
 {$ENDIF}
 
 {$IFDEF Darwin}
    opath := ordir;
    opath := copy(opath, 1, Pos('/UOS', opath) - 1);
    PA_FileName := opath + '/lib/Mac/32bit/LibPortaudio-32.dylib';
    SF_FileName := opath + '/lib/Mac/32bit/LibSndFile-32.dylib';
    SoundFilename := opath + '/sound/test.ogg';
 {$ENDIF}
 
    // Load the libraries
   // function uos_loadlib(PortAudioFileName, SndFileFileName, Mpg123FileName, Mp4ffFileName, FaadFileName,  opusfilefilename: PChar) : LongInt;
 
   res := uos_LoadLib(Pchar(PA_FileName), Pchar(SF_FileName), nil, nil, nil, nil) ;
 
    writeln;
    if res = 0 then
     writeln('Libraries are loaded.')
     else
    writeln('Libraries did not load.');
 
   if res = 0 then begin
 
    //// Create the player.
    //// PlayerIndex : from 0 to what your computer can do !
    //// If PlayerIndex exists already, it will be overwriten...
 
  PlayerIndex1 := 0;
 
  if uos_CreatePlayer(PlayerIndex1) then
 
  begin
 
    //// add a Input from audio-file with default parameters
    //////////// PlayerIndex : Index of a existing Player
    ////////// FileName : filename of audio file
    //  result : -1 nothing created, otherwise Input Index in array
 
    InputIndex1 := uos_AddFromFile(PlayerIndex1,(pchar(SoundFilename)));
    if InputIndex1 > -1 then
 
    //// add a Output into device with default parameters
    //////////// PlayerIndex : Index of a existing Player
    //  result : -1 nothing created, otherwise Output Index in array
 
    {$if defined(cpuarm)}  // need a lower latency
        OutputIndex1 := uos_AddIntoDevOut(PlayerIndex1, -1, 0.3, -1, -1, -1, -1) ;
       {$else}
       OutputIndex1 := uos_AddIntoDevOut(PlayerIndex1);
       {$endif}
 
    if OutputIndex1 > -1 then 
    begin
 
    /////// everything is ready, here we are, lets play it...
    uos_Play(PlayerIndex1);
    sleep(1000);
    writeln;   
    writeln('Title: ' + uos_InputGetTagTitle(PlayerIndex1, InputIndex1));
    sleep(1500);
    writeln; 
    writeln('Artist: ' + uos_InputGetTagArtist(PlayerIndex1, InputIndex1));
    writeln;  
 
    sleep(3000);
   end;
 end;
end;
 
end;
 
  procedure TuosConsole.doRun;
  begin
    ConsolePlay;
    writeln('Press a key to exit...');
    readln;
    Terminate;
    uos_free(); // Do not forget this !
  end;
 
constructor TuosConsole.Create(TheOwner: TComponent);
  begin
    inherited Create(TheOwner);
    StopOnException := True;
  end;
 
var
  Application: TUOSConsole;
begin
  Application := TUOSConsole.Create(nil);
  Application.Title := 'Console Player';
  Application.Run;
  Application.Free;
end.
 http://www.lazarusforum.de/viewtopic.php?f=53&t=11100
Re: Audiodatei abspielen Platformübergreifend
Je nachdem, wie weit deine Anforderung nach Plattformunabhängigkeit reicht, könnte auch das sehr einfache playsoundpackage auf ccr (https://sourceforge.net/p/lazarus-ccr/s ... ndpackage/) in Frage kommen. Funktioniert auf Windows und Linux; bei letzterem werden einfach die im System vorhandenen Wiedergabemöglichkeiten gesucht und als sekundärer Prozess gestartet. Letzendlich braucht man nur die knapp 300 Zeilen lange Unit.
			
			
									
									
						- 
				DL3AD
- Beiträge: 478
- Registriert: Fr 13. Sep 2013, 12:07
- OS, Lazarus, FPC: Debian Bullseye (L 2.2.0)
- CPU-Target: 64Bit
- Wohnort: Rügen
Re: Audiodatei abspielen Platformübergreifend
DANKE - ich wußte doch, dass so etwas simples, nicht so kompliziert sein kann.  
			
			
									
									
						
- 
				pluto
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: Audiodatei abspielen Platformübergreifend
Ich habe mit der vlclib gute Erfahrung machen können. Ich meine sogar eine Version liegt Lazarus sogar schon bei.
			
			
									
									MFG
Michael Springwald
						Michael Springwald
- 
				DL3AD
- Beiträge: 478
- Registriert: Fr 13. Sep 2013, 12:07
- OS, Lazarus, FPC: Debian Bullseye (L 2.2.0)
- CPU-Target: 64Bit
- Wohnort: Rügen
Re: Audiodatei abspielen Platformübergreifend
DANKE pluto - werde ich auch mal testen.
Mit dem playsoundpackage funktioniert es jedenfalls schon mal 1A 
 
Gruß Frank
			
			
									
									
						Mit dem playsoundpackage funktioniert es jedenfalls schon mal 1A
 
 Gruß Frank
 Verein
Verein 
 Links
Links Suche
Suche