-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path42-ffmpeg.Rmd
143 lines (108 loc) · 3.41 KB
/
42-ffmpeg.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
# FFmpeg{#ffmpeg}
## FFmpeg
### gif
https://itectec.com/superuser/how-to-convert-a-video-to-gif-using-ffmpeg-with-reasonable-quality/
http://blog.pkh.me/p/21-high-quality-gif-with-ffmpeg.html
```bash
ffmpeg \
-i %*.png \
-vf "scale=320:-1:flags=lanczos,\
split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" \
-loop 0 \
output2.gif
```
#### Créer un gif depuis une sequence d'image
* https://engineering.giphy.com/how-to-make-gifs-with-ffmpeg/
```bash
ffmpeg \
-i %*.png \
-filter_complex "[0:v] \
fps=5,scale=w=720:h=-1,split [a][b];[a] \
palettegen=stats_mode=single [p];[b][p] \
paletteuse=new=1" \
out.gif
```
#### Palindrome
https://stackoverflow.com/questions/42257354/concat-a-video-with-itself-but-in-reverse-using-ffmpeg
```bash
ffmpeg \
-i %*.png \
-filter_complex "[0:v]\
reverse,fifo[r];[0:v][r] \
concat=n=2:v=1 [v]" \
-map "[v]" \
output.gif
```
### Signaux de calibration
https://www.bogotobogo.com/FFMpeg/ffmpeg_video_test_patterns_src.php
### ex: Transcoder un fichier video vers un fichier prores compatible avec quicktime
```
ffmpeg -i INPUT.mkv -c:v prores_ks -profile:v 3 -c:a pcm_s16le -pix_fmt yuv420p OUTPUT.mov
```
Où `-profile` est un chiffre entire de -1 to 5 correspondant au profile prores suivant :
* -1: auto (default)
* 0: proxy 45Mbps YUV 4:2:2
* 1: lt 102Mbps YUV 4:2:2
* 2: standard 147Mbps YUV 4:2:2
* 3: hq 220Mbps YUV 4:2:2
* 4: 4444 330Mbps YUVA 4:4:4:4
* 5: 4444xq 500Mbps YUVA 4:4:4:4
Où `-pix_fmt yuv420p` permet de créer un fichier compatible avec Quicktime
### Compresseur sur la piste audio (compand) sans recompresser la vidéo {ffmpeg-fastaudiocompand}
Exemple pour un fichier
```bash
ffmpeg -i fichier_video_entrant.mp4 \
-vcodec copy -filter_complex \
"compand=attacks=0:points=-80/-900|-45/-15|-27/-9|0/-7|20/-7:gain=5" \
fichier_video_sortant.mp4
```
Exemple pour traiter tous les fichiers d'un dossiers.
Le script prend un dossier comme argument et traite tous les fichiers présent.
Le fichier sortant sera précédé de `comp_`
```bash
for file in "$1"*
do
if [ -f "$file" ]; then
echo "$file"
DOSSIER=`dirname "$file"`
FICHIER=`basename "$file"`
ffmpeg -i "$file" \
-vcodec copy -filter_complex \
"compand=attacks=0:points=-80/-900|-45/-15|-27/-9|0/-7|20/-7:gain=5" \
"$DOSSIER"/_"$FICHIER"
fi
done
```
* Documentation de compand
* https://ffmpeg.org/ffmpeg-filters.html#compand
* Bonne source d'information ici :
* https://medium.com/@jud.dagnall/dynamic-range-compression-for-audio-with-ffmpeg-and-compand-621fe2b1a892
## FFplay
https://trac.ffmpeg.org/wiki/FancyFilteringExamples
### mandelbrot et analyse visuelle
```bash
ffplay -f lavfi -i mandelbrot \
-vf "format=gbrp,split=4[a][b][c][d],\
[d]histogram=display_mode=0:level_height=244[dd],\
[a]waveform=m=1:d=0:r=0:c=7[aa],\
[b]waveform=m=0:d=0:r=0:c=7[bb],\
[c][aa]vstack[V],\
[bb][dd]vstack[V2],\
[V][V2]hstack"
```
### mandelbrot et historique de position de couleurs?
```bash
ffplay -f lavfi -i mandelbrot -vf \
"format=yuv444p,split=4[a][b][c][d],\
[a]waveform[aa],[b][aa]vstack[V],\
[c]waveform=m=0[cc],\
[d]vectorscope=color4[dd],\
[cc][dd]vstack[V2],[V][V2]hstack"
```
## ffmpeg grab gl
https://stackoverflow.com/questions/40689505/capturing-and-streaming-with-ffmpeg-while-displaying-locally
```
ffmpeg -f x11grab [grab parameters] -i :0.0 \
[transcode parameters] -f [transcode output] \
-f opengl "Window title"
```