ffmpeg & Sox
Commandes utiles et exemples pratiques avec ffmpeg
Installation
Debian, installer les bons dépôts
1apt-get install ffmpeg sox
MacOS, utiliser homebrew
1brew install ffmpeg sox
Générer une vidéo mp4/aac h264 à partir d'une image .jpg et d'un son .wav
1ffmpeg -loop 1 -i input.jpg -i input.wav -c:v libx264 -c:a aac -strict experimental -b:a 192k -shortest output.mp4
Convertir un mp2 256Kb/s 48kHz stéréo issu d'Adeuxi en un mp3 128Kb/s 44.1Khz stéreo
1ffmpeg -i input.mp2 -b:a 128k -ar 44100 output.mp3
Convertir un répertoire de wav en mp3, en qualité max (320Kbps)
1for i in *.wav; do ffmpeg -i "$i" -q:a 0 "${i%.wav}.mp3"; done;
Réduire une grande image à une largeur max de 500px, hauteur libre
1ffmpeg -i input.jpg -vf scale=500:-1 output.jpg
Convertir un m4v export de Final Cut, en format mp4 lisible pour le web (chargement court, débit moyen)
1ffmpeg -i video.m4v -movflags +faststart -b:v 1500k -b:a 192k video.mp4
Note Noémie
1- cut : (ss = timecode début, to = durée)
1ffmpeg -ss 00:09:10 -i ZOOM0021.MOV -to 00:50:00 -c copy les-mondes-engloutis.mp4
2- la complète : normalisation, brightness, faststart, débit audio/video
1ffmpeg -i les-mondes-engloutis.mp4 -af "volume=12.3dB" -vf "lutyuv=y=val*1.5" -c:a aac -strict experimental -b:a 192k -movflags faststart -b:v 1200k export/les-mondes-engloutis.mp4
detect niveau d'amplification possible. ex niveau max -5dB
1ffmpeg -i video.avi -af "volumedetect" -f null /dev/null
normalize avec +5dB
1ffmpeg -i cornflakes-girl.mp4 -af "volume=12.2dB" -c:v copy -c:a aac -strict experimental -b:a 192k cornflakes-girl2.mp4
video + lumineuse
1ffmpeg -i input.avi -vf "lutyuv=y=val*1.3" -vcodec ... -acodec ... output.avi
2ffmpeg -i ZOOM0001.MOV -ss 25 -t 5 -vf "lutyuv=y=val*1.3" 1.mp4
fast start
1ffmpeg -i in.mp4 -c:a copy -c:v copy -movflags faststart out.mp4
Désentrelacement, conv DV vers mp4, limitation du débit
1ffmpeg -ss 00:00:00 -i cam4-1.dv -to 00:04:14 -vf yadif -b:v 3000k cam4-1.mp4
Split d'un fichier audio par détection de silence
1er triplet : détection d'un silence initial, d'au moins 0.5 sec en dessous d'un seuil à 0.1% 2ème triplet : détection d'un silence au cours du fichier, d'au moins 0.5 sec en dessous d'un seuile à 0.1% boucler et écrire des fichiers séparés : export_001.wav, export_002.wav ...
1sox source.wav export_.wav silence 1 0.5 0.1% 1 0.5 0.1% : newfile : restart
Incrustation par chromakey
colorkey prend une valeur rgb chromakey prend une valeur yuv
1ffmpeg -y -i background.mp4 -i overlay-with-chromakey.mp4 -filter_complex "[1:v]colorkey=0x22aa00:similarity=0.3[1v]; [0:v][1v]overlay[v]" -map "[v]" -an output.mp4
Crop vidéo, 2mono vers stéréo, 2 pistes audios,
Issu du Q8, on réassemble INPUT1 et INPUT2 dans un fichier stéréo -> piste audio 1 la stéréo console -> piste audio 2 la vidéo d'origine est croppée -> piste vidéo 1 on prend du début et on cut à 30min on réencode le tout en h264 + aac dans un conteneur mp4
1ffmpeg -i 06-e-core-INPUT1.m4a -i 06-e-core-INPUT2.m4a -i 06-e-core-LR.m4a -i 06-e-core-no-sound.mp4 -filter_complex "[0:a][1:a]join=inputs=2:channel_layout=stereo[a]" -map "[a]" -map 2 -map 3:v -c:a:2 copy -c:a:1 libfdk_aac -b:a 256k -c:a:2 copy -filter:v "crop=1280:720:320:0" -c:v libx264 -to 00:30:00 06-ecore-croped-30.mp4
Stretcher un audio
exemple +25% :
1ffmpeg -y -i test1.WAV -filter:a "atempo=1.25" test1-stretch.WAV
tests
1ffmpeg -ss 00:00:00 -i cam4-1.dv -to 00:00:05 -vf yadif -vf scale=1024x576 -b:v 2000k _cam4-1.mp4
2ffmpeg -ss 00:00:00 -i cam4-1.dv -to 00:00:10 -vf yadif -vf scale=1024x576,setdar=4:3 -b:v 2000k _cam4-1.mp4
3ffmpeg -ss 00:00:00 -i cam4-1.dv -to 00:00:10 -vf yadif -vf scale=1024x576,setdar=16:9 -b:v 2000k _cam4-1.mp4
Liste des périphériques compatibles sous MacOS
1ffmpeg -hide_banner -f avfoundation -list_devices true -i ""
Export webcam du Macbook vers fichier
-i "videoDeviceName:audioDeviceName"
1ffmpeg -hide_banner -f avfoundation -pix_fmt bgr0 -r 25 -s 1280x720 -i "Caméra FaceTime HD (intégrée):Built-in Microphone" -s 640x360 -r 25 -c:v libx264 -c:a aac out.mp4
Stream vers serveur Facebook Live
Aller sur https://www.facebook.com/live/producer/
l'url de sortie est "URL du serveur" concaténé à "Clé de stream"
1ffmpeg -re -i "local-movie.mkv" -c:v libx264 -c:a copy -b:v 300k -maxrate 300k -bufsize 300k -f flv "rtmps://live-api-s.facebook.com:443/rtmp/10219340923617150?s_bl=1&s_ps=1&s_sw=0&s_vt=api-s&a=AbzhD2I9lw1nkVcN"