Piero V.

Plugin flash e Chromium: ancora problemi

Ultimamente su Debian si sono ripetuti i problemi con il plugin flash (pepper) su chromium: non veniva proprio rilevato.

Ancora non conosco la causa, penso un cambiamento di API che ha portato la necessità di creare un file di configurazione nella directory /etc/chromium.d con le impostazioni del plugin.

Nel file update-pepperflashplugin-nonfree c’è un’istruzione per inserirlo, tuttavia non so come mai non abbia funzionato.

La soluzione del problema sta nel linkare o copiare manualmente da root il file necessario, facendo così:

ln -s /usr/lib/pepperflashplugin-nonfree/etc-chromium-default.txt /etc/chromium.d/pepperflashplugin-nonfree

Una volta riavviato il browser, il plugin torna a funzionare.

Download video in streaming flash con Python

Un tempo su Linux si poteva trovare un video guardato in streaming direttamente nella directory /tmp.

In seguito, con degli aggiornamenti, flash scaricava il video sempre lì, ma veniva eliminato, anche se fisicamente presente.

Per ritrovarlo bastava trovare il processo dell’implementazione flash del browser, solitamente con ps aux | grep flash e così si trovavano i possibili pid.

Andando a vedere nella directory /proc/pid/fd, si trovavano tanti link, uno di questi a un file tipo /tmp/Flash.... In seguito si poteva trattare quel link come se fosse un file normale, quindi riprodurlo, passarlo a mencoder o ffmpeg etc… Se volevate copiarlo dovevate aspettare che il browser avesse finito di scaricare il video!

In seguito sembrava essere scomparsa anche questa possibilità, ma oggi mi sono accorto che è tornata, quindi vi lascio un breve file in python che permette di trovare automaticamente i vari file:

#!/usr/bin/env python
import os

for pid in os.listdir('/proc'):
	if not pid.isdigit():
		continue

	fdpath = '/proc/' + str(pid) + '/fd'
	try:
		fd = os.listdir(fdpath)
	except:
		continue

	for fid in fd:
		try:
			# Not a link? Raise exception
			fname = os.readlink(fdpath + '/' + fid)
			fname = fname.strip()

			if fname.lower().find('/tmp/flash') == 0:
				fname = fname.split(' ')[0]
				print fdpath + '/' + fid + ' => ' + fname

		except:
			continue

Questo script è stato scritto molto velocemente: cerca di andare in tutti i pid e di trovare i vari link. Se contengono la parola flash stampa il link e la destinazione. So che si potrebbe fare una cosa migliore ma in questo caso preferisco fare lo script kid 😊 .

Lo rilascio nel pubblico dominio.

Comunque se volete scaricare video da siti come youtube ed altri, vi consiglio di non adottare questo metodo ma di usare direttamente youtube-dl, che è fantastico!

Epic Win: Inserire un filmato SWF

Oggi mi sono reso conto di un mio epic win fenomenale che però appartiene al passato.

Qualche tempo fa mi appassionavo molto ai forum e ne seguivo uno di supporto a un hoster di forum.

C’era una discussione sui vari tag HTML per mettere i contenuti multimediali.

Per il flash c’era solo l’embed, così ho postato il vero codice, quello con l’object.

Allora uno mi dice su perché in realtà l’embed era contenuto nel mio codice, che non serviva a niente, che dicevo cavolate.

Precisiamo subito che per chi non lo sapesse l’embed è messo per compatibilità con i vecchi browser.

Oggi ho realizzato che il W3C vuole dichiarare obsoleto il tag embed un po’ come il font, anzi, l’ha già fatto (per esempio nell’XHTML 1.1 non c’è).

Ora, chi aveva il codice più sbagliato? Io o te utente di cui per fortuna tua non mi ricordo l’username?

Direi Epic Win!

Creare un file SWF per riprodurre un suono

Mi servirebbe un effetto sonoro per una pagina web perciò la scelta migliore è purtroppo il flash.

Con l’estensione ming di php e il codice di gazbming.com ho potuto creare questo file php che salva il file prova.swf che riproduce il file MP3 prova.mp3:

<?php

  Ming_setScale(20.0000000);

  $m = new SWFMovie();
  $m->setDimension(1, 1);
  $m->setBackground(0x00, 0x00, 0x00);

  $m->setRate(31);

  $mp3=fopen('prova.mp3', 'rb');

  $numofframes=$m->streamMp3($mp3);
  while($numofframes-->0){
    $m->nextFrame();
  }

  #header('Content-type: application/x-shockwave-flash');
  #$m->output();
  set_time_limit(3600);
  $m->save('prova.swf');

Per chiarezza: la quartultima e la terzultima riga sono commentate perché darebbero l’output su schermo.

Ciò che fa questo codice è creare un movie SWF di dimensioni 1×1 e sfondo nero, riprodurre il file prova.mp3 e salvare il movie prodotto nel file prova.swf.

La penultima riga è solo di precauzione: ho provato con una canzone da 4 minuti e la prima volta mi ha dato errore perché i 30 secondi erano passati, poi ho aggiunto un limite di un’ora (3600 secondi) e non ho più avuto problemi.

Il test lo dovrete fare in locale quasi al 100% perché non penso che molti provvedano a dare l’estensione ming di PHP e perché è più comodo avere un file generato una volta per alleggerire il webserver.

Ringrazio di nuovo il sito sopra citato e spero vi sia di aiuto.

Midori

Midori è una parola giapponese che signigica verde. Si legge come è scritta in italiano (mee-doh-ree per gli amici anglofoni).

Midori però è anche un browser sia per linux e windows (e forse mac).

Stavo cercando un browser leggero, basato su gtk possibilmente e su webkit e che avesse Flash ed ecco il risultato.

La scelta è caduta su webkit perché ne avevo sentito parlare bene. In realtà sono abituato a webkit, perché anche l’iPod lo usa (ma per mia sfortuna ovviamente non si riesce a usare tinyMCE! Devo mettere qualcosa per disabilitarlo all’occorrenza), infatti è proprio un motore di rendering di Apple.

È software libero perché Apple lo ha realizzato partendo da khtml (insomma, quello di konqueror). Anche il browser Chromium e il suo fratello Closed lo usano, ma non hanno flash.

In realtà c’erano diverse alternative, ma per qualcosa che non uso spesso non volevo che causasse troppe dipendeze… Ecco perché per gnome (io utilizzo questo DE).

Che avesse flash perché per il mio computer firefox+flash+composite non esiste.

Ecco tre screenshot: uno sul mio sito, uno sul mio sito in sviluppo e uno su youtube.

Una cosa che però mi dà fastidio è che sugli angoli arrotondati mette una lineetta!!

Ecco gli screen:

homepage.jpg costruzione.jpg youtube.jpg