Changes of Revision 17

ffx264.changes Changed
x
 
1
@@ -1,4 +1,20 @@
2
 -------------------------------------------------------------------
3
+Sun Nov 13 11:36:00 UTC 2016 - neutrino8@opensuse.org
4
+
5
+- Update to version 3.1.6
6
+  * Added support for batch encoding mode, to be activated with the
7
+    new -b option. It's used to encode directories with video files
8
+  * Renamed variable $mode to $encmode for clarity
9
+  * Reworked the input/output code
10
+  * Instead of relying on a config var to set the subtitles amount
11
+    to support, ask the user each time to provide it. Makes the
12
+    code less complex and easier to extend in the future. Bumps up
13
+    config file version to 26
14
+  * Check if the X264PARAMS var is missing from config in case we're
15
+    not using an x264 preset
16
+  * Updated the man page
17
+  
18
+-------------------------------------------------------------------
19
 Sat Nov 12 10:48:00 UTC 2016 - neutrino8@opensuse.org
20
 
21
 - Update to version 3.1.5
22
ffx264.spec Changed
10
 
1
@@ -17,7 +17,7 @@
2
 
3
 
4
 Name:           ffx264
5
-Version:        3.1.5
6
+Version:        3.1.6
7
 Release:        0
8
 Summary:        A small shell script for encoding to H.264 with ffmpeg
9
 License:        GPL-2.0+
10
ffx264-3.1.5.tar.gz/ChangeLog -> ffx264-3.1.6.tar.gz/ChangeLog Changed
18
 
1
@@ -1,3 +1,16 @@
2
+2016-11-13 - ffx264 3.1.6
3
+   * Added support for batch encoding mode, to be activated with the
4
+     new -b option. It's used to encode directories with video files
5
+   * Renamed variable $mode to $encmode for clarity
6
+   * Reworked the input/output code
7
+   * Instead of relying on a config var to set the subtitles amount
8
+     to support, ask the user each time to provide it. Makes the
9
+     code less complex and easier to extend in the future. Bumps up
10
+     config file version to 26
11
+   * Check if the X264PARAMS var is missing from config in case we're
12
+     not using an x264 preset
13
+   * Updated the man page
14
+   
15
 2016-11-12 - ffx264 3.1.5
16
    * Added support for importing external srt/ssa subtitles for the
17
      mkv, m2ts, mts and ts containers
18
ffx264-3.1.5.tar.gz/ffx264 -> ffx264-3.1.6.tar.gz/ffx264 Changed
566
 
1
@@ -2,8 +2,8 @@
2
 #
3
 # Small script to encode to H.264/AVC video using FFmpeg and libx264.
4
 # Author: Grozdan "microchip" Nikolov <neutrino8@opensuse.org>
5
-# Version: 3.1.5
6
-# Date: 2016-11-12
7
+# Version: 3.1.6
8
+# Date: 2016-11-13
9
 #
10
 # ffx264 is free software ; you can redistribute it and/or modify
11
 # it under the terms of the GNU General Public License as published by
12
@@ -23,10 +23,10 @@
13
 brown() { echo -e "\e[0;33m$1\e[0;39;49m"; }
14
 error() { echo -e "\e[1;31m$1\e[0;39;49m"; }
15
 
16
-version="3.1.5"
17
+version="3.1.6"
18
 
19
 CFG="$HOME/.ffx264"
20
-cfgversion="25"
21
+cfgversion="26"
22
 
23
 genconfig_func() {
24
 cat<<EOF>>"$CFG"
25
@@ -96,17 +96,11 @@
26
 # detected audio tracks
27
 MAX_AUD_TRACKS="2"
28
 
29
-# Set to "n" to disable subtitles
30
+# Enable subtitles support?
31
 # Note: not all containers support
32
 # all types of subs!
33
 SUBS="y"
34
 
35
-# Max amount of subtitles to support
36
-# Any non-zero value will do. Set it
37
-# to "auto" to ask for as many as
38
-# detected subtitles
39
-MAX_SUBS="1"
40
-
41
 # Copy original metadata from input?
42
 METADATA="n"
43
 
44
@@ -130,7 +124,7 @@
45
 EOF
46
 }
