Outils du site


Streaming avec ffmpeg

ffmpeg est un excellent outil. Il nécessite de bonnes performances matérielles mais donnera des vidéos de qualité.

Pour l'installer, vous connaissez la chanson :

# pkg_add ffmpeg

Tout d'abord, nous avons besoin d'en savoir un peu plus sur notre webcam. Après l'avoir branchée, tapez dmesg pour voir par exemple :

uvideo0 at uhub2 port 2 configuration 1 interface 0 "Logitech product 0x0825" rev 2.00/0.12 addr 3
video0 at uvideo0

Cela nous indique que la webcam est disponible via /dev/video0. Afin de pouvoir s'en servir sans être super-utilisateur, modifiez les permissions :

# chmod 666 /dev/video0

Une fois que ceci est connu, nous avons besoin de savoir quels formats propose notre webcam. Tapez alors ceci :

$ ffmpeg -f v4l2 -list_formats all -i /dev/video0

Vous obtiendrez un résultat comme :

[video4linux2,v4l2 @ 0x2d76dd93800] Raw       :     yuyv422 :                 YUYV : 640x480 160x120 176x144 320x176 320x240 352x288 432x240 544x288 640x360 752x416 800x448 800x600 864x480 960x544 960x720 1024x576 1184x656 1280x720 1280x960
[video4linux2,v4l2 @ 0x2d76dd93800] Compressed:       mjpeg :                MJPEG : 640x480 160x120 176x144 320x176 320x240 352x288 432x240 544x288 640x360 752x416 800x448 800x600 864x480 960x544 960x720 1024x576 1184x656 1280x720 1280x960

Cela nous indique la liste des résolutions possibles et les formats vidéos associés.

Maintenant, nous allons configurer le serveur qui va se charger de diffuser la vidéo.

Copions le fichier de configuration dans /etc/ffserver.conf :

# cp /usr/local/share/examples/ffmpeg/ffserver.conf /etc/ffserver.conf

Nous pouvons maintenant éditer ce fichier pour l'adapter à nos besoins. Je recopie ci-dessous le fichier sans les commentaires :

HTTPPort 8090
HTTPBindAddress 0.0.0.0
MaxHTTPConnections 2000
MaxClients 1000
MaxBandwidth 1000
CustomLog -

<Feed feed1.ffm>               
   File ./feed1.ffm           
   FileMaxSize 1G              
   ACL allow 127.0.0.1        # Acces seulement en local à ce fichier 
</Feed>

<Stream webcam.webm>       		
   Feed feed1.ffm              
   Format webm
   # Audio settings
   NoAudio
   # Video settings
   VideoCodec libvpx
   VideoSize 320x240           # Video resolution
   VideoFrameRate 25           # Video FPS
   AVOptionVideo flags +global_header  
   AVOptionVideo cpu-used 0
   AVOptionVideo qmin 5
   AVOptionVideo qmax 35
   AVOptionAudio flags +global_header
   PreRoll 15
   StartSendOnKey
</Stream>

<Stream status.html>     		# Server status URL
   Format status
   # Only allow local people to get the status
   ACL allow localhost
   ACL allow 192.168.0.0 192.168.255.255
</Stream>

<Redirect index.html>    # Just an URL redirect for index
   # Redirect index.html to the appropriate site
   URL http://www.ffmpeg.org/
</Redirect>

Notez que le serveur écoute par défaut sur le port 8090, il faudra donc penser à l'ouvrir dans le parefeu.

Afin de lancer la diffusion, saisissez la commande suivante :

ffmpeg -f v4l2 -video_size 320x240 -i /dev/video0 http://localhost:8090/feed1.ffm

Pour regarder votre flux, ouvrez un navigateur à l'adresse suivante :

http://chezmoi.tld:8090/webcam.webm

Pour obtenir des informations sur le flux, Vous pouvez aussi consulter la page http://chezmoi.tld:8090/status.html