TetaTricks/chap/video.tex
2021-01-20 04:53:48 +01:00

146 lines
4.6 KiB
TeX

\chapter{Vidéo}
\label{chap:video}
Le traitement de la vidéo, c'est vraiment compliqué : entre
les multiples \textsl{codec} et les multiples \textsl{containers},
on est rapidement perdu. Voici donc quelques recettes de cuisine
à appliquer avec modération (et respect des gestes barrières).
% --------------------------------------------------------------------
\section{mplayer}
\index{mplayer}
Une belle grosse usinagaz...
\texttt{mplayer tv:// -tv
driver=v4l2:width=640:height=480:fps=25:device=/dev/video0}
\texttt{mencoder tv:// -tv driver=v4l2:width=640:height=480:fps=25:device=/dev/
video0:forceaudio:alsa=1:adevice=default -ovc lavc -oac mp3lame -lameopts
cbr:br=64:mode=3 -o}
Pour faire une planche contact d'une vidéo :
\texttt{mplayer -benchmark -nosound -quiet -zoom -vf scale=320:-3 -vo
jpeg:outdir=/tmp -sstep 60 monfichier.ts}
% --------------------------------------------------------------------
\section{ffmpeg}
\index{ffmpeg}
D'après certaines rumeurs des intertubes, ce serait un peu le remplaçant
de mencoder pour pas mal de trucs...
Pour convertir une sextape prise avec un \textit{iMachin} :
\texttt{ffmpeg -i tthsf.mov -target film-dvd sextape.mpeg}
Extraire le son d'une vidéo Youtube :
\texttt{ffmpeg -i myvideo.flv -f mp3 -vn -acodec copy myvideo.mp3}
\texttt{ffmpeg -i fichiervideo.flv -vn -ar 44100 -ac 2 -f wav fichierson.wav}
\texttt{mplayer -vo png -ss 3:46 -frames 20 stairs.mp4}
\# Write out 20 png format frames from a video starting at 3 minutes, 46 seconds.
Tu peux générer les images de transition avec
ImageMagick\index{ImageMagick} :
\texttt{convert a.png b.png -alpha set -channel A
-evaluate set 10\% +channel
-compose src-atop -composite -alpha off out.png}
Tu peux assez facilement insérer ça dans une boucle et piper
les images à ffmpeg :
\begin{verbatim}
for image in ...; do
next=... dépend de tes noms de fichiers
for a in {0..24}; do
convert $image $next -alpha set -channel A -evaluate set $[i*4]% \
+channel -compose src-atop -composite -alpha off png:-
done
done |
ffmpeg -f image2pipe -c png -i - ...
\end{verbatim}
\subsection{quelques trucs en vrac}
\begin{verbatim}
fichier .avi -> mpeg ( qualité DVD )
ffmpeg -i fichier.avi -target pal-dvd fichier.mpeg
fichier .avi -> mpeg ( qualité DVD, bitrate 7Mbps, 16/9 )
ffmpeg -i fichier.avi -target pal-dvd -aspect 16:9 -b 7000000
fichier.mpeg
fichier .avi -> mpeg ( qualité dvd, en 2 passes, 16/9 )
ffmpeg -i fichier.avi -target pal-dvd -aspect 16:9 -pass 1
fichier_tempo.mpeg
ffmpeg -i fichier.avi -target pal-dvd -aspect 16:9 -pass 2
fichier_final.mpeg
préciser le "framerate" ( images par secondes : ici 25 )
ffmpeg -i fichier.avi -r 25 fichier.mpeg
préciser la taille ( défaut = taille du source ( option -s ))
ffmpeg -i fichier.avi -s 720x576 fichier.mpeg
les deux précédents :
ffmpeg -i fichier.avi -r 25 -s 640x480 fichier.mpeg
préciser le coef de qualité ( qscale : 1 = le mieux / 3 = correcte )
ffmpeg -i fichier.dv -target pal-dvd -qscale 2 Fichier.mpeg
\end{verbatim}
https://engineering.giphy.com/how-to-make-gifs-with-ffmpeg/ \index{gif89a}
\subsection{Encoder un cloître}
Là, nous sommes dans du \textsl{serious bizness}, puisque cette vidéo
a été programmée par James Lewis pour la résidence « Sonoptic 2020 ».
C'est donc un exemple réel, avec même des méta-données.
\begin{verbatim}
ffmpeg -nostdin \
-y -r 30 -f image2 -i lf/%06d.png \
-metadata artist='--[ tTh ]--' \
-metadata title='-- Un cloitre en POVray --' \
-c:v libx264 \
-pix_fmt yuv420p \
-tune film \
wip.mp4
\end{verbatim}
\subsection{Questions}
Quand on encode en // images et son, comment arreter quand on atteint
la fin du plus court des deux flux ?
Comment limiter le nombre de \textsl{cores} utilisés lors d'un encodage
violent sur une toute petite machine\footnote{Coucou le Vaio :)} ?
% --------------------------------------------------------------------
\section{Autres trucs}
La video informatique, c'est d'une complexité effarante. La multitude
de codecs, la foultitude de containers, et les nombreuses variantes de
combinaisons codec/container rendent la compréhension de cet univers
assez perturbante.
\subsection{rtmp} \index{rtmp}
\texttt{flvstreamer -r rtmp://lacantine.live-fstreams.cdn02.rambla.be:1935/live-lacantine/live-lacantine-2 | mplayer -}
% --------------------------------------------------------------------