47
 
48
-while getopts ":v :m: :c: :p: :t: :e :r :h" opt; do
49
+while getopts ":v :b :e :r :h :m: :c: :p: :t:" opt; do
50
    case "$opt" in
51
        v)
52
        echo "$version"
53
@@ -145,7 +139,10 @@
54
            exit 1
55
            ;;
56
        esac
57
-       mode="$OPTARG"
58
+       encmode="$OPTARG"
59
+       ;;
60
+       b)
61
+       batchmode="1"
62
        ;;
63
        c)
64
        if [ ! -f "$OPTARG" ]; then
65
@@ -197,6 +194,10 @@
66
        echo "          2p  (2-pass mode)"
67
        echo "          crf (constant rate factor mode)"
68
        echo
69
+       brown " -b"
70
+       echo "      Activate batch encoding mode. This mode is used to encode"
71
+       echo "      directories with video files in them."
72
+       echo
73
        brown " -c /path/to/file/preset.txt"
74
        echo "      Load a custom preset file. An example 'preset.txt' file"
75
        echo "      is included with the ffx264 package. This option can also"
76
@@ -254,8 +255,8 @@
77
 done
78
 
79
 if [ ! -z "$PRSTFILE" ]; then
80
-   if [ ! -z "$(grep '^X264PARAMS' "$PRSTFILE")" ]; then
81
-       if [ ! -z "$vpreset" -o ! -z "$vtune" ]; then
82
+   if [ ! -z "$vpreset" -o ! -z "$vtune" ]; then
83
+       if [ ! -z "$(grep '^X264PARAMS' "$PRSTFILE")" ]; then
84
            echo
85
            error "-> x264 presets/tune profiles are mutually exclusive with custom presets!"
86
            echo
87
@@ -266,6 +267,19 @@
88
            exit 1
89
        fi
90
    fi
91
+else
92
+   if [ -z "$vpreset" ]; then
93
+       if [ -f "$CFG" -a -z "$(grep '^X264PARAMS' "$CFG")" ]; then
94
+           echo
95
+           error "-> The X264PARAMS variable is commented out"
96
+           error "   or missing from '$CFG'"
97
+           echo
98
+           error "-> Regenerating config file!"
99
+           rm -f "$CFG"
100
+           genconfig_func
101
+           echo
102
+       fi
103
+   fi
104
 fi
105
 
106
 brown "  __  __      ____   __   _  _ "
107
@@ -307,12 +321,14 @@
108
    if [ ! -x "$FFMPEG" ]; then
109
        error "-> ffmpeg is missing from your system!"
110
        error "-> Check the config in '$CFG'"
111
+       echo
112
        exit 1
113
    fi
114
 else
115
    FFMPEG="$(which ffmpeg 2>/dev/null)"
116
    if [ ! -x "$FFMPEG" ]; then
117
        error "-> ffmpeg is missing from your system!"
118
+       echo
119
        exit 1
120
    fi
121
 fi
122
@@ -321,139 +337,197 @@
123
    if [ ! -x "$FFPROBE" ]; then
124
        error "-> ffprobe is missing from your system!"
125
        error "-> Check the config in '$CFG'"
126
+       echo
127
        exit 1
128
    fi
129
 else
130
    FFPROBE="$(which ffprobe 2>/dev/null)"
131
    if [ ! -x "$FFPROBE" ]; then
132
        error "-> ffprobe is missing from your system!"
133
+       echo
134
        exit 1
135
    fi
136
 fi
137
 
