[gelöst] Mediaplayer einbinden

Für Probleme bezüglich Grafik, Audio, GL, ACS, ...
Antworten
Benutzeravatar
juelin
Beiträge: 323
Registriert: Sa 24. Jul 2021, 18:03
OS, Lazarus, FPC: Linux Ubuntu 22. Windows 10 Delphi 11.3 (L 0.9.xy FPC 2.2.z)
CPU-Target: 64Bit
Wohnort: Mannheim

[gelöst] Mediaplayer einbinden

Beitrag von juelin »

Hallo,
ich habe Lazarus 4.2 und FPC 3.2.2 unter Windows 11.
Nun würde ich gerne mp3-Files abspielen.
Es gibt in Lazarus aber keine Komponente Mediaplayer (warum nicht)?
Da muss man wohl selber eine Kompontet einbinden.
Zu welcher Komponete würdet Ihr mir raten?
Am besten so wie in Delphi.
Wo laden ich die Komponete runter und wie binde ich sie ein?.
Danke für Eure Tipps.
Schönes Wochenende und Gruß
Jürgen
Zuletzt geändert von juelin am Sa 4. Okt 2025, 19:59, insgesamt 1-mal geändert.

Benutzeravatar
theo
Beiträge: 11015
Registriert: Mo 11. Sep 2006, 19:01

Re: Mediaplayer einbinden

Beitrag von theo »

Hier gibt es eine Auswahl: https://wiki.freepascal.org/Audio_libraries
Ich benutze BASS.

Mathias
Beiträge: 7056
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: [gelöst] Mediaplayer einbinden

Beitrag von Mathias »

Nun würde ich gerne mp3-Files abspielen.
Wen du nur einfach eine mp3 abspielen willst, kannst du SDL 1.x nehmen, welches bei Lazarus schon dabei ist.
Und wen es recht anspruchsvoll sein soll, würde ich gstreamer nehmen.

Unter Linux laufen diese Player alle auf anhieb, auf Windows muss man leider die benötigten DLLs zusammensuchen.
Das ist bei Theos Vorschlag leider auch so.

Oder wen es wirklich ganz einfach sein soll und nur unter Windows gehen soll , dann binde die mciSendStringA von der WinAPI ein.
Ich habe da ein kleine C-Beispiel, welches sich sehr einfach umsetzen lässt.

Code: Alles auswählen

// x86_64-w64-mingw32-gcc -o main main.c -lwinmm

#include <windows.h>
#include <mmsystem.h>
#include <stdio.h>

int main() {
    const char* mp3File = "test.mp3";

    mciSendStringA("close mp3", NULL, 0, NULL);  
    char command[256];
    sprintf(command, "open \"%s\" type mpegvideo alias mp3", "test.mp3");
    mciSendStringA(command, NULL, 0, NULL);

    mciSendStringA("play mp3", NULL, 0, NULL);

    printf("<Enter> = Beenden...\n");
    getchar();

    mciSendStringA("close mp3", NULL, 0, NULL);

    return 0;
}
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Mathias
Beiträge: 7056
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: [gelöst] Mediaplayer einbinden

Beitrag von Mathias »

In Pascal sieht dies so aus:

Code: Alles auswählen

uses
  Windows,
  SysUtils;

  function mciSendStringA(lpstrCommand: pansichar; lpstrReturnString: pansichar; uReturnLength: UINT; hwndCallback: HWND): cardinal; stdcall; external 'winmm.dll';

var
  command: ansistring;
begin
  mciSendStringA('close mp3', nil, 0, 0);

  command := 'open "test.mp3" type mpegvideo alias mp3';
  mciSendStringA(pansichar(command), nil, 0, 0);

  mciSendStringA('play mp3', nil, 0, 0);

  WriteLn('<Enter> = Beenden...');
  ReadLn;

  mciSendStringA('close mp3', nil, 0, 0);
end.                      
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Antworten