You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
167 lines
5.4 KiB
167 lines
5.4 KiB
\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, 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 ». |
|
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 ? |
|
|
|
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}. |
|
|
|
VLC peut éventuellement aussi être utilisé comme un outil |
|
de streaming, voyez ça page \pageref{streamvlc}. |
|
|
|
% -------------------------------------------------------------------- |
|
|
|
\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 -} |
|
|
|
% -------------------------------------------------------------------- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|