Édition vidéo sous GNU/Linux

De Octet.ca

Page d'aide pour manipuler des vidéos sous GNU/Linux. Plusieurs commandes sont obsolètes, notamment celle avec mencoder. Je les mets à jour avec du ffmgep au fur et à mesure que je dois les utiliser.

Voir aussi la page DVD.

Sommaire

[modifier] Screencast

Pour faire les screencast, j'ai utilisé le logiciel 'recordmydesktop'. Tu peux obtenir l'id de la fenêtre sur laquelle effectuer le screencast en tapant cette commande:

xwininfo

Il va ensuite falloir cliquer sur la fenêtre en question pour obtenir son id (un code en hexa de la sorte '0x294ae5d'). Par la suite, j'utilise cet id dans ma commande recordmydesktop:

recordmydesktop  -o nom_du_fichier_video_a_generer --no-sound --windowid 0x294ae5d --v_bitrate 200000

L'option --v_bitrate 200000 donne un screencast avec des images beaucoup plus fluides que ce que l'on obtient normalement avec recordmydesktop.


[modifier] Écouter une vidéo

[modifier] DVD copié sur disque dur

Si c'est un DVD qui est simplement copié, sans encodage, utiliser la commande:

mplayer -dvd-device /path/fichier/du/DVD dvd://1

Dans le répertoire, il doit y a voir les répertoires AUDIO_TS VIDEO_TS.#


[modifier] Info disponible

[modifier] Vidéo

ffmpeg -i movie.avi

[modifier] Durée du vidéo

exiftool film.avi

[modifier] Édition

[modifier] Coller 2 films bout à bout

Faire la commande:

ffmpeg -f concat -safe 0 -i fichier.txt -c copy output.mp4

ficher.txt contient le chemin d'accès sur chaque ligne:

file '/chemin/acces/fichier.mp4'

Étape pour avoir le bon formatage:

ls *mp4 > fichier.txt
sed -i "s/$/\'/" fichier.txt
sed -i "s/^/file '/" fichier.txt

[modifier] Extraire/couper une section de film

Pour débuter un film à la 38 seconde 38 et le faire durer pendant 1:12 minute. Pour aller jusqu'à la fin, omettre l'option -i:

avconv  -i  in.avi -ss  00:00:38 -vcodec copy -acodec copy -t 00:01:12  out.avi
ffmpeg  -i  in.avi -ss  00:00:38 -vcodec copy -acodec copy -t 00:01:12  out.avi


Tutorial avec Avidemux.

[modifier] Faire une rotation à un film

avconv -i video.mp4 -vf transpose=0 out.mkv
                0    Rotate by 90 degrees counterclockwise and vertically flip.
                1    Rotate by 90 degrees clockwise.
                2    Rotate by 90 degrees counterclockwise.
                3    Rotate by 90 degrees clockwise and flip.

Il est possible d'enchaîner les transformations. Pour avoir une rotation de 180 degrés:

avconv -i video.mp4 -vf transpose=1,transpose=1 out.mkv

[modifier] Redimensionner (hauteur-largeur) un film

mencoder -o tmp.avi -oac copy -vf scale=320:240 -ovc  lavc -lavcopts vcodec=mpeg4 -oac copy film.avi

[modifier] Changer la vitesse d'un film

Provient de KubuntuBlog

mencoder -oac copy -ovc copy -speed 2 -ofps 25 -o Fichier_rapide.avi Fichier_source.avi

L'option -speed prend en argument le facteur par lequel on veut accélérer le film (1.0<x<100) ou décélérer (0<x<1.0). On recommande chaudement à l'éditeur en herbe de changer le framerate si le film résultant est de qualité médiocre.

[modifier] Son

[modifier] Convertir un mp3 en wav

mpg123 -w file.wav file.mp3

[modifier] Fusion du son et du video

ffmpeg -i "videoFile.mp4" -i "audioFile.mp3" -shortest outPutFile.mp4

[modifier] Extraire le son d'un film

Copie du son:

avconv -i input.mp4 -acodec copy output.aac
ffmpeg -i out-1.ogv -acodec copy -vn audio.ogg

conversion en mp3:

avconv -i input.mp4 output.mp3

Dans les cas où c'est un codec plus complexe, on peut réencoder en wav:

mplayer -ao pcm:file=audio.wav movie_file.avi

Si c'est un fichier mpeg, on peut retirer le son tout simplement, c'est un mp3 ou un ac3:

mplayer -dumpaudio -dumpfile output.mp3  input.mpg

[modifier] Retirer le son d'un film

ffmpeg -i input.avi -vcodec copy -an output.avi

[modifier] Convertir un ac3 en wav

mplayer -ao pcm input.ac3

Ça va créer un fichier audiodump.wav

[modifier] Convertir un wav en mpeg2 (mp2)

ffmpeg -i input.wav -ab 256 output.mp2

[modifier] Augmenter le volume

normalize-mp3 --amplitude -1dBFS fichier.mp3

[modifier] Extraire l'audio d'une archive d'émission radio de Radio-Canada

mplayer -dumpstream -playlist http://www.radio-canada.ca/Medianet/2011/CBSI/Bonjourlacote201108250718.asx

[modifier] Dump des frames sous formes d'images

mplayer -vo jpeg maison1.mpg

[modifier] Faire un film avec des images statiques

[modifier] Plusieurs images

  • Mettre la liste des fichiers ordonnées dans "liste.txt"
