Table des matières
VideoThon Pure Data Linux
Utilisation du VidéoThon
Régler les paramètres de la webcam
lancer guvcview (avant de lancer Pure Data), effectuer les réglages et refermer le tout, les réglages doivent être conservés dans Pure Data
guvcview
ou en ligne de commande : faire apparaitre tous les réglages
v4l2-ctl -d /dev/video1 -L
puis par exemple :
v4l2-ctl -d /dev/video1 -c focus_auto=0
pour virer l'autofocus auto
v4l2-ctl -d /dev/video1 -c focus_absolute=3
pour régler la valeur du focus de façon absolue, ces 2 dernières lignes de commande sont intégrées au script de lancement du videothon
Lancer le videothon
- Lancer le patch Pure Data : La fenêtre doit se mettre en plein écran, possibilité de la fermer avec la touche ESC
- Ecran d'accueil “Le VidéoThon récole vos messages”
- Appuyer sur la barre espace
- Ecran “Vous avez 30 secondes maxi d'enregistrement, Appuyez sur le bouton pour démarrer, ré-appuyer pour arrêter l'enregistrement avant les 30 secondes”
- Appuyer sur la barre espace : compte à rebours 4-3-2-1-0 > l'enregistrement se lance
- Appuyer sur la barre espace pour arrêter l'enregistrement avant les 30 secondes
- Ecran “Merci” et retour à l'étape 1 au bout de 2 secondes
Création d'un VidéoThon FLOSS avec Pure Data sous Linux
Installation Linux
Tests & post installation
Matériel
Webcam
sudo apt-get install v4l-utils uvcdynctrl guvcview v4l2ucp
Tester la webcam
lsusb
Voir les périphériques
ls /dev/vid*
Infos v4l2
v4l-info /dev/video1
Les controles disponibles
v4l2-ctl -d /dev/video1 -l
Changer un parametre de controle
v4l2-ctl -s pal -d /dev/video1 (pour passer en pal une carte d'acquisition)
Les formats disponibles
v4l2-ctl -d /dev/video1 --list-formats-ext
Le format actuellement utilisé par la webcam
v4l2-ctl -d /dev/video1 -V
Changer la taille de capture de la webcam
v4l2-ctl -d /dev/video1 --set-fmt-video=width=640,height=360
pour lister les formats d'une camera
uvcdynctrl -d /dev/video1 -f
voir tous les réglages avec une interface graphique
guvcview
changer les paramètres de la webcam quand Pure Data l'accapare
v4l2ucp
Audio
Lister les périphériques d'enregistrement
arecord -l
Capture l'audio avec Alsa : https://trac.ffmpeg.org/wiki/Capture/ALSA
Logiciel
FFmpeg
Compilation de ffmpeg avec support v4l2, jack et H264 (les versions statiques et des dépots tout comme avconv ne supportent pas systématiquement v4l2, jack et H264, d'où compil)
git clone [[https://github.com/FFmpeg/FFmpeg.git| https://github.com/FFmpeg/FFmpeg.git]]\\ cd FFmpeg
Installation des dépendances
sudo apt-get install -y --force-yes 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 texi2html zlib1g-dev
Une deuxième couche pour les trucs plus spécifiques
sudo apt-get install yasm libx264-dev libjack-jackd2-dev libasound2-dev libmp3lame-dev libopus-dev
Config en intégrant les trucs spé
./configure --enable-libopus --enable-gpl --enable-libx264
Vérifier que les encoders et sources sont bien là et envoyer la compilation
make
Install
sudo make install
FFmpeg static : http://johnvansickle.com/ffmpeg/
pour connaitre les formats disponibles :
ffmpeg -formats
v4l2loopback
git clone [[https://github.com/umlaeute/v4l2loopback.git| https://github.com/umlaeute/v4l2loopback.git]]\\ cd v4l2loopback make KCPPFLAGS="-DMAX_DEVICES=10" sudo make install
ou
sudo apt-get install v4l2loopback-dkms v4l2loopback-utils
Test
sudo modprobe v4l2loopback video_nr=10,11,12,13,69,99
Ajouter le chargement du module
sudo nano /etc/modules
ajouter la ligne
v4l2loopback video_nr=10,11,69
sera actif au prochain démarrage
Pure data
Installer Pure data et des librairies complémentaires (toutes ne sont pas nécessaires, mais possible d'envoyer toute la ligne de commande, les éléments déjà installés seront pris en compte) :
sudo apt-get install puredata puredata-core puredata-doc puredata-extra puredata-import puredata-gui puredata-utils pd-cyclone pd-ggee pd-hid pd-iemlib pd-libdir pd-motex pd-pdstring pd-purepd pd-zexy gem gem-doc gem-extra gem-plugin-gmerlin gem-plugin-jpeg gem-plugin-lqt gem-plugin-magick gem-plugin-mpeg3 gem-plugin-sgi gem-plugin-v4l2
Le patch PD du Videothon
git clone [[https://github.com/b01xy/videothon.git| https://github.com/b01xy/videothon.git]]
Utilisation
Lancer le patch
ESC pour sortir de la fenêtre en plein écran
Réglages
Affichage
Enregistrement vidéo
Il faut rendre executable le script launch_rec.sh
chmod +x launch_rec.sh chmod +x launch_videothon.sh
Adapter le chemin La ligne de commande magique pour encoder en MJPEG (lancée par le script launch_rec.sh :
ffmpeg -thread_queue_size 512 -f alsa -i hw:0,0 -thread_queue_size 512 -f video4linux2 -i /dev/video10 -c:v mjpeg -b:v 16M -c:a aac -b:a 320000 -ar 48000 -ac 2 -strict -2 -t $1 videos/VIDEO$(date +%Y-%m-%d-%Hh%M).mkv
La ligne de commande magique pour encoder en H264 (mais quelques pbs de desynchro quand fin prématurée) :
ffmpeg -thread_queue_size 512 -f alsa -i hw:0,0 -f video4linux2 -i /dev/video10 -c:v libx264 -preset slow -pix_fmt yuv420p -c:a aac -ab 320000 -ar 48000 -ac 2 -strict -2 -t $1 /media/Docs/videothon_TV/videos/VIDEO$(date +%Y-%m-%d-%Hh%M).mkv
ça doit marche aussi avec avconv :
avconv -f alsa -f video4linux2 -i /dev/video10 -c:v mjpeg -b:v 16M -c:a aac -b:a 320000 -ar 48000 -ac 2 -strict -2 -t 10 '/media/Docs/videothon_TV/videos/VIDEO$(date +%Y-%m-%d-%Hh%M).mkv'
- -thread_queue_size 512 : on allonge la queue pour plus de fluidité audio
- -f alsa : on utilise alsa
- -i hw:0,0 : le périphérique 0,0 de capture (voir arecord -l)
- -f video4linux2 : pour vidéo la source est v4l2
- -i /dev/video10 : le device virtuel 10 fourni par v4l2loopback
- -c:v libx264 -preset slow -pix_fmt yuv420p : on encode la vidéo en h264 avec le preset (pas rapide mais qualité) et un paramètre de compatibilité pour les vieux lecteurs
- -c:a aac -ab 320000 -ar 48000 -ac 2 : on encode le son en AAC à 320 kbps 48000 Hz Stéréo
- -strict -2 : pour faire avaler le code aac expérimental
- -t $1 : définit la durée d'enregistrement via le paramètre $1 passé dans le script en argument
https://support.octoshape.com/entries/25126002-Encoding-best-practices-using-ffmpeg
La ligne de commande magique pour encoder en MJPEG :
ffmpeg -thread_queue_size 512 -f alsa -i hw:0,0 -thread_queue_size 512 -f video4linux2 -i /dev/video10 -c:v mjpeg -b:v 16M -c:a aac -ab 320000 -ar 48000 -ac 2 -strict -2 -t $1 videos/VIDEO$(date +%Y-%m-%d-%Hh%M).mkv
- -b:v 16M bitrate de l'encodage video
- Add the switch “-qscale x”.The lower your x, the better is the quality (range 2 to 32, fractions allowed).