Italian community of Lazarus and Free Pascal

Programmazione => Generale => Topic aperto da: sekoto - Maggio 21, 2014, 07:49:21 pm

Titolo: Riprodurre mp3 con lazarus
Inserito da: sekoto - Maggio 21, 2014, 07:49:21 pm
Salve a tutti, volevo sapere se esiste un modo per riprodurre un file mp3 con lazarus sotto linux (Raspbian).
Ho provato ad installare i componenti ACS ma non ci sono riuscito (al dire il vero non ci sono riuscito nenahce sul fisso), anzi mi hanno creato un casino ho dovuto disinstallare lazarus ed installarlo di nuovo e ho dovuto riscrivere da capo il mio programma. Dunque esiste un modo per riprodurre mp3 usando lazarus nudo e crudo e magari associandolo a qualche comando linux??

Grazie mille
Titolo: Re:Riprodurre mp3 con lazarus
Inserito da: xinyiman - Maggio 21, 2014, 09:24:45 pm
http://wiki.lazarus.freepascal.org/Multimedia_Programming#Playing_Sounds

In particolare darei un occhiata a BASS
Titolo: Re:Riprodurre mp3 con lazarus
Inserito da: nomorelogic - Maggio 22, 2014, 09:05:39 am
dai un'occhiata anche qua
http://members.adug.org.au/2011/12/19/delphi-headers-now-available-for-vlc/ (http://members.adug.org.au/2011/12/19/delphi-headers-now-available-for-vlc/)

tempo fa, con delphi, ho fatto un totem multimediale usando VLC ed una libreria pascal
(usare VLC ti mette al riparo da un sacco di problemi legati ai codec ed ai vari formati)
Titolo: Re:Riprodurre mp3 con lazarus
Inserito da: varianus - Maggio 22, 2014, 10:56:02 am
Citazione
(usare VLC ti mette al riparo da un sacco di problemi legati ai codec ed ai vari formati)

Gli header per VLC oltretutto sono già compresi nei packages di FPC (almeno nel 2.6.4).

Se guardi nella directory dei sorgenti di FPC nella sotto-cartella packages\libvlc ci sono l'header, una unit che definisce delle classi per incapsularlo e anche qualche esempio già fatto.

Un'altra soluzione che richiede solo l'installazione delle librerie Portaudio e Libmpg123 è usare UOS (United OpenLib of Sound), che trovi sempre nella pagina citata da xinyiman. Non è proprio il massimo della chiarezza come codice, ma funziona abbastanza bene.

Titolo: Re:Riprodurre mp3 con lazarus
Inserito da: nomorelogic - Maggio 22, 2014, 11:21:09 am
Se guardi nella directory dei sorgenti di FPC nella sotto-cartella packages\libvlc ci sono l'header, una unit che definisce delle classi per incapsularlo e anche qualche esempio già fatto.

questa me l'ero proprio persa, dovrò darci un'occhiata! :)
Titolo: Re:Riprodurre mp3 con lazarus
Inserito da: sekoto - Maggio 23, 2014, 09:55:18 pm
la libreria per vlc non riesco ad installarla... anzi non so come installarla... non c'è un pakage!!! :(
Titolo: Re:Riprodurre mp3 con lazarus
Inserito da: Stilgar - Maggio 25, 2014, 04:14:25 pm
Magari questo è d'aiuto.

https://sourceforge.net/projects/lazplayer/

Stilgar
Titolo: Re:Riprodurre mp3 con lazarus
Inserito da: sekoto - Maggio 26, 2014, 09:56:48 pm
Ho visto che usa audorra ma non so installarlo...
Titolo: Re:Riprodurre mp3 con lazarus
Inserito da: nomorelogic - Maggio 27, 2014, 08:50:43 am
la libreria per vlc non riesco ad installarla... anzi non so come installarla... non c'è un pakage!!! :(

se guardi nei sorgenti di fpc (packages/libvlc/src), trovi il file libvlc.pp e, al suo interno c'è dichiarato:

Codice: [Seleziona]
{$mode objfpc}
unit libvlc;
interface

uses
  ctypes;

{$IFDEF FPC}
{$PACKRECORDS C}
{$ENDIF}

Const

{$ifdef unix}
  libname = 'libvlc.so.5';
{$else}
{$ifdef windows}
  DefaultlibPath = 'C:\Program files\Videolan\VLC\';
  corelibname    = 'libvlccore.dll';
  libname        = 'libvlc.dll';
{$endif}
{$endif}