138
-printf "Specify the Input File: "
139
-read -e input
140
+if [ -z "$OUTDIR" ]; then
141
+   error "-> OUTDIR is not set in the config file!"
142
+   error "-> Check your config in '$CFG'"
143
+   echo
144
+   exit 1
145
+else
146
+   mkdir -p "$OUTDIR" 2>/dev/null
147
+   if [ $? != 0 ]; then
148
+       error "-> Could not create the output directory!"
149
+       error "-> Check your config in '$CFG'"
150
+       echo
151
+       exit 1
152
+   fi
153
+fi
154
+
155
+if [ ! -z "$batchmode" ]; then
156
+   error "-> Note: batch mode is in effect!"
157
+   error "-> Be careful which settings you use as they will"
158
+   error "   apply to all files and may cause problems!"
159
+   echo
160
+   printf "Specify a File from the Directory to Encode from: "
161
+   read -e input
162
+else
163
+   printf "Specify the Input File: "
164
+   read -e input
165
+fi
166
+
167
 if [ ! -f "$input" ]; then
168
    error "-> No such file!"
169
    exit 1
170
 fi
171
 
172
-printf "Specify a Name for the Output: "
173
-read -e output
174
-if [ -z "$output" ]; then
175
-   error "-> You have to provide a name for the output!"
176
-   exit 1
177
+if [ ! -z "$batchmode" ]; then
178
+   OUTPUT="$OUTDIR/$(basename $0)_$$"
179
+   printf "Specify the Output Directory [default is $OUTPUT]: "
180
+   read -e output
181
+   test -z "$output" && OUTPUT="$OUTPUT/\$i" || OUTPUT="$output/\$i"
182
+   mkdir -p "$(dirname "$OUTPUT")" 2>/dev/null
183
+   if [ $? != 0 ]; then
184
+       error "-> Could not create the output directory!"
185
+       exit 1
186
+   fi
187
 else
188
+   printf "Specify a Name for the Output: "
189
+   read -e output
190
+fi
191
+
192
+if [ -z "$batchmode" ]; then
193
+   if [ -z "$output" ]; then
194
+       error "-> You have to provide a name for the output!"
195
+       exit 1
196
+   fi
197
    if [ ! -z "$(echo "$output" | grep '/')" ]; then
198
        mkdir -p "$(dirname "$output")" 2>/dev/null
199
        if [ $? != 0 ]; then
200
-           error "-> Could not create output directory!"
201
+           error "-> Could not create the output directory!"
202
            exit 1
203
        fi
204
        OUTPUT="$output"
205
    else
206
        OUTPUT="$OUTDIR/$output"
207
    fi
208
-   # Check if output dir is writable
209
-   WRITE="$(dirname "$OUTPUT")/.ff_writable$$"
210
-   touch "$WRITE" 2>/dev/null
211
-   if [ $? != 0 ]; then
212
-       error "-> Specified output directory is not writable by user '$(id -un)'"
213
-       exit 1
214
-   else
215
-       rm -f "$WRITE"
216
-   fi
217
-   
218
-   if [ -z "$CONFMT" ]; then
219
-       printf "Which Container Format to use? [default is mkv]: "
220
-       read confmt
221
-       test -z "$confmt" && CONFMT="mkv" || CONFMT="$confmt"
222
-   fi
223
-   
224
-   CONFMT="$(echo "$CONFMT" | tr '[:upper:]' '[:lower:]')"
225
-   
226
-   OUTPUT="$OUTPUT.$CONFMT"
227
+fi
228
+
229
+# Check if output dir is writable
230
+WRITE="$(dirname "$OUTPUT")/.ff_writable$$"
231
+touch "$WRITE" 2>/dev/null
232
+if [ $? != 0 ]; then
233
+   error "-> Specified output directory is not writable by user '$(id -un)'"
234
+   exit 1
235
+else
236
+   rm -f "$WRITE"
237
+fi
238
    
239
-   if [ -x "$(which realpath 2>/dev/null)" ]; then
240
+if [ -z "$CONFMT" ]; then
241
+   printf "Which Container Format to use? [default is mkv]: "
242
+   read confmt
243
+   test -z "$confmt" && CONFMT="mkv" || CONFMT="$confmt"
244
+fi
245
+
246
+CONFMT="$(echo "$CONFMT" | tr '[:upper:]' '[:lower:]')"
247
+
248
+OUTPUT="$OUTPUT.$CONFMT"
249
+
250
+if [ -x "$(which realpath 2>/dev/null)" ]; then
251
+   if [ ! -z "$batchmode" ]; then
252
+       if [ "$(realpath -s "$(dirname "$input")")" = "$(realpath -s "$(dirname "$OUTPUT")")" ]; then
253
+           error "-> Input directory matches output directory!"
254
+           exit 1
255
+       fi
256
+   else
257
        if [ "$(realpath -s "$input")" = "$(realpath -s "$OUTPUT")" ]; then
