VideoThon Pure Data Linux

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

  1. Lancer le patch Pure Data : La fenêtre doit se mettre en plein écran, possibilité de la fermer avec la touche ESC
  2. Ecran d'accueil “Le VidéoThon récole vos messages”
  3. Appuyer sur la barre espace
  4. 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”
  5. Appuyer sur la barre espace : compte à rebours 4-3-2-1-0 > l'enregistrement se lance
  6. Appuyer sur la barre espace pour arrêter l'enregistrement avant les 30 secondes
  7. Ecran “Merci” et retour à l'étape 1 au bout de 2 secondes


fig:centré|500px

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]]

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).
  • videothon_pure_data_linux.txt
  • Dernière modification: 2018/09/20 17:11
  • par serge