quindi prova a cercare libvlc nel gestore dei pacchetti della raspbian ed installala.
Se non trovi libvlc.so.5 ma qualcosa di diverso (ad esempio ".6") devi fare un link simbolico.
Nella stessa cartella trovi anche vlc.pp dove all'interno è dichiarata la classe TVLCLibrary.

C'è anche la cartella "example", prova a compilare il progetto testvlc dopo aver installato la libreria come detto sopra.

ah... facci sapere ;)
Titolo: Re:Riprodurre mp3 con lazarus
Inserito da: sekoto - Maggio 29, 2014, 09:09:18 pm
Salve, allora dei vostri consigli non sono riuscito a combinare niente, di certo il problema sono io e non voi!!! Comunque, per conto mio, avevo provato un'altra soluzione:

Ho installato mplayer ed inserito nella form un componente dialog e poi ho aggiunto il seguente codice ad un pulsante:

Codice: [Seleziona]
if OpenDialog1.Execute then
fpsystem('mplayer ' + OpenDialog1.Filename)

Il mio metodo funziona solo che durante la riproduzione del brano la mia applicazione si blocca fino a quando il brano non termina. Come posso risolvere questo problema???

Grazie mille.
Titolo: Re:Riprodurre mp3 con lazarus
Inserito da: xinyiman - Maggio 30, 2014, 06:57:04 pm
Dovresti provare con un applicazione multithread, in cui la canzone la lanci da un thread figlio.
Titolo: Re:Riprodurre mp3 con lazarus
Inserito da: sekoto - Maggio 30, 2014, 07:11:52 pm
Dovresti provare con un applicazione multithread, in cui la canzone la lanci da un thread figlio.
Mi spiegheresti meglio come funziona questa cosa??
Magari con un esempio (come fai di solito!!!)
Grazie mille
Titolo: Re:Riprodurre mp3 con lazarus
Inserito da: nomorelogic - Maggio 30, 2014, 07:12:26 pm
Codice: [Seleziona]
if OpenDialog1.Execute then
fpsystem('mplayer ' + OpenDialog1.Filename)

Il mio metodo funziona solo che durante la riproduzione del brano la mia applicazione si blocca fino a quando il brano non termina. Come posso risolvere questo problema???

prova con:
Codice: [Seleziona]
fpsystem('mplayer ' + OpenDialog1.Filename + ' &') 
Titolo: Re:Riprodurre mp3 con lazarus
Inserito da: xinyiman - Maggio 30, 2014, 07:29:08 pm
Codice: [Seleziona]
if OpenDialog1.Execute then
fpsystem('mplayer ' + OpenDialog1.Filename)

Il mio metodo funziona solo che durante la riproduzione del brano la mia applicazione si blocca fino a quando il brano non termina. Come posso risolvere questo problema???

prova con:
Codice: [Seleziona]
fpsystem('mplayer ' + OpenDialog1.Filename + ' &') 

Nomore questa è superiorità intellettuale :)
Titolo: Re:Riprodurre mp3 con lazarus
Inserito da: nomorelogic - Maggio 30, 2014, 07:45:47 pm
se fai così poi mi gaso ;)

cmq è un modo per perseverare in questa strada che credo non sia il modo giusto
ma raggiungere il risultato a volte è necessario per trovare poi il modo giusto ;P


Edit:
il modo giusto potrebbe essere usare TProcess
Titolo: Re:Riprodurre mp3 con lazarus
Inserito da: sekoto - Maggio 30, 2014, 10:04:06 pm
se fai così poi mi gaso ;)

cmq è un modo per perseverare in questa strada che credo non sia il modo giusto
ma raggiungere il risultato a volte è necessario per trovare poi il modo giusto ;P


Edit:
il modo giusto potrebbe essere usare TProcess


Un esempio???
Titolo: Re:Riprodurre mp3 con lazarus
Inserito da: sekoto - Maggio 30, 2014, 10:12:11 pm
non so perchè ma la mia soluzione funziona solo su raspberry... Ho provato su Xubuntu 14.04 ma non si sente niente... Come mai?
Titolo: Re:Riprodurre mp3 con lazarus
Inserito da: nomorelogic - Maggio 31, 2014, 10:35:35 am
Un esempio???

quì c'è il link sul wiki in inglese
http://wiki.lazarus.freepascal.org/Executing_External_Programs#TProcess

se cambi lingua e metti l'italiano mancano delle informazioni ma come esempio può andare comunque