# ffmpeg : quelques commandes utiles

## Couper une vidéo

```
ffmpeg -i src.mp4 -ss 00:00:00 -t 00:00:01 -async 1 out.mp4
```

Ne garde que une seconde à partir du début de la vidéo. -t précise une durée, pas la fin.

```
ffmpeg -i src.mp4 -ss 00:00:02 -to 00:00:05 -async 1 out.mp4
```

Ne rien réencoder, pas même les sous-titres
```
-c:v copy -c:a ac3 -c:s copy
```

Garde la vidéo située entre la 2e seconde et la 5e.

```
ffmpeg -i src.mkv -ss 00:00:00 -to 00:06:44 -map 0 -async 1 out.mkv
```

Garde les 6,44 premières minutes et conserve tous les sous-titres avec ''-map 0''

## Ne pas réencoder la vidéo

```
-vcodec copy 
```

## Ne pas réencoder le son

```
-acodec copy
```

## Taille 2 fois plus petite

```
 -vf "scale=iw/2:ih/2"
```

## Encodage en VP9

Cet encodeur est impressionnant. J'utilise ce script :

```
#!/bin/sh
# require ffmpeg
# convert video to webm using vp9 encoder

for i in $@; do
  j="${i%.*}"
  ffmpeg -i ${i} -c:v libvpx-vp9 -b:v 0 -crt 31 -pass 1 -an -f webm /dev/null -y && \
  ffmpeg -i ${i} -c:v libvpx-vp9 -b:v 0 -crt 31 -pass 2 -c:a libopus ${j}.webm
done
```

## Ajouter et remplacer l'audio

L'option "shortest" permet de ne pas rallonger la vidéo si le son est plus long que cette dernière.

```
ffmpeg -i video.avi -i audio.mp3 -codec copy -shortest output.avi
```

Ajouter l'option "-itsoffset 3.84" permet de décaler le flux qui sera précisé ensuite. Il faut donc la préciser juste avant "-i audio.mp3" pour décaler l'audio.

---
/