Il est possible de combiner VLC et ffmpeg pour faire du streaming en Flash si on dispose d'une FreeBox. Pour l'exemple fourni ici la vidéo sera de qualité très moyenne afin de ne pas trop pénaliser mon petit serveur. J'ai donc ici l'occasion de tester mes deux outils préférés pour le multimédia
. C'est bien pratique car ma Freebox V4 - qui date un peu- est à Montpellier et moi à Antibes
.
1. Illustration

Fig 0 - Configuration pour le streaming

Fig 1 - côté serveur à Montpellier: VLC en cours sur la playlist.

Fig 2 - côté client à Antibes: Réception du flux au format FLV
Fig 3 - côté client à Antibes: La sortie du script php en FLV s'intègre parfaitement à un lecteur Flash
2. Intégration depuis le Web à un lecteur Flash
Le couple VLC/Ffmpeg est donc utilisé ici. Dans les lignes de commandes suivantes, [PORT] désigne le port de sortie.
vlc
VLC est utilisé en premier. Suite à des crashs remontés par les users de VLC version 0.9.8a sur le forum pour le h264, je teste moi-aussi cet encodage afin de vérifier combien de temps, on peut le faire tourner. J'ai choisi l'option dummy au lieu de ncurses afin de mieux tracer les divers messages. J'ai pris une chaîne au hasard du bouquet du multiposte pour faire mes tests.
/opt/vlc-0.9.8a/bin/vlc 'rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=372&flavour=sd' \
--sout '#transcode{vcodec=h264,vb=192,acodec=mpga,ab=32,channels=1,samplerate=48000,width=320,height=240,deinterlace}:standard{mux=ts,dst=0.0.0.0:[PORT]/stream.ts,access=http}' -vvv -I dummy --interact
Ceux qui sont sous VLC 0.8.6 préfèront plutôt directement d'utiliser ncurses qui s'intègre parfaitment en optant par exemple pour
vlc 'playlist.m3u' \
--sout '#transcode{vcodec=mp2v,vb=384,acodec=mpga,ab=32,channels=1,samplerate=48000,width=320,height=240,deinterlace}:\
standard{mux=ts,dst=0.0.0.0:[PORT]/stream.ts,access=http}' -I ncurses 2> /dev/null
php script avec ffmpeg
L'option "-" redirige le flux en direct comme la redirection vers un fichier pour le stdout du shell. L'idée ici consiste à utiliser Php afin de faire appel à ffmpeg à partir de la fonction system(). Ffmpeg se charge donc de vers la conversion du flux de la chaine. Le script php est donc à déposer sur votre serveur Web.
<?php
header("Cache-Control: no-cache, must-revalidate");
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");
system("ffmpeg -i http://votre.host:[PORT]/stream.ts -acodec libmp3lame -b 300k -s 320x240 -ab 36k -ar 11025 -y -f flv -");
?>:
le lecteur FlashLe lecteur Flv-Player disponible à http://flv-player.net/ fera parfaitement l'affaire...C'est la variable suivante qu'il faut préciser par rapport à votre script php
<param name='FlashVars' value='flv=http://votre.host/votre_script.php&width=...&height=....&...
L"intégralité du code à insérer dans une page Web serait donc
<object type='application/x-shockwave-flash' data='http://mon.site.perso/player_flv_maxi.swf' width='368' height='288'>
<param name='movie' value='http://mon.site.perso/player_flv_maxi.swf' />
<param name='allowFullScreen' value='true' />
<param name='FlashVars' value='flv=http://mon.site.perso/mon_script.php&width=320&height=240&autoplay=0&showstop=1&showvolume=1&showtime=1&showloading=always&showfullscreen=1&shows
witchsubtitles=1&showiconplay=1&iconplaybgalpha=100' />
</object>
Ce lecteur est très sympathique car il propose un générateur pour le reste. Il suffit pour celà de se balader sur le site de flv-player pour accéder au générateur.
Source: http://forum.videolan.org/viewtopic.php?f=4&t=55069