258
            error "-> Input file matches output file!"
259
            exit 1
260
        fi
261
    fi
262
-   
263
+fi
264
+
265
+if [ -z "$batchmode" ]; then
266
    if [ -e "$OUTPUT" ]; then
267
        echo
268
        error "-> Renaming existing file to '$OUTPUT.old'"
269
        echo
270
        mv -f "$OUTPUT" "$OUTPUT.old"
271
    fi
272
-   
273
-   case "$CONFMT" in
274
-       mp4|m4v|mov)        movflags="-movflags +faststart" ;;
275
-       avi|m2ts|mts|ts)    annexb="-bsf:v h264_mp4toannexb" ;;
276
-       mkv|flv)        true ;;
277
-       *)
278
-       error "-> H.264 video not supported by chosen container!"
279
-       error "-> Supported containers are: mkv, mp4, mov, m4v, m2ts, mts, ts, flv and avi"
280
-       error "-> Check your config file, if needed, in '$CFG'"
281
-       exit 1
282
-       ;;
283
-   esac
284
-   
285
-   printf "Output to Additional Container Formats? [y/N]: "
286
-   read acf
287
-   if [ "$acf" = "y" -o "$acf" = "Y" ]; then
288
-       printf "Specify the Container Formats [example: mp4,m2ts,mov - press 'Enter' to skip]: "
289
-       read econ
290
-       test ! -z "$econ" && extracon="$(echo "$econ" | sed 's|,| |g' | tr '[:upper:]' '[:lower:]')"
291
-       if [ ! -z "$extracon" ]; then
292
-           container_func() {
293
-               case "$1" in
294
-                   mp4|mov|m4v|avi|flv)
295
-                   green "-> Note: additional container $i supports the following audio codecs:"
296
-                   ;;
297
-               esac
298
-               case "$1" in
299
-                   mp4)    green "-> ac3|eac3|dts|aac|fdk-aac|mp3|vorbis|copy|nosound" ;;
300
-                   mov)    green "-> ac3|eac3|dts|aac|fdk-aac|mp3|vorbis|flac|copy|nosound" ;;
301
-                   m4v)    green "-> ac3|aac|fdk-aac|copy|nosound" ;;
302
-                   avi)    green "-> ac3|eac3|dts|aac|fdk-aac|mp3|vorbis|pcm|flac|copy|nosound" ;;
303
-                   flv)    green "-> aac|fdk-aac|mp3|copy|nosound" ;;
304
-                   other)
305
-                   error "-> H.264 video not supported by the $i container!"
306
-                   error "-> Supported containers are: mkv, mp4, mov, m4v, m2ts, mts, ts, flv and avi"
307
-                   echo
308
-                   exit 1
309
-                   ;;
310
-               esac
311
-           }
312
-           
313
-           for i in $extracon; do
314
-               if [ "$i" = "$CONFMT" ]; then
315
-                   error "-> Additional container matches the main output container!"
316
-                   exit 1
317
-               fi
318
+else
319
+   OUTPUT="$(readlink -f "$(dirname "$OUTPUT")/\${i%.*}.$CONFMT")"
320
+   CHDIR="cd \"$(readlink -f "$(dirname "$input")")\""
321
+   FORLOOP_START="for i in *; do"
322
+   CHKFILE_START="if [ -f \"\$i\" ]; then"
323
+   CHKFILE_END="fi"
324
+   FORLOOP_END="done"
325
+fi
326
+
327
+METATITLE="-metadata title=\"$(basename "${OUTPUT%.*}")\" -metadata:s:v:0 title=\"$(basename "${OUTPUT%.*}")\""
328
+
329
+case "$CONFMT" in
330
+   mp4|m4v|mov)        movflags="-movflags +faststart" ;;
331
+   avi|m2ts|mts|ts)    annexb="-bsf:v h264_mp4toannexb" ;;
332
+   mkv|flv)        true ;;
333
+   *)
334
+   error "-> H.264 video not supported by the chosen container!"
335
+   error "-> Supported containers are: mkv, mp4, mov, m4v, m2ts, mts, ts, flv and avi"
336
+   error "-> Check your config file, if needed, in '$CFG'"
337
+   exit 1
338
+   ;;
339
+esac
340
+
341
+printf "Output to Additional Container Formats? [y/N]: "
342
+read acf
343
+if [ "$acf" = "y" -o "$acf" = "Y" ]; then
344
+   printf "Specify the Container Formats [example: mp4,m2ts,mov - press 'Enter' to skip]: "
345
+   read econ
346
+   test ! -z "$econ" && extracon="$(echo "$econ" | sed 's|,| |g' | tr '[:upper:]' '[:lower:]')"
347
+   if [ ! -z "$extracon" ]; then
348
+       container_func() {
349
+           case "$1" in
350
+               mp4|mov|m4v|avi|flv)
351
+               green "-> Note: additional container $i supports the following audio codecs:"
352
+               ;;
353
+           esac
354
+           case "$1" in
355
+               mp4)    green "-> ac3|eac3|dts|aac|fdk-aac|mp3|vorbis|copy|nosound" ;;
356
+               mov)    green "-> ac3|eac3|dts|aac|fdk-aac|mp3|vorbis|flac|copy|nosound" ;;
357
+               m4v)    green "-> ac3|aac|fdk-aac|copy|nosound" ;;
358
+               avi)    green "-> ac3|eac3|dts|aac|fdk-aac|mp3|vorbis|pcm|flac|copy|nosound" ;;
359
+               flv)    green "-> aac|fdk-aac|mp3|copy|nosound" ;;
360
+               other)
361
+               error "-> H.264 video not supported by the $i container!"
362
+               error "-> Supported containers are: mkv, mp4, mov, m4v, m2ts, mts, ts, flv and avi"
363
                echo
