Newsgroup: it.comp.www.php
Titolo: Streaming multimediali mp3/avi mediante header(...)

Sto cercando di realizzare uno "streaming" di mp3/avi su hosting Linux
(@
aruba.it
) e vorrei evitare di trovare soluzioni troppo complesse
(giusto per mancanza di tempo): l'idea è quella di consentire ai
visitatori di ascoltare gli mp3 (o vedere i video) presenti sul server
impedendo loro di scaricare i file.
Dopo qualche ricerca sul gruppo it.comp.php avevo pensato ad una
soluzione così:
//pagina da cui consento lo streaming...
<a href="stream.php?PATH=mp3/FILE_xyz.mp3" target='_blank'>Prova</a>
//stream.php
<?php
  header ("Content-Type: audio/mpeg");
  if (isset($_GET['PATH'])){
	  $filename = $_GET['PATH'];
	  readfile($filename);
	  exit();
  }
?>
il che non sembra funzionare (almeno in locale, in remoto non ho
ancora provato). Dove sbaglio?
Mi scarica un file di nome stream.php della stessa dimensione di
FILE_xyz.mp3, che probabilmente contiene l'mp3... mistero.
Tra l'altro, è possibile che sul server remoto esistano delle
limitazioni a fare qualcosa del genere (solo ora sto pensando che
dovrei controllare che effettivamente mi stiano passando un mp3 e non
qualcos'altro...)?
Se conoscete qualche script pronto oppure le modifiche da fare alla
mia idea (riciclata :D) accetto suggerimenti...

 Tra l'altro, č possibile che sul server remoto esistano delle


 Non riesco a capire il senso...
[...]
evidentemente sto sbagliando approccio in modo totale :) ... non èche
sapresti darmi qualche indicazione su come
realizzare lo "streaming" di mp3 e video in php?

 FILE_xyz.mp3, che probabilmente contiene l'mp3... mistero.
In effetti il file dovrebbe essere proprio FILE_xyz.mp3 con il nome 
dello script php che hai usato per fornirlo, confronta i due file.
Probabilmente devi dare qualche altro header per cambiare il nome, nella 
pagina di readline() trovo:
header("Content-Disposition: attachment; 
filename=\"".basename($filename)."\";"); 
che sembra fare al caso tuo.
Ripeto, non puoi inibire il salvataggio del file se scegli di farlo 
ascoltare.

,

ok, sei stato illuminante ... a questo punto stavo valutando una
soluzione con uno script flash embedded nel codice
(...rischio di andare OT) che mi sembra cmq la cosa più semplice.
Non ho il tempo, purtroppo, di provare subito la soluzione che
suggerisci...
Grazie :)

 suggerisci...
Quella dell'header ? Mi sembra più rapida dello streaming in flash.
Ovviamente posta il link che rippo subito il file ;-)

 Ovviamente posta il link che rippo subito il file ;-)
ciao, inizialmente ho utilizzato uno script che sfrutta l'header
(che puoi scaricare da qui, se ti interessa:
http://php.html.it/script/vedi/1887/thestreamer-2/
)
Tuttavia ho provato ad utilizzarlo e non mi sembra molto "naturale"
come funzionamento, nel senso che apre direttamente una playlist
remota sul client e prova a leggere il file... vabbè, magari è
accettabile,
peccato che il server di aruba sembra non vedere di buon occhio
questa cosa (in effetti non funziona sempre).
Dunque, per evitare problemi, ho preferito utilizzare uno
script che crea un "lettore" in Flash e si innesta nel codice PHP o
HTML
che sia... facile ed indolore, basta configurare un XML con la
locazione
dei file da leggere, ed è fatta. Nel mio caso (in cui ho pochissimo
tempo
per finire il lavoro) va benissimo...
Se interessa, qui c'è lo script in flash
http://www.jeroenwijering.com/upload/flash_flv_player.zip
e di seguito riporto comunque parte essenziale del codice PHP
che utilizza lo "streamer" che avevo trovato all'inizio.
        header("Mime-version: 1.0");  //genera automaticamente una
m3u.
	header("Content-type: audio/x-mpegurl");
	header("Content-Transfer-Encoding: 7bit");
	header("Content-Disposition: attachment; filename=
\"TheStreamer2playlist.m3u\"");
	echo $mp."\n";
Ciao :)