transcode  -i liste.txt -x imlist,null -g 640x480 -y xvid,null \
-f 24.0 -o movie.avi -H 0 -k -V rgb24
-k swap red/blue (Cb/Cr) in video frame [off]. Use if people have blue faces.

[modifier] Une image

ffmpeg -loop 1 -i image.jpg -i audio.wav -c:v libx264 -tune stillimage -c:a aac -strict -2 -b:a 192k -pix_fmt yuv420p -shortest out.mp4

[modifier] Réduire la dimension d'un fichier vidéo

(source)
Il faut diviser l'espace souhaitée pour le fichier par le nombre de secondes que dure la vidéo. Pour avoir la durée d'une vidéo en secondes:

ffmpeg -i  input.mp4 2>&1 | grep "Duration"| cut -d ' ' -f 4 | sed s/,// | sed 's@\..*@@g' | awk '{ split($1, A, ":"); split(A[3], B, "."); print 3600*A[1] + 60*A[2] + B[1] }'

Il faut par la suite faire le calcul pour le bitrate. Par exemple, si je désire qu'une vidéo d'une durée 4:33 (273 secondes) occupe 300 Mo, je dois faire le calcul (300 Mo * 1024 Ko/Mo * 8 bit/octet)/273 secondes = 9000 Kb/sec:

Espace-désiré-Mo * 8192 / nbr-secondes-video

La ligne de commande sera ainsi

 ffmpeg -i input.mp4 -strict -2 -b:v 9000k output.mp4

Additional options that might be worth considering is setting the Constant Rate Factor, which lowers the average bit rate, but retains better quality. Vary the CRF between around 18 and 24 — the lower, the higher the bitrate.

   ffmpeg -i input.mp4 -vcodec libx264 -crf 20 output.mp4

[modifier] Encodage

[modifier] codec disponible

mencoder -ovc help -oac help
ffmpeg -codecs

[modifier] dv -> h264

avconv -i input.dv  -vcodec h264 output.mkv

[modifier] Ogg Theora

mp4 à ogv, même qualité:

ffmpeg -i input.mp4 -c:v libtheora -q:v 7 -c:a libvorbis -q:a 4 output.ogv 

Pour créer un fichier Ogg Theora:

ffmpeg2theora input.dv -o output.ogg

Pour convertir un fichier Ogg Theora en xvid, il faut spécifier le bitrate audio:

mencoder inputfile.ogg -oac lavc -ovc lavc -lavcopts abitrate=160 -o outputfile.avi

[modifier] Convertir mpg4

ffmpeg -i movie.mov -vcodec copy -acodec copy out.mp4

[modifier] Même qualité

L'ordre des arguments semble avoir son importance:

 ffmpeg -i input.mp4 -qscale 0 -vcodec libx264 -acodec libfaac ouput.mp4

[modifier] Convertir un avi en mpeg

mencoder input.avi -o output.mpg -ovc lavc -oac mp3lame -of mpeg

[modifier] Convertir n'importe quoi en dvix

mencoder input.quelque_chose -o output.avi -ovc lavc -oac lavc

Pour les fichiers vidéo avec la caméra Sony PowerShot:

mencoder -ovc lavc -oac mp3lame -srate 48000 input.avi -o output.avi

[modifier] Conversion 3 passes avec son et redimension!

Commandes provenant de SimpleRip.

Son

# rip audio track (bitrate: 128, gain: 0)
nice -n 3 mencoder -oac mp3lame -lameopts mode=2:cbr:br=128:vol=0 \
-ovc frameno -o frameno.avi  input.dv

Passe 1

# video track (pass: 1, bitrate: 1000)
nice -n 3 mencoder -sws 2 -oac copy -ovc lavc \
-lavcopts vcodec=mpeg4:vbitrate=1000:vhq:vpass=1 \
-ffourcc XVID -vf crop=552:368:6:56  input.dv -o /dev/null

Passe2

# video track (pass: 2, bitrate: 1000)
nice -n 3 mencoder -sws 2 -oac copy -ovc lavc \
-lavcopts vcodec=mpeg4:vbitrate=1000:vhq:vpass=2 \
-ffourcc XVID -vf crop=552:368:6:56  input.dv -o "output.mpg"

[modifier] Convertir en format flash (tm)

Cette ligne de commande provient de Yet Another Blog from Luar.

ffmpeg -i video.avi -ar 44100 -ab 32 -f flv -s 320x240 video.flv


-i input file name
-ar audio sampling rate in Hz
-ab audio bit rate in kbit/s
-f output format
-s output dimension

[modifier] Changer le framerate

L'option est -ofps $FRAMERATE. Pour obtenir 29.97, il suffit d'utiliser la fraction 30000/1001. Simple!

mencoder -oac copy -ovc copy -ofps 30000/1001 source.avi -o output.avi


[modifier] Sortie en ascii

Il faut utiliser la librairie caca:

mplayer -vo caca film.avi

[modifier] Convertir en quelque chose qui peut être ingéré par Final Cut

mencoder -oac pcm -ovc x264 -x264encopts bitrate=40000 $INPUT -o $OUTPUT.avi

[modifier] Générique

dvtext

[modifier] Sous-titre

Pour un mp4:

ffmpeg -i input.mp4 -vf subtitles=soustitre.srt -codec:v libx264 -crf 23 -preset medium -codec:a copy output.mp4

[modifier] Éditer la police

Il faut convertir le fichier en format ass et l'éditer par la suite:

ffmpeg -i fichier.srt fichier.ass

[modifier] Voir aussi

Outils personnels