/useful/trunk-1

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/useful/trunk-1
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
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
#!/usr/bin/env bash

######
# FILE NAME: wav2mp4.sh
#
# Changes
#
# 2021-01-31:
#   * Fixed up if statments
#   * Removed eval.
#
# 2022-03-22:
#   * Make script work with gifs, and Make gifs loop.
#
######

__TMP_IMAGE_NAME=__SPEAKER_IMAGE.PNG
__OUT_NAME=""
__IN_NAME=""

__USE_DIFFERENT_IMAGE=false
__OTHER_IMAGE_NAME=""

__LOOP=false

function __usage () {
  echo "wav2mp4.sh --- Convert audio to a video for upload. "
  echo " "
  echo "-i <audio.wav>        The input audio."
  echo " "
  echo "-o <video.mp4>        The output for the video."
  echo " "
  echo "--image <image.[png,gif]>"
  echo "                      Image to use. If non is provided a standard image"
  echo "                      will be used."
  echo ""
  exit
}

function __do_cleanup () {
  rm $__TMP_IMAGE_NAME
}

function __do_convertion_gif () {
    ffmpeg\
           -i "$__IN_NAME"\
           -ignore_loop 0\
           -i "$__TMP_IMAGE_NAME"\
           -c:v libx264 -tune stillimage\
           -c:a aac -b:a 256k -pix_fmt yuv420p\
           -vf "pad=ceil(iw/2)*2:ceil(ih/2)*2" -shortest\
           "$__OUT_NAME"
}

function __do_convertion () {
  
  case $__TMP_IMAGE_NAME in
    ## FIXME: See if there are othre fileformats that need looping and such.
    *.gif)
      __do_convertion_gif
    ;;
    *)
      ffmpeg -loop 1\
            -i "$__TMP_IMAGE_NAME"\
            -i "$__IN_NAME"\
            -c:v libx264 -tune stillimage\
            -c:a aac -b:a 256k -pix_fmt yuv420p\
            -vf "pad=ceil(iw/2)*2:ceil(ih/2)*2" -shortest\
            "$__OUT_NAME"
     ;;
  esac
}


function __parse_args () {
  if [[ -z "$1" ]]
  then
    echo "Try --help or -h."
    exit 1
  fi
  
  
  while [[ $# -gt 0 ]]
  do
    
    case "${1}" in
      -i)
        __IN_NAME="$2"
      shift
      shift
      ;;
      -o)
        __OUT_NAME="$2"
      shift
      shift
      ;;
      --image)
        __USE_DIFFERENT_IMAGE=true
        __OTHER_IMAGE_NAME="$2"
      shift
      shift
      ;;
      --loop)
        __LOOP=true
      shift
      ;;
      -h|--help)
        __usage
      exit
      shift
      ;;
      *)
        __usage
      exit 1
      shift
      ;;
      --)
      shift
      break
      ;;
    esac
  done
}


function __write_image () {
  __IMAGE_BASE64="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"
  
  echo $__IMAGE_BASE64 | base64 -d -i > $__TMP_IMAGE_NAME
  
}


function __main () {
  
  if [[ $__USE_DIFFERENT_IMAGE == true ]]
  then
    # Let's not make this any more complicated.
    __TMP_IMAGE_NAME=$__OTHER_IMAGE_NAME
  else
    __write_image
  fi
  
  if [[ ! -e "$__IN_NAME" ]]
  then
    echo "missing input audio. Please provide."
    exit 1
  fi
  
  if [[ $__OUT_NAME == "" ]]
  then
    echo "missing output file name. Please provide."
    exit 1
  fi
  
  
  __do_convertion
  
  if [[ $__USE_DIFFERENT_IMAGE == false ]]
  then
    __do_cleanup
  fi
}

__parse_args "${@}"
__main