Édition vidéo sous GNU/Linux
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
- 1 Screencast
- 2 Écouter une vidéo
- 3 Info disponible
- 4 Édition
- 5 Son
- 6 Dump des frames sous formes d'images
- 7 Faire un film avec des images statiques
- 8 Réduire la dimension d'un fichier vidéo
- 9 Encodage
- 9.1 codec disponible
- 9.2 h265 -> h264 (pour lire sur SmartTV)
- 9.3 dv -> h264
- 9.4 Ogg Theora
- 9.5 Convertir mpg4
- 9.6 Convertir un avi en mpeg
- 9.7 Convertir n'importe quoi en dvix
- 9.8 Conversion 3 passes avec son et redimension!
- 9.9 Convertir en format flash (tm)
- 9.10 Changer le framerate
- 9.11 Sortie en ascii
- 9.12 Convertir en quelque chose qui peut être ingéré par Final Cut
- 10 Générique
- 11 Sous-titre
- 12 Voir aussi
Screencast[modifier]
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.
Écouter une vidéo[modifier]
DVD[modifier]
mplayer dvdnav://
DVD copié sur disque dur[modifier]
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
.#
Info disponible[modifier]
Vidéo[modifier]
ffmpeg -i movie.avi
Durée du vidéo[modifier]
exiftool film.avi
Édition[modifier]
Coller 2 films bout à bout[modifier]
Faire la commande:
ffmpeg -f concat -safe 0 -i fichier.txt -c copy output.mp4
où 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
Extraire/couper une section de film[modifier]
ffmpeg -v error -stats -ss 00:39:00 -i input.mkv -to 00:03:54 -codec copy -avoid_negative_ts make_zero output.mkv
Obsolète[modifier]
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
mkv:
Faire une rotation à un film[modifier]
ffmpeg -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:
ffmpeg -i video.mp4 -vf transpose=1,transpose=1 out.mkv
Redimensionner (hauteur-largeur) un film[modifier]
mencoder -o tmp.avi -oac copy -vf scale=320:240 -ovc lavc -lavcopts vcodec=mpeg4 -oac copy film.avi
Changer la vitesse d'un film[modifier]
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.
Son[modifier]
Convertir un mp3 en wav[modifier]
mpg123 -w file.wav file.mp3
Fusion du son et du video[modifier]
ffmpeg -i input.mp4 -i input.mp3 -c copy -map 0:v:0 -map 1:a:0 output.mp4
Voilà qui donne des fichiers plus petits, mais qui prend plus de temps:
ffmpeg -i "videoFile.mp4" -i "audioFile.mp3" -shortest outPutFile.mp4
Avec fichier audio en boucle s'il est moins long que la vidéo:
ffmpeg -i video_sans_son.mkv -f lavfi -i amovie=/chemin/acces/fichier.mp3:loop=0,asetpts=N/SR/TB -shortest output.mkv
Ce qui est permis semble fonction des formats de fichier en entrée et en sortie:
ffmpeg -i input.ogv -i sound.wav -codec copy -shortest output.avi
Extraire le son d'un film[modifier]
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
Retirer le son d'un film[modifier]
ffmpeg -i input.avi -vcodec copy -an output.avi
Convertir un ac3 en wav[modifier]
mplayer -ao pcm input.ac3
Ça va créer un fichier audiodump.wav
Convertir un wav en mpeg2 (mp2)[modifier]
ffmpeg -i input.wav -ab 256 output.mp2
Augmenter le volume[modifier]
normalize-mp3 --amplitude -1dBFS fichier.mp3
Extraire l'audio d'une archive d'émission radio de Radio-Canada[modifier]
mplayer -dumpstream -playlist http://www.radio-canada.ca/Medianet/2011/CBSI/Bonjourlacote201108250718.asx
Dump des frames sous formes d'images[modifier]
mplayer -vo jpeg maison1.mpg
Plus moderne:
ffmpeg -i input.ogv images/%03d.png
Faire un film avec des images statiques[modifier]
Plusieurs images[modifier]
- 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.
Une image[modifier]
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
Réduire la dimension d'un fichier vidéo[modifier]
(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
Encodage[modifier]
codec disponible[modifier]
mencoder -ovc help -oac help ffmpeg -codecs
h265 -> h264 (pour lire sur SmartTV)[modifier]
ffmpeg -i input -c:v libx264 -crf 18 -c:a copy output.mkv
dv -> h264[modifier]
avconv -i input.dv -vcodec h264 output.mkv
Ogg Theora[modifier]
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
Convertir mpg4[modifier]
ffmpeg -i movie.mov -vcodec copy -acodec copy out.mp4
Même qualité[modifier]
L'ordre des arguments semble avoir son importance:
ffmpeg -i input.mp4 -qscale 0 -vcodec libx264 -acodec libfaac ouput.mp4
Convertir un avi en mpeg[modifier]
mencoder input.avi -o output.mpg -ovc lavc -oac mp3lame -of mpeg
Convertir n'importe quoi en dvix[modifier]
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
Conversion 3 passes avec son et redimension![modifier]
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"
Convertir en format flash (tm)[modifier]
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
où
-i input file name
-ar audio sampling rate in Hz
-ab audio bit rate in kbit/s
-f output format
-s output dimension
Changer le framerate[modifier]
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
Sortie en ascii[modifier]
Il faut utiliser la librairie caca
:
mplayer -vo caca film.avi
Convertir en quelque chose qui peut être ingéré par Final Cut[modifier]
mencoder -oac pcm -ovc x264 -x264encopts bitrate=40000 $INPUT -o $OUTPUT.avi
Générique[modifier]
Sous-titre[modifier]
Graver dans le film[modifier]
ffmpeg -i input.mkv -vf subtitles=sous-titre.srt output.mkv
Avec une police plus grande:
ffmpeg -i input.mkv -vf "subtitles=sous-titre.srt:force_style='Fontsize=24" la_chute_3e_lien.mkv
Extraction[modifier]
mkv[modifier]
Inspect the file:
mkvmerge -i input.mkv
This will list the tracks, for example like this:
File 'input.mkv': container: Matroska Track ID 1: video (V_MPEG4/ISO/AVC) Track ID 2: audio (A_AAC) Track ID 3: subtitles (S_TEXT/UTF8)
Based on the ID of the track, call the following command, where <trackID> is the one you identified above. <output> is just a dummy name, you can use any you want.
mkvextract tracks input.mkv <trackID>:<output>.srt
mp4[modifier]
ffmpeg -i input.mp4 -vf subtitles=soustitre.srt -codec:v libx264 -crf 23 -preset medium -codec:a copy output.mp4
Éditer la police[modifier]
Il faut convertir le fichier en format ass et l'éditer par la suite:
ffmpeg -i fichier.srt fichier.ass