364
-               case "$i" in
365
-                   mkv|m2ts|mts|ts)
366
-                   green "-> Note: additional container $i supports all the audio codecs"
367
-                   ;;
368
-                   flv)
369
-                   container_func flv
370
-                   error "-> Note: you may need to resample the audio to 44100, 22050 or 11025 Hz!"
371
-                   ;;
372
-                   mp4)    container_func mp4 ;;
373
-                   mov)    container_func mov ;;
374
-                   m4v)    container_func m4v ;;
375
-                   avi)    container_func avi ;;
376
-                   *)  container_func other ;;
377
-               esac
378
-           done
379
+               exit 1
380
+               ;;
381
+           esac
382
+       }
383
+       
384
+       for i in $extracon; do
385
+           if [ "$i" = "$CONFMT" ]; then
386
+               error "-> Additional container matches the main output container!"
387
+               exit 1
388
+           fi
389
            echo
390
-       fi
391
+           case "$i" in
392
+               mkv|m2ts|mts|ts)
393
+               green "-> Note: additional container $i supports all the audio codecs"
394
+               ;;
395
+               flv)
396
+               container_func flv
397
+               error "-> Note: you may need to resample the audio to 44100, 22050 or 11025 Hz!"
398
+               ;;
399
+               mp4)    container_func mp4 ;;
400
+               mov)    container_func mov ;;
401
+               m4v)    container_func m4v ;;
402
+               avi)    container_func avi ;;
403
+               *)  container_func other ;;
404
+           esac
405
+       done
406
+       echo
407
    fi
408
-   
409
-   METATITLE="-metadata title=\"$(basename "${OUTPUT%.*}")\" -metadata:s:v:0 title=\"$(basename "${OUTPUT%.*}")\""
410
 fi
411
 
412
 printf "Specify a Genre for the Content [press 'Enter' to skip]: "
413
@@ -491,7 +565,7 @@
414
    fi
415
 fi
416
 
