TetaTricks/chap/video.tex
2022-01-19 23:31:51 +01:00

172 lines
5.7 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).
% https://unixsheikh.com/tutorials/remuxing-iso-dvd-or-bluray-using-cat-and-ffmpeg-on-linux.html
% --------------------------------------------------------------------
\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, et d'après d'autres rumeurs
(je confirme clairement) c'est vraiment tortueux à utiliser.
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 »,
vidéo dont il a composé la bande originale.
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}
Comment convertir lors de l'encodage un fichier \texttt{.WAV}
en un format compressé afin de ne pas saturer la buvette ?
\textsf{il dit qu'il ne comprend pas la question.}
Quand on encode en // images et son, comment arreter quand on atteint
la fin du plus court des deux flux ?
\textit{look up the options -shortest and -apad}
Comment limiter le nombre de \textsl{cores} utilisés lors d'un encodage
violent sur une toute petite machine\footnote{Coucou le défunt Vaio :)} ?
% --------------------------------------------------------------------
\section{VLC} \index{vlc}
VLC est un peu le couteau suisse à 112 lames du multimédia.
Son emblème est un cône de chantier, mais je ne sais pas
si ça a un sens caché. Mais soyons sérieux deux minutes.
VLC propose une interface clickconvi, que nous allons
soigneusement éviter, pour nous concentrer sur la ligne
de commande.
Pour balancer toutes les vidéos en boucle random~:
\texttt{vlc -f -Z *.mp4}. Mais comment supprimer l'affichage
du nom de fichier au début de chaque séquence ?
VLC peut éventuellement aussi être utilisé comme un outil
de streaming, voyez ça page \pageref{streamvlc}, bon courage.
% --------------------------------------------------------------------
\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 -}
% --------------------------------------------------------------------