Home > Posts > Far funzionare il plugin Macromedia Flash con un server sonoro (PulseAudio o EsounD)

Far funzionare il plugin Macromedia Flash con un server sonoro (PulseAudio o EsounD)

13 Settembre 2007

Adobe, durante lo sviluppo del Flash Player (qui il link ad un post “dell’epoca”), ha fatto alcune scelte per semplificarsi la vita. Una di queste è stata quella di non supportare alcun server sonoro in particolare, ma soltanto ALSA. Se le cose fossero rimaste così com’erano descritte in quel momento, si sarebbe trattato, IMHO, di un grosso colpo di zappa sui piedi: un server sonoro, qualunque esso sia, è qualcosa che ritengo indispensabile per poter gestire appropriatamente, quantomeno in fase di riproduzione, l’utilizzo delle periferiche sonore da parte di più programmi.

Per fortuna, Adobe ha avuto un’idea più felice:

Adobe sta sviluppando Flash Player 9 per Linux. Dato che GNU/Linux, e le sue molte componenti, è una piattaforma che permettem olte scelte, Adobe supporterà formalmente alcune distribuzioni di Linux in particolare.Alcune componenti cambiano di frequente — in particolare, audio, socket sicuri ed Unicode. Per permettere a Flash Player di adattarsi a queste variazioni, stiamo fornendo delle implementazioni predefinite per l’audio, i socket sicuri e l’Unicode, e reso disponibile agli sviluppatori una API perchè possano adattare queste ambiti (di funzionamento, ndr) a qualunque configurazione Linux. Adobe sta fornendo questo livello di supporto nella forma di una libreria a collegamento dinamico open-source chiamata libflashsupport. Questa libreria permetterà alle distribuzioni non supportate esplicitamente da Adobe di assicurarsi una fruizione completa del Flash Player. Stiamo incoraggiando la comunità di Linux a far esperimenti con libflashsupport per assicurarci che vada incontro alle sue aspettative.

Piccola premessa: io sono un sostenitore di EsounD.

OK, OK, lo so: non è più sviluppato, non è bello e potente come ARTS, Jack o altro ancora; il fatto è che resto impressionato dalla semplicità con cui può essere messo in funzione su un “desktop non integrato”, ossia su qualcosa che non sia GNOME o KDE-based – basta un semplice esd & piazzato da qualche parte, e quasi tutto si mette a funzionare. Anche distribuzioni particolarmente attente all’utente finale, come Ubuntu, seppure si appoggino a dmix (tanto per citare una delle numerose soluzioni possibili), sfruttano EsounD, sospetto per la facilità di implementazione e l’immediatezza di funzionamento.

Comunque sia, torniamo al link di poco fa: se si continua a leggere quella pagina, si trova il link ad un file sorgente C, libflashplayer.c. Si tratta un’esempio di utilizzo della libreria di cui sopra che di suo fa next to nothing, un’espressione che, in dialetto palermitano si tradurrebbe con nulla miscato cu nenti (nulla mischiato con niente), ovvero non serve ad un tubo.

La buona notizia in questa valle di lacrime è che i tipi di RevolutionLinux, nell’ambito dello sviluppo del loro server sonoro, PulseAudio, hanno preso quel file di esempio e hanno modificato la parte relativa all’audio in modo tale che cerchi, in quest’ordine:

  • PulseAudio
  • EsounD
  • ALSA
  • OSS

Che dire, buono, no? Direi di passare all’azione :-)

Come avrete capito se avete già letto qualche altro mio post, non sono favorevole all’uso ”allegro” di repository custom:
preferisco, nel caso non sia possibile creare un pacchetto a partire dai sorgenti contenuti in un ramo qualsiasi della distribuzione che sto usando, affidarmi alla buona vecchia trafila configure; make; make install.

Voi, ovviamente,  potete anche comportarvi in maniera diversa – non mancano, infatti, pacchetti precompilati per la libreria: poi, però, non venite a piangere nei commenti se qualcosa non funziona come dovrebbe in seguito alla vostra scelta ;-)

  1. Scarichiamo i sorgenti con svn co https://svn.revolutionlinux.com/MILLE/XTERM/trunk/libflashsupport/src
  2. Diamo un make; make install
  3. Fine :-D .

A me non è servito fare altro: dopo aver riavviato il browser (Opera) ho cominciato a sentire il suono di un filmato di YouTube.

Da notare che, come nel mio caso, questo metodo funziona benissimo anche all’interno di una chroot (sì, avete capito bene: una chroot a 32 bit sul mio sitema AMD64), a patto che il browser e il plugin siano già installati al suo interno, e la libreria venga ivi compilata.

[via PulseAudio - Revolution Linux OpenSource projects]

  1. 13 Settembre 2007 alle 0:52 | #1

    interessante, io avevo un po’ di info su come impostare a dovere PulsaAudio e relative app… chissà dove è finito :)

    Credo che PulseAudio *possa* essere un degno erede di Esound, ho letto davvero grandi cose

  2. 13 Settembre 2007 alle 0:57 | #2

    @felipe: Onorato del tuo commento. Se riesci a far uscire queste informazioni, e il loro uso riesce a essere _più semplice_ di quello di EsounD, sono pronto a fare il salto :)

    (oddio, potrei anche andarmele a cercare, ma non sono un fan sfegatato della sperimentazione in campo sonoro, anche perchè mi ritengo abbastanza ignorante in materia)

  3. barbara
    17 Settembre 2007 alle 18:50 | #3

    salve,
    sono da qualche giorno alla scoperta di ubuntu.. e sto installando tutti i miei preferiti a partire da Opera.. ed ecco la necessità di caricare flash player.. ho seguito la procedura “ufficiale”, poi ho tentato copiando direttamente la libreria ed infine ho provato il tuo suggerimento che mi sembra anche più “divertente”.. ma niente vado a compilare con make; make install e mi da una montagna di errori.. cosa devo controllare?? e soprattuto come??
    grazie comunque

  4. 18 Settembre 2007 alle 0:48 | #4

    barbara: Mi servirebbe qualche dettaglio in più sulla tua configurazione, e quali errori riscontri. Incolla i messaggi d’errore qui: ti sarà restituito un link che potrai mettere in un nuovo commento.

    P.S. Tieni inoltre presente che

    Il metodo proposto qui non sostituisce la normale copia dei file libflashplugin.so e flashplayer.xpt nella directory plugin nel browser: serve solo a fare funzionare il plugin quando un server sonoro, come EsounD regola l’accesso alla scheda audio.
    Dovresti provare a copiare i due file di cui sopra in /usr/share/opera/plugins /usr/lib/opera/plugins (per un’installazione di default), visto che usi Opera, dal momento che non è detto che esistano le corrispondenti directory per i vari Mozilla Firefox/Seamonkey (che sono di default nel 90% delle distribuzioni, però, e che vengono sondate comunque da Opera).

  5. barbara
    18 Settembre 2007 alle 20:47 | #5

    il comando “sudo” ha questo nome per l’effetto che provoca?? le mie colleghe prof stamane hanno riso.. :) (ridotta male la scuola italiana!!)beh non sono in classe mi tocca fare le seria!!
    allora ho incollato i messaggi di errore.. URL: http://rafb.net/p/OsZIPV90.html come vedrai non sono completi mancano le prime righe..erano talmente tanti che non entravano nella finestra del terminale!!
    pensavo c’entra niente la versione del compilatore c??
    i dettagli che chiedevi ho appena installato Ubuntu feisty 7.04 la versione di opera è la 9.23 per linux..tutto è iniziato perchè opera non mi apre la pagina della mia posta e mi chiedeva appunto il flash player..aprivo il sito che piace a mio nipote con la musica e stava zitto.. l’ho scaricato e installato.. ma niente..ho copiato i due file sia dentro usr/lib/opera/plugins poi stasera leggendoti l’ho fatto anche in usr/share/opera..e ho dovuto creare la dir plugins..
    e quando apre la pagina di opera plugin mi dice che cè
    Shockwave Flash
    application/futuresplash spl
    application/x-shockwave-flash swf
    /usr/lib/opera/plugins/libflashplayer.so

    e lo stesso in
    /usr/share/opera/plugins/libflashplayer.so
    ma nulla di nulla.. ne musica ne email.. e firefox non mi piacee. eppure il video sul software libero che hai messo sulla tua pagina riesco a vederlo e sentirlo!! In generale ho imparato qualcosa in più su linux certo ho ancora molti buchi sarà per questo che ho difficoltà a convincere i miei studenti ad usarlo!!!Non so forse sono andata fuori tema rispetto al tuo lavoro.. ma qualsiasi suggerimento è accettatissimo

  6. 18 Settembre 2007 alle 21:10 | #6

    @barbara:

    il comando “sudo” ha questo nome per l’effetto che provoca?? le mie colleghe prof stamane hanno riso.. (ridotta male la scuola italiana!!)beh non sono in classe mi tocca fare le seria!!

    AHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHA :-D

    allora ho incollato i messaggi di errore.. URL: http://rafb.net/p/OsZIPV90.html come vedrai non sono completi mancano le prime righe..erano talmente tanti che non entravano nella finestra del terminale!!

    Nessun problema, quel che hai incollato è abbastanza.

    pensavo c’entra niente la versione del compilatore c??

    Diciamo che ci sei vicina. Il problema qui è che ti mancano alcuni pacchetti contenenti gli header per alcuni componenti che vengono usati dalla libreria, come OpenSSL. Ubuntu ha scelto di non fornire questi pacchetti con l’installazione predefinita (da CD), dal momento che non risultano di particolare uso per un normale utente – mentre a noi smanettoni servono :) Prova a fare

    sudo apt-get install build-essential libssl-dev esound

    aprivo il sito che piace a mio nipote con la musica e stava zitto.. l’ho scaricato e installato.. ma niente..

    Non so di che sito si tratti, ma ho come l’impressione che qui il problema non sia tanto Flash, quanto la mancanza di un plugin che riproduca il contenuto attivo (un po’ come fa Windows Media Player). Ce ne sono diversi, che si appoggiano a diversi riproduttori di file multimediali. Personalmente ti consiglio di fare

    sudo apt-get install mozilla-mplayer

    Purtroppo si porterà dietro anche Firefox, ma tieni presente che tutte le distribuzioni sono pensate per l’utilizzo di questo browser e di pochi altri, e non di Opera (che è anche il mio browser :) ), per motivi di licenza.

    ho copiato i due file sia dentro usr/lib/opera/plugins poi stasera leggendoti l’ho fatto anche in usr/share/opera..e ho dovuto creare la dir plugins..

    In questo caso hai fatto un lavoro di troppo: in /usr/share/opera risiedono i file della lingua, della guida ed altre cose, non i plugin. Ti ho fornito un’informazione sbagliata: quel che avevi fatto tu prima (copiare i file in /usr/lib/opera/plugins) è invece la procedura corretta (e quella che ti volevo dire di fare, ma capisci, a volte rispondendo verso l’una di notte si sbaglia: ora ho tagliato il percorso sbagliato :D )

    e quando apre la pagina di opera plugin mi dice che cè
    Shockwave Flash
    application/futuresplash spl
    application/x-shockwave-flash swf
    /usr/lib/opera/plugins/libflashplayer.so

    ma nulla di nulla.. ne musica ne email..

    Purtroppo temo, a questo punto, che dovremo giocare con altre cose (tipo il riconoscimento del browser da parte del tuo sito di webmail)

    eppure il video sul software libero che hai messo sulla tua pagina riesco a vederlo e sentirlo!!

    Questo vuol dire che:

    Il plugin Flash funziona perfettamente;
    Non ti serve nulla di quanto ho scritto qui: faccio riferimento a un caso limite, che non è la regola

    Non so forse sono andata fuori tema rispetto al tuo lavoro..

    Siccome il capo della baracca sono io, decreto unilateralmente e molto democraticamente che non l’hai fatto :D
    A parte gli scherzi, in realtà ci sono due posti “migliori” che puoi usare per farmi domande, pubblicizzati nella barra superiore:

    Se vuoi fare una domanda in pubblico, così che anche altri avventori possano rispondere, puoi scriverla qui
    Se invece vuoi contattarmi in privato, puoi mandarmi un’email scrivendola qui.

  7. axo
    10 Novembre 2007 alle 2:32 | #7

    Impesto ancora il tuo blog ma c’e’ una cosa, piccolissima, infinitesimale che non ho capito: allora, ho installato la chroot a 32bit sul mio sistema a 64bit, come da guida e vorrei installare i driver macromedia flash 9 (che sono solo a 32bit), li ho scaricati sul mio desktop.
    ok.
    Emmo’? :-D
    Ho eseguito dchroot e ho riscaricato da li i driver ma mi ritorna lo stesso errore di prima (driver non supportati sul tuo sistema a 64 bit… ma come? non ero dentro ad un sistema a 32bit?). Quindi annuncio pubblicamente che son tordo e non ho capito una beneamata m…ia di quello che hai scritto (ma il problema e’ mio, beninteso).
    Mettiamo che devo installare (oltre a sti ca..o di plugin di flash) un programma esterno che gira solo a 32bit (chesso’: Skype o anche un Enemy Territory) come devo procedere, in linea generale?
    Grazie, se avrai tempo e voglia di rispondere alle mie domande.

  8. 10 Novembre 2007 alle 16:34 | #8

    @axo: Seguendo la strada della chroot, anche il browser va installato da dentro la chroot. Stessa cosa dicasi per Skype. Quando finisci l’installazione, esci dalla chroot e crei un collegamento simbolico a /usr/local/bin/do_dchroot denominato come il programma che vorresti avviare, per rendere trasparente il passaggio.

  9. axo
    10 Novembre 2007 alle 18:39 | #9

    Quindi devo reinstallare TUTTO il browser (con i plugin quindi) da dentro la chroot e poi modificare il link di avvio perche’ richiami la versione a 32bit?
    Cmq, un problema logistico… dove trovo una lista dei pacchetti installabili? O anche, come faccio da un’esigenza arrivare al nome del pacchetto da scaricare con apt-get? Voglio dire: so che mi serve firefox (in questo caso) o un programma qualunque e non voglio passare dall’interfaccia grafica. Come faccio?
    E poi, altro problema, sono entrato nella chroot e ho installato firefox, apro il .tar.gz dei plugin e avvio l’installazione e mi da:
    ERROR: Your architecture, \’x86_64\’, is not supported by the
    Adobe Flash Player installer.

    Pero’ io sono (o dovrei essere) dentro la chroot.

    I comandi che ho dato sono:

    axo@axo-desktop:~$ sudo dchroot
    Password:
    I: [stable32 chroot] Running login shell: ‘/bin/bash’
    axo-desktop:~# apt-get install firefox
    [... l'installazione e' andata ok...]
    axo-desktop:~# cd install_flash_player_9_linux
    axo-desktop:~/install_flash_player_9_linux# ./flashplayer-installer

    ERROR: Your architecture, \’x86_64\’, is not supported by the
    Adobe Flash Player installer.

    axo-desktop:~/install_flash_player_9_linux# porco cane
    -bash: porco: command not found
    axo-desktop:~/install_flash_player_9_linux#

    Dove sbaglio?

  10. 10 Novembre 2007 alle 18:53 | #10

    @axo: Non sbagli nulla. Il problema è che il cambiamento di root non implica il cambiamento di architettura. Voglio dire che non è che il sistema, da x86_64 che è, diventa magicamente un i386. Per operare questa modifica dovresti lanciare dchroot tramite linux32, che si occupa di effettuare questo mascheramento. Ma visto il compito triviale da svolgere, non serve fare questo. Basta, da dentro install_flash_player_9_linux, un


    for a in so xpt; do sudo cp *.$a /usr/lib/mozilla/plugins; done

I commenti sono chiusi.