417
-case "$mode" in
418
+case "$encmode" in
419
    [1-2]p)
420
    printf "Specify the desired Video Bitrate in kbps [default is 8000]: "
421
    read vbtr
422
@@ -854,7 +928,7 @@
423
                case "$infps" in
424
                    24/1|25/1|24000/1001|30000/1001) true ;;
425
                    ""|*)
426
-                   error "-> No value or unsupported value given!"
427
+                   error "-> Unsupported or no value given!"
428
                    exit 1
429
                    ;;
430
                esac
431
@@ -998,10 +1072,16 @@
432
 video_subtitles_func() {
433
    case "$1" in
434
        infile)
435
-       if [ "$MAX_SUBS" = "auto" ]; then
436
-           test "$SUBNR" = "0" && MAX_SUBS="1" || MAX_SUBS="$SUBNR"
437
-       fi
438
-       for i in $(eval echo "{1..$MAX_SUBS}"); do
439
+       printf "How many Subtitles to Copy?: "
440
+       read subcp
441
+       case "$subcp" in
442
+           [1-9]*) SUBCP="$subcp" ;;
443
+           ""|*)
444
+           error "-> Invalid or no value given!"
445
+           exit 1
446
+           ;;
447
+       esac
448
+       for i in $(eval echo "{1..$SUBCP}"); do
449
            submapval[i]="$(($i-1))"
450
            printf "Sub $i: Specify a Subtitle to Copy [example: 0:2]: "
451
            read subnr[i]
452
@@ -1049,15 +1129,15 @@
453
            done
454
        fi
455
        printf "How many External Subtitles to Add?: "
456
-       read subamount
457
-       case "$subamount" in
458
-           [1-9]*) MAX_SUBS="$subamount" ;;
459
+       read subext
460
+       case "$subext" in
461
+           [1-9]*) SUBEXT="$subext" ;;
462
            ""|*)
463
-           error "-> Invalid value!"
464
+           error "-> Invalid or no value given!"
465
            exit 1
466
            ;;
467
        esac
468
-       for i in $(eval echo "{1..$MAX_SUBS}"); do
469
+       for i in $(eval echo "{1..$SUBEXT}"); do
470
            test ! -z "${submapval[*]}" && submap[i]="$((${submapval[-1]}+$i))" || submap[i]="$(($i-1))"
471
            printf "Sub $i: Specify the Subtitle File: "
472
            read -e sub[i]
473
@@ -1094,18 +1174,12 @@
474
        echo
475
        green "$SUBSDETECT"
476
        echo
477
+       green "-> Detected $SUBNR subtitles"
478
        error "-> Note: not all containers support all types of subs!"
479
    else
480
        error "-> Could not detect any subtitles!"
481
-       SUBNR="0"
482
    fi
483
    echo
484
-   if [ "$MAX_SUBS" = "auto" ]; then
485
-       error "-> Note: MAX_SUBS variable is set to \"auto\" in the config file!"
486
-       error "-> This means it will ask for as many as detected subtitle tracks"
487
-       error "   and you cannot skip them!"
488
-       echo
489
-   fi
490
    brown " Subtitles"
491
    brown " ~~~~~~~~~"
492
    echo " 0 -> Copy subtitles from the input file"
493
@@ -1721,7 +1795,7 @@
494
    error "   been disabled as it is incompatible with audio stream copy!"
495
 fi
496
 
497
-case "$mode" in
498
+case "$encmode" in
499
    [1-2]p)
500
    # Haven't found a reliable way to make it work with
501
    # FLAC and PCM audio so just skip this if one of
502
@@ -1801,25 +1875,32 @@
503
    esac
504
 }
505
 
506
-case "$mode" in
507
+case "$encmode" in
508
    1p) pass="1-pass" ;;
509
    2p) pass="2-pass" ;;
510
-   crf|"") pass="CRF"; mode="crf" ;;
511
+   crf|"") pass="CRF"; encmode="crf" ;;
512
 esac
513
 
514
 echo
515
 green "-> Starting to encode in $pass mode..."
516
-green "-> Outputting to: $OUTPUT"
517
+test -z "$batchmode" && OUT="$OUTPUT" || OUT="'$(dirname "$OUTPUT")' directory"
518
+green "-> Outputting to: $OUT"
519
 echo
520
 color_func blue && printf "Starting to encode in: " && counter_func
521
 color_func normal && echo
522
 
523
-OUTFILE="$(dirname "$OUTPUT")/$(basename "${OUTPUT%.*}" | sed 's| |_|g')"
524
+
525
+if [ -z "$batchmode" ]; then
526
+   OUTFILE="$(dirname "$OUTPUT")/$(basename "${OUTPUT%.*}" | sed 's| |_|g')"
527
+else
528
+   OUTFILE="$(dirname "$OUTPUT")/$(basename $0)_batch$$"
529
+   input="\$i"
530
+fi
531
 
532
 encoder_func() {
533
    case "$1" in
534
        1p|crf)
535
-       test "$mode" = "1p" && pmode="bitrate=$vbitrate" || pmode="crf=$CRF"
536
+       test "$encmode" = "1p" && pmode="bitrate=$vbitrate" || pmode="crf=$CRF"
537
        OPTS1="${EXTSUBS[*]} -map 0:0 -disposition:v:0 default $ofps $annexb $NOSUBS $MDATA $CHPS $METATITLE $METAGENRE $METAYEAR $METACOMMENT $vfilters $sws"
538
        OPTS2="${audparams[*]} ${auddis[*]} ${subcopy[*]} ${subcpy[*]} ${subdis[*]} ${subdispo[*]} $strict $movflags $METACOVER \"$OUTPUT\""
539
        ;;
540
@@ -1843,7 +1924,13 @@
541
 
542
 echo "#!/usr/bin/env bash" > "$OUTFILE.sh"
543
 echo "" >> "$OUTFILE.sh"
544
-encoder_func $mode >> "$OUTFILE.sh"
545
+if [ ! -z "$batchmode" ]; then
546
+   echo "$CHDIR" >> "$OUTFILE.sh"
547
+   echo "" >> "$OUTFILE.sh"
548
+   echo "$FORLOOP_START" >> "$OUTFILE.sh"
549
+   echo "$CHKFILE_START" >> "$OUTFILE.sh"
550
+fi
551
+encoder_func $encmode >> "$OUTFILE.sh"
552
 echo "" >> "$OUTFILE.sh"
553
 if [ ! -z "$extracon" ]; then
554
    echo "grn() { echo -e \"\e[1;32m\$1\e[0;39;49m\"; }" >> "$OUTFILE.sh"
555
@@ -1861,6 +1948,10 @@
556
    done
557
    echo "echo" >> "$OUTFILE.sh"
558
 fi
559
+if [ ! -z "$batchmode" ]; then
560
+   echo "$CHKFILE_END" >> "$OUTFILE.sh"
561
+   echo "$FORLOOP_END" >> "$OUTFILE.sh"
562
+fi
563
 chmod +x "$OUTFILE.sh"
564
 
565
 source "$OUTFILE.sh"
566
ffx264-3.1.5.tar.gz/ffx264.1 -> ffx264-3.1.6.tar.gz/ffx264.1 Changed
21
 
1
@@ -9,7 +9,7 @@
2
 
3
 .SH SYNOPSIS
4
 .B ffx264
5
-[\-m <mode>] [\-p <preset>] [\-t <tune>] [\-v|\-e|\-r|\-h] [\-c <preset/config file>]
6
+[\-m <mode>] [\-p <preset>] [\-t <tune>] [\-b|\-v|\-e|\-r|\-h] [\-c <preset/config file>]
7
 .br
8
 
9
 .SH DESCRIPTION
10
@@ -43,6 +43,10 @@
11
 .RE
12
 .
13
 .TP
14
+.B -b
15
+Activate batch encoding mode. This mode is used to encode directories
16
+with video files in them.
17
+.TP
18
 .B -c /path/to/file/preset.txt
19
 Load a custom preset file. The package includes an example preset file.
20
 This option can also be used to load a custom configuration file instead
21