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
- Scarichiamo i sorgenti con
svn co https://svn.revolutionlinux.com/MILLE/XTERM/trunk/libflashsupport/src - Diamo un
make; make install - Fine
.
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.
Attenzione: I numeri di versione dei pacchetti e dei sorgenti potrebbero cambiare dopo la scrittura di questo articolo.
Poco meno di un anno fa avevo scritto questi due post, molto macchinosi e abbastanza improvvisati, che descrivevano come far funzionare il plugin Macromedia Flash. La macchinosità di questi due procedimenti era dovuta al fatto che non era possibile utilizzare nspluginwrapper (cui ho dedicato questo post) su Konqueror, mentre funzionava discretamente bene già allora con qualunque altro browser in grado di conformarsi alla Netscape Plugins API. A partire dalla release 0.9.90.4, è possibile usare nspluginwrapper con Konqueror, a patto di lavorarci un po’
. Noi useremo l’ultima release disponibile, al momento, la 0.9.91.4, e dovremmo, quindi essere a cavallo.
Il metodo che descrivo ora, presentato in questo topic su Ubuntu Forums, ha il pregio di essere leggermente meno invasivo e più resistente agli aggiornamenti di sistema (specie su Debian). Io lo trovo più sicuro rispetto a quello presentato un anno fa: si tratta, infatti, di inserire una patch all’interno del gestore di plugin Netscape di Konqueror. Tale patch viene pubblicizzata da Beauchesne stesso sul suo sito.
- Creiamo una directory per il nostro lavoro, possibilmente (se c’è abbastanza spazio, nella nostra home, e spostiamoci al suo interno:
mkdir konqueror-nspluginwrapper; cd konqueror-nspluginwrapper - Assicuriamoci di avere inserito, all’interno del nostro /etc/apt/sources.list, una riga deb-src relativa al nostro mirror di pacchetti principali: questa riga ci servirà per prelevare gli archivi contenenti i sorgenti corrispondenti a ciò che è installato, al momento sul nostro sistema, e le patch applicate dai distributori agli stessi per armonizzare il software con tutti gli altri pacchetti precompilati. Ad esempio, io ho un
deb-src http://mi.mirror.garr.it/mirrors/debian/ stable main non-free contribche va benissimo per la mia Debian etch. - Il pacchetto sorgente su cui lavoreremo si chiama kdebase, che corrisponde non solo al pacchetto binario omonimo, ma anche a tutta una serie di software essenziale, come Kate. Preleviamo, quindi, eventuali dipendenze di compilazione per questo archivio di sorgenti, e il pacchetto stesso:
for a in build-dep source; do sudo apt-get $a kdebase; done. - Decomprimiamo i sorgenti, e applichiamo la patch fornita dai nostri packager:
tar xfz kdebase_3.5.5a.dfsg.orig.tar.gz; cd kdebase-3.5.5a; gunzip ../kdebase_3.5.5a.dfsg.1-6.diff; patch -p1 < ../kdebase_3.5.5a.dfsg.1-6.diff - Procuriamoci la patch segnalata da Beauchesne, facendo click qui, salviamola nella directory konqueror-nspluginwrapper, e applichiamola:
patch -p1 < ../kdebase-3.4.2-npapi-64bit-fixes.patch - Prepariamo i pacchetti, e installiamoli:
dpkg-buildpackage -rfakeroot -uc -b; cd ..; sudo dpkg -i *.deb - Riavviamo KDE, e installiamo nspluginwrapper, ad esempio come ho descritto qui.
Enjoy!
(Edit del 22 Novembre 2006/1: due giorni fa è stata rilasciata una nuova versione beta del Flash Player 9; se avete compiuto/fatto compiere questa procedura, prima di tale data, andate a prendervi la versione aggiornata qui.)
(Edit del 22 Novembre 2006/2: Mi sono anche accorto che è uscita una nuova release di nspluginwrapper, la 0.9.90.4. Qui ci sono i due RPM:
nspluginwrapper-0.9.90.4-1.x86_64.rpm
nspluginwrapper-i386-0.9.90.4-1.x86_64.rpm
I problemi causati dal Flash Player 9 non sono ancora stati risolti del tutto, non abbiate quindi false speranze. La procedura da seguire rimane invariata, dovrete solo sostituire i nuovi nomi degli archivi RPM ovunque in questo testo
)
In questo e quest’altro post mi sono soffermato sulla possibilità di sostituire i moduli di gestione dei plugin per il browser Konqueror con gli equivalenti a 32 bit, in modo da riuscire a caricare plugin come quello Macromedia Flash sui nostri sistemi AMD64.
Questa volta, invece, mi soffermo su nspluginwrapper, un software sviluppato da Gwenolé Beauchesne che fa esattamente la stessa cosa su tutti gli altri browser compatibili con la Netscape Plugin API (Mozilla Firefox, Opera, e altri, ma non Konqueror (Edit del 21 Novembre 2006: Konqueror è supportato dalla versione 0.9.90.4), per problemi di comunicazione ancora irrisolti).
La versione disponibile sul sito ufficiale è la 0.9.90.1: la prima rilasciata dopo che l’autore ha terminato la pulizia del codice. In realtà, come segnalato, tra gli altri, da russianpirate su Ubuntu Forums, nei repository di Mandriva Cooker (l’albero perennemente in sviluppo di tale distribuzione, equivalente, se volete, al ramo unstable di Debian) sono disponibili archivi RPM per la versione 0.9.90.3. La buona notizia è che tale release funziona molto meglio della precedente, e vale la pena lavorare un po’ per farla funzionare sui nostri sistemi Debian-based.
In questo post, in pratica, mi limiterò a tradurre e a sistemare un po’ l’ottimo post di russianpirate, e aggiungerò un piccolo screenshot.
- Procuratevi i due archivi RPM necessari:
nspluginwrapper-0.9.90.3-1mdv2007.0.x86_64.rpm
nspluginwrapper-i386-0.9.90.3-1mdv2007.0.x86_64.rpm - Procuratevi i pacchetti necessari (potrebbe mancarne qualcuno: se così fosse, fatemelo sapere):
sudo apt-get install linux32 gsfonts-x11 alien ia32-libs
Per Ubuntu è sufficiente un:
sudo apt-get install ia32-libs-gtk
Per Debian, invece, è necessario scaricare manualmente il pacchetto ia32-libs-gtk_16.2_amd64.deb
dal pool di Ubuntu, e installarlo consudo dpkg -i ia32-libs-gtk_16.2_amd64.deb
Per entrambe le distribuzioni è poi consigliabile fare un:
sudo ldconfig
- Convertite i due pacchetti RPM nei corrispondenti DEB, e installateli:
sudo alien --to-deb nspluginwrapper*.rpm sudo dpkg -i nspluginwrapper*.deb
- Per evitare problemi, abbiamo tralasciato la conversione di uno script che, nel pacchetto originale, veniva eseguito dopo l’installazione dello stesso. Facciamo noi quest lavoro:
export A="/usr/lib/nspluginwrapper/x86_64/npconfig" sudo ln -s $A /usr/bin/nspluginwrapper
- Scaricate i plugin che desiderate (ad esempio Macromedia Flash) e installateli in /usr/lib/mozilla/plugins
- Assumendo che abbiate installato Macromedia Flash, create il wrapper a 64 bit con
sudo nspluginwrapper -a -v -i
Se, inoltre, state usando Mozilla Firefox, fate un link simbolico sia del file originale che del wrapper in /usr/lib/mozilla-firefox/plugins; sempre supponendo il caso di Flash, fate
export MPLUGIN=/usr/lib/mozilla/plugins export FFPLUGIN=/usr/lib/mozilla-firefox/plugins export PLAYER=libflashplayer.so export WRAPPER="npwrapper.$PLAYER" sudo ln -s $MPLUGIN/$PLAYER $FFPLUGIN/$PLAYER sudo ln -s $MPLUGIN/$WRAPPER $FFPLUGIN/$WRAPPER export FFPLUGIN= export MPLUGIN= export PLAYER= export WRAPPER=
- (Ri)avviate il vostro browser, e andate all’indirizzo
about:plugins
Se vedete qualcosa di simile ai due screenshot presentati di seguito, tutto è andato a buon fine.


Epiphany e Mozilla Firefox, edizione AMD64, riconoscono il wrapper a Macromedia Flash Player 7.0
Edit dell’8 Agosto 2007: Questo post è vecchio, ma vedo che viene letto ancora da molte persone. Sicuramente quanto ho scritto può ancora funzionare, ma consiglio caldamente ai nuovi lettori di passare direttamente al mio post più recente in materia: Utilizzare nspluginwrapper con Konqueror su Debian (e derivate, come Ubuntu) AMD64.
(Edit del 22 Novembre 2006: due giorni fa è stata rilasciata una nuova versione beta del Flash Player 9; se avete compiuto/fatto compiere questa procedura, prima di tale data, andate a prendervi la versione aggiornata qui.)
Proprio ieri il mio portatile AMD64 è andato incontro a una severa perdita di dati. Per colpa mia, sono andati persi più di 20 GBytes di dati, tra cui l’ultimo vademecum cui stavo lavorando. Poichè mi seccava altamente dover riprendere da capo a installare la Debian sid, KDE e affini – e dovendomi confrontare col fatto che VMWare aveva smesso improvvisamente di funzionare – ho scaricato il CD di installazione della Kubuntu: una scelta che farà la felicità di mia sorella, giacchè qui cosine come il montaggio automatico delle memorie di massa USB sono già abilitate per default (mentre sulla Debian stavo ancora imparando come fare).
Dall’ultima volta che avevo visto una Ubuntu in azione (a Gennaio), ho notato l’aggiunta di diversi nuovi pacchetti di librerie i386 per il livello di emulazione a 32 bit della distribuzione: immediata è stata la tentazione di vedere se il metodo di cui ho parlato qui fosse applicabile facendo meno casino
. Il risultato è stato un mini-HowTo che ho pubblicato qui su Ubuntu Forums e di cui vi riporto la traduzione.
- Abilitare almeno il repository “universe” in /etc/apt/sources.list, quindi fare
sudo apt-get update
- Installare alcuni pacchetti importanti per il livello di emulazione a 32 bit, insieme al supporto ALSA (per il suono):
sudo apt-get install ia32-libs ia32-libs-kde lib32asound*
- Prelevare il pacchetto konqueror-nsplugins da qui. Fare particolare attenzione a scegliere il link i386 in calce alla pagina.
- Rinominare alcuni file che potrebbero andare in collisione con quelli che stiamo per installare:
sudo mv /usr/bin/nspluginviewer /usr/bin/nspluginviewer64 sudo mv /usr/bin/nspluginscan /usr/bin/nspluginscan64
- Dobbiamo estrarre solo due file dal pacchetto che abbiamo scaricato – e forzarne l’installazione potrebbe fare casino in maniera seria. Consiglio, perciò, di installare il Midnight Commander, che ha un filesystem virtuale per i pacchetti Debian:
sudo apt-get install mc
- Aprire il Midnight Commander con privilegi di root così
sudo mc
- Selezionare il pacchetto a 32 bit konqueror-nsplugins e premere INVIO, quindi navigare nelle directory virtuali CONTENTS/usr/bin
- Copiare nspluginscan e nspluginviewer in /usr/bin premendo INS finchè i due files non diventano gialli, quindi premere F5 e scrivere /usr/bin nel campo “a:”
- Uscire dal Midnight Commander, quindi eseguire:
sudo mv /usr/bin/nspluginviewer /usr/bin/nspluginviewer32 sudo mv /usr/bin/nspluginscan /usr/bin/nspluginscan32 sudo ln -s /usr/bin/nspluginviewer32 /usr/bin/nspluginviewer sudo ln -s /usr/bin/nspluginscan32 /usr/bin/nspluginscan
- Scaricare il Macromedia Flash Player, decomprimere l’archivio e copiare i files, in questo modo:
sudo mkdir -p /usr/lib/mozilla/plugins tar xfz install_flash_player_7_linux.tar.gz sudo cp install_flash_player_7_linux/libflashplayer.so /usr/lib/mozilla/plugins sudo cp install_flash_player_7_linux/flashplayer.xpt /usr/lib/mozilla/plugins
- Provare a fare Impostazioni -> Configura Konqueror -> Plugin -> Cerca nuovi plugin, quindi vedere se un nuovo plugin viene rilevato nella scheda Plugin.
Edit del 14 Novembre 2006: Allo stato attuale, è consigliabile NON usare sid, nè come propria chroot, nè come sistema principale. Per risparmiarvi grattacapi (sistemi che si autodistruggono e similia), sostituite OVUNQUE sid con testing. Ne va della vostra salute.
I metodi mostrati precedentemente permettevano di risolvere un problema (la riproduzione di quasi ogni formato video disponibile tramite MPlayer su sistemi a 64 bit). Si tratta, però, di una soluzione alquanto balorda, a ben guardare. In effetti, mi sono convinto che la miglior cosa da fare sia creare sempre e comunque una chroot a 32 bit, così da non perdere (fra l’altro) i benefici derivanti dall’aggiornamento automatico del software tramite apt. Seguite pure questo tutorial – ma mi permetto di consigliarvi alcune modifiche:
- Se avete installato il pacchetto ia32-libs (che contiene un numero minimo di librerie richieste dai programmi a 32 bit), rimuovetelo. Fa solo casino, e inoltre la chroot fornisce queste librerie di suo – insieme a molte altre.
su apt-get remove ia32-libs
- L’opzione corretta da usare è
--arch
altrimenti debootstrap non funziona.
- Invece di compilare MPlayer, aggiungete la riga seguente al vostro /etc/apt/sources.list:
deb http://www.debian-multimedia.org sid main
e importate la chiave GnuPG di Christian Marillat nel vostro database apt così:
su gpg --keyserver hkp://wwwkeys.eu.pgp.net --recv-keys 1F41B907 gpg --armor --export 1F41B907 | apt-key add -
e poi fate
apt-get install mplayer win32codecs
- Per far funzionare il suono nelle applicazioni della chroot, fate così:
apt-get install alsa-oss
e per sicurezza, se state usando uno tra aRts e esd, installateli anche nella chroot:
apt-get install esd
o
apt-get install arts
e assicuratevi di selezionare il driver audio SDL in MPlayer. Anche il driver OSS funzionerà, ma quello SDL tiene conto della presenza dei server sonori, comportandosi meglio in ambito mutlitasking.
Scoprirete inoltre, che molti programmi non funzioneranno anche forzando impostazioni OSS (ad esempio, non sarà possibile ascoltare i suoni di un filmato Macromedia Flash): un piccolo workaround è lanciare il programma problematico tramite aoss, così:
- Per quanto riguarda il contenuto del vostro file /etc/fstab, vi consiglio di prendere a modello quello mostrato qui. Farà funzionare molte più cose
. - Il do_dchroot fornito all’interno dell’howto tende ad andare in confusione quando deve gestire i parametri in formato GNU lungo (del tipo –parametro). Qui trovate una versione molto più brutta da vedere, ma che funziona sempre.
In questo modo, però, eventuali software installati a 32 bit installati senza alcun intermediazione nel sistema a 64 bit (ad esempio VMWare) potrebbero riscontrare dei problemi – problemi che potranno essere evitati con un unico link simbolico:
rm -rf /emul/ia32-linux ln -s /usr/local/sid32 /emul/ia32-linux
supponendo che la directory radice della vostra chroot sia /usr/local/sid32.
Edit del 14 Novembre 2006: Allo stato attuale, è consigliabile NON usare sid, nè come propria chroot, nè come sistema principale. Per risparmiarvi grattacapi (sistemi che si autodistruggono e similia), sostituite OVUNQUE sid con testing. Ne va della vostra salute.
Inoltre, i nomi e le versioni dei pacchetti potrebbero non corrispondere più a quelli da me provati alla data della scrittura di questo post.
Riprendiamo le fila del post precedente per estendere ancora di più le capacità del nostro sistema a 64 bit. Vedremo come valerci di un gentile regalo della distribuzione Gentoo per poter avere un riproduttore multimediale a 64 bit completamente funzionante. Anche qui tenete conto del fatto
che eventuali aggiornamenti potrebbero portare alla necessità di pacchetti con nomi diversi.
- Oltre ai pacchetti elencati nel post precedente, procuratevi questi:
giflib3g_3.0-12_i386.deb libgpmg1_1.19.6-22_i386.deb libaa1_1.4p5-30_i386.deb libgtk2.0-0_2.8.18-7_i386.deb libartsc0_1.5.4-1_i386.deb liblame0_3.96.1-2_i386.deb libatk1.0-0_1.12.1-1_i386.deb liblircclient0_0.8.0-5_i386.deb libaudiofile0_0.2.6-6_i386.deb libmad0_0.15.1b-2.1_i386.deb libcairo2_1.2.2-1_i386.deb libogg0_1.1.3-2_i386.deb libdirectfb-0.9-22_0.9.22-10+b1_i386.deb libpango1.0-0_1.12.3-1+b1_i386.deb libdv4_0.104-2+b2_i386.deb libpng12-0_1.2.8rel-5.2_i386.deb libesd0_0.2.36-3_i386.deb libslang2_2.0.6-2_i386.deb libfreetype6_2.2.1-2_i386.deb libtheora0_0.0.0.alpha7-1_i386.deb libfribidi0_0.10.7-3_i386.deb libungif4g_4.1.4-2_i386.deb libgdk-pixbuf2_0.22.0-11_i386.deb libxvidcore4_1.1.0-final-0.1_i386.deb libglib2.0-0_2.10.3-3_i386.deb
e trattateli nella maniera descritta precedentemente.
- Il progetto Gentoo GNU/Linux ha creato una distribuzione precompilata a 32 bit di MPlayer appositamente per l’uso su un architettura AMD64. Prelevatelo da qui.
- Eseguire i comandi:
tar xjf mplayer-bin-1.0_pre8.tbz2 -C / ln -s /usr/local/bin/mplayer-bin /usr/local/bin/mplayer ln -s /usr/local/bin/mencoder-bin /usr/local/bin/mencoder ln -s /usr/local/bin/midentify-bin /usr/local/bin/midentify ln -s /usr/local/bin/gmplayer-bin /usr/local/bin/gmplayer
- Non provate ad usare gmplayer – se non altro perchè i caratteri del menu saranno illegibili. Il miglior frontend per MPlayer basato su KDE, IMHO, è KMPlayer, scaricabile da qui. Purtroppo non sarà possibile installare la copia precompilata fornita nei repository, a causa della sua dipendenza dal pacchetto mplayer, assolutamente inutile per i nostri scopi e solo fonte di casini. Scaricate perciò la versione più recente, anche se marcate come unstable, ed eseguite i seguenti comandi:
tar xjf kmplayer*.tar.bz2 -C /usr/local/src cd /usr/local/src/kmplayer* ./configure --without-xine --without-gstreamer make make install
- Per ottenere una (parziale) traduzione in italiano dell’applicativo, scaricate il file di traduzione da qui, quindi eseguite il seguente comando:
cp kmplayer.po /usr/share/locale/it/LC_MESSAGES/kmplayer.mo
- Procuratevi i codec Win32 (il vero oggetto del desiderio
) scaricandoli da qui.
- Eseguite i seguenti comandi:
tar xjf essential* -C /usr/lib32/win32 ln -s /usr/lib32/win32 /usr/lib/win32
Provate adesso ad aprire KMPlayer (lo trovate nel menu K -> Multimedia) e a leggere un file WMV: dovrebbe funzionare alla perfezione
.


Commenti recenti