LAN Streaming avec ffmpeg

De Centre de Ressources Numériques - Labomedia
Aller à : navigation, rechercher

ffmpeg vs libav

Compilation de ffmpeg

sans opus, sans lib265

Les binaires seront installés dans /usr/bin

Ressources:

sudo apt-get -y --force-yes install yasm autoconf automake build-essential libass-dev libfreetype6-dev libsdl1.2-dev libtheora-dev libtool libva-dev libvdpau-dev libvorbis-dev libxcb1-dev libxcb-shm0-dev libxcb-xfixes0-dev pkg-config texinfo zlib1g-dev libxfixes-dev  libx264-dev libfdk-aac-dev libvpx-dev
cd ~/projets
mkdir ffmpeg
cd ffmpeg
mkdir ffmpeg_sources
cd ffmpeg_sources
wget http://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2
tar xjvf ffmpeg-snapshot.tar.bz2
cd ffmpeg

PATH="/usr/bin:$PATH" PKG_CONFIG_PATH="$HOME/projets/ffmpeg/ffmpeg_build/lib/pkgconfig" ./configure  --prefix="$HOME/projets/ffmpeg/ffmpeg_build"  --pkg-config-flags="--static"  --extra-cflags="-I$HOME/projets/ffmpeg/ffmpeg_build/include" --extra-ldflags="-L$HOME/projets/ffmpeg/ffmpeg_build/lib"  --bindir="/usr/bin"  --enable-gpl --enable-libass  --enable-libfdk-aac  --enable-libfreetype  --enable-libmp3lame   --enable-libtheora --enable-libvorbis  --enable-libvpx  --enable-libx264  --enable-nonfree --enable-x11grab

PATH="/usr/bin:$PATH" make -j8
sudo make install
make distclean

Capture d'une partie d'écran

Capture d'une fenêtre d'un blenderplayer 800x400 dans coin inférieur gauche

ffmpeg -video_size 800x400 -framerate 25 -f x11grab -i :0.0+0,500 /home/pierre/bm.mp4

0.0 = numéro de l'écran +0,500 = décalage x, y avec origine en haut à gauche

Streaming

Ressources

Stream d'une video

UDP

ffmpeg -i bm.mp4 -f mpegts udp://127.0.0.1:8888

VLC: Ouvrir un flux réseau

udp://@127.0.0.1:8888

Multicast

ffmpeg -i bm.mp4 -f mpegts udp://224.2.2.2:8888

VLC: Ouvrir un flux réseau

udp://@224.2.2.2:8888

Stream d'une capture d'écran

flv à la place de mpegts ne marche pas !

VLC: Ouvrir un flux réseau

udp://@127.0.0.1:8888
  • Latence 5s
ffmpeg -f x11grab -s 800x400 -i :0.0+0,500 -r 25 -vcodec libx264 -f mpegts udp://127.0.0.1:8888

Latence de 0.90s avec modification du cache de VLC

ffmpeg -f x11grab -r 25 -s 800x400 -i :0.0+0,500 -vcodec libx264 -tune zerolatency -f mpegts udp://127.0.0.1:8888

VLC --> Outils --> Préférences: Afficher les paramètres > Tous Lecture / Codecs En bas, Avancé, cache réseau 100 ms au lieu de 1000ms

  • Le cache à 0 donne une image anormale
  • -b 1200 à -b 4800k ne change rien (bitrate)
  • par contre il faudrait essayer avec -b 500 à 800
  • -threads 8 idem
  • -r 30 idem

Stream d'une capture d'écran en Multicast

ffmpeg -f x11grab -r 25 -s 800x400 -i :0.0+0,500 -vcodec libx264 -tune zerolatency -f mpegts udp://@224.2.2.2:8888

Latence 1.0s Test multicast.png


latence idem

ffmpeg -f x11grab -r 25 -s 800x400 -i :0.0+0,500 -vcodec libx264 -tune fastdecode -tune zerolatency -f mpegts udp://@224.2.2.2:8888

je ne comprends pas le --tune de la doc du lien !

Lecture du flux sur un PC en Wifi

Latance en gros de 1s (Ne pas oublier de configuer le cache de VLC à 100ms)

Lecture du flux sur Raspberry Pi en wifi

Installer wpa_gui pour configurer le wifi sur la Pi

PLusieurs s de latence avec une capture de 200x200, cpu à 50%. La Raspberry Pi B+ ne vaut rien, changer pour framboise, orange ... Il n'y a pas d'horloge sur la Pi, ça coûte trop cher ! La mesure avec le script est fausse: compter dans votre tête !

GSTreamer

  • gst-launch n'est pas installé alors que j'ai installé un grand nombre de paquets.
  • pas de doc pertinente avec des exemples.

Raspberry Pi Lecture du streaming d'un jeu video

Moonlight Embedded

ffmpeg stream de la capture en rtp et lecture sur smartphone avec vlc

vlc sur android plante avec udp

Définition de rtp Real-time Transport Protocol