Changes of Revision 196
ffhevc.changes
Changed
x
1
2
-------------------------------------------------------------------
3
+Sat Dec 28 15:40:00 UTC 2019 - neutrino8@opensuse.org
4
+
5
+- Update to version 4.1.4
6
+ * Add support for the noise video filter. Can be beneficial
7
+ on (very) clean sources by applying some noise to avoid
8
+ things like color/light banding in the encode
9
+ * Fine-tuning to the default encoding options
10
+
11
+-------------------------------------------------------------------
12
Wed Dec 25 08:35:00 UTC 2019 - neutrino8@opensuse.org
13
14
- Update to version 4.1.3
15
ffhevc.spec
Changed
10
1
2
3
4
Name: ffhevc
5
-Version: 4.1.3
6
+Version: 4.1.4
7
Release: 0
8
Summary: A small shell script for encoding to H.265/HEVC with FFmpeg
9
License: GPL-2.0+
10
ffhevc-4.1.3.tar.gz/ChangeLog -> ffhevc-4.1.4.tar.gz/ChangeLog
Changed
11
1
2
+2019-12-28 - ffhevc 4.1.4
3
+ * Add support for the noise video filter. Can be beneficial
4
+ on (very) clean sources by applying some noise to avoid
5
+ things like color/light banding in the encode
6
+ * Fine-tuning to the default encoding options
7
+
8
2019-12-25 - ffhevc 4.1.3
9
* More fine-tuning to the default encoding options
10
that should preserve noise and especially mosquito
11
ffhevc-4.1.3.tar.gz/ffhevc -> ffhevc-4.1.4.tar.gz/ffhevc
Changed
98
1
2
#
3
# Small script to encode to H.265/HEVC video using FFmpeg and libx265.
4
# Author: Grozdan "microchip" Nikolov <neutrino8@opensuse.org>
5
-# Version: 4.1.3
6
-# Date: 2019-12-25
7
+# Version: 4.1.4
8
+# Date: 2019-12-28
9
#
10
# ffhevc 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
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="4.1.3"
17
+version="4.1.4"
18
19
CFG="$HOME/.ffhevc"
20
-cfgversion="61"
21
+cfgversion="62"
22
23
genconfig_func() {
24
cat<<EOF>>"$CFG"
25
26
27
# CRF value (0-51)
28
# Leave empty to ask each time
29
-CRF="20"
30
+CRF="21"
31
32
# Automatically crop the input?
33
AUTOCROP="y"
34
35
36
# Video filters
37
VID_DENOISE="y"
38
+VID_NOISE="y"
39
VID_DEBLOCK="y"
40
VID_SHARPEN="y"
41
VID_ROTATE="y"
42
43
# libx265 parameters. Modify, if needed,
44
# to fit your needs
45
# merange is calculated as: ctu size - 4(luma) - 2(chroma) (- 1 if me=hex is used)
46
-X265PARAMS="ref=4:hme=0:me=star:merange=58:bframes=8:rd=4:rd-refine=0:subme=5:qcomp=0.71:fades=1:strong-intra-smoothing=1:ctu=64:qg-size=64:sao=0:selective-sao=0:cu-lossless=0:cutree=1:tu-inter-depth=4:tu-intra-depth=4:rskip=1:max-merge=3:rc-lookahead=100:aq-mode=2:aq-strength=1.0:rdoq-level=1:psy-rdoq=1.6:psy-rd=2.6:limit-modes=0:limit-refs=0:limit-tu=0:deblock=-1,-1:weightb=1:weightp=1:rect=1:amp=0:wpp=1:pmode=0:pme=0:b-intra=1:b-adapt=2:b-pyramid=1:tskip-fast=0:fast-intra=0:early-skip=0:min-keyint=24:keyint=240"
47
+X265PARAMS="ref=4:hme=0:me=star:merange=58:bframes=8:rd=4:rd-refine=0:subme=5:qcomp=0.72:fades=1:strong-intra-smoothing=1:ctu=64:qg-size=64:sao=0:selective-sao=0:cu-lossless=0:cutree=1:tu-inter-depth=4:tu-intra-depth=4:rskip=1:max-merge=4:rc-lookahead=100:aq-mode=2:aq-strength=1.0:rdoq-level=1:psy-rdoq=1.7:psy-rd=2.6:limit-modes=0:limit-refs=0:limit-tu=0:deblock=-1,-1:weightb=1:weightp=1:rect=1:amp=0:wpp=1:pmode=0:pme=0:b-intra=1:b-adapt=2:b-pyramid=1:tskip-fast=0:fast-intra=0:early-skip=0:min-keyint=24:keyint=240"
48
49
# Leave empty to auto-detect ffmpeg/ffprobe/mplayer
50
# or set your custom ones (eg, /path/to/bin/ffmpeg)
51
52
;;
53
""|crf)
54
if [ -z "$CRF" ]; then
55
- printf "Specify a CRF Value for the Encoding [0-51 - default is 20]: "
56
+ printf "Specify a CRF Value for the Encoding [0-51 - default is 21]: "
57
read crf
58
- test -z "$crf" && CRF="20" || CRF="$crf"
59
+ test -z "$crf" && CRF="21" || CRF="$crf"
60
fi
61
;;
62
esac
63
64
fi
65
}
66
67
+video_noise_func() {
68
+ printf "Add Temporal & Uniform Noise to the Input File? [y/N]: "
69
+ read tun
70
+ if [ "$tun" = "y" -o "$tun" = "Y" ]; then
71
+ printf "Specify the Noise Strength [0-100 - default is 2]: "
72
+ read nvalue
73
+ test -z "$nvalue" && nval="2" || nval="$nvalue"
74
+ noise="noise=alls=$nvalue:allf=t+u,"
75
+ fi
76
+}
77
+
78
video_deblock_func() {
79
printf "Deblock the Input File? [y/N]: "
80
read db
81
82
read postproc
83
if [ "$postproc" = "y" -o "$postproc" = "Y" ]; then
84
test "$VID_DENOISE" = "y" && video_denoise_func
85
+ test "$VID_NOISE" = "y" && video_noise_func
86
test "$VID_DEBLOCK" = "y" && video_deblock_func
87
test "$VID_SHARPEN" = "y" && video_sharpen_func
88
test "$VID_DEINTERLACE" = "y" && video_deinterlace_func
89
90
91
test "$CHAPS" = "n" && CHAPS="-map_chapters -1" || CHAPS="-map_chapters 0"
92
93
-vidfilters="$(echo "$deinterlace$detelecine$tonemap$crop$deblock$denoise$scale$colorspace$unsharp$eq$rotate$pixformat$setpts$fps$framestep$subtitles" | sed 's|,$||')"
94
+vidfilters="$(echo "$deinterlace$detelecine$tonemap$crop$deblock$denoise$scale$noise$colorspace$unsharp$eq$rotate$pixformat$setpts$fps$framestep$subtitles" | sed 's|,$||')"
95
96
test ! -z "$vidfilters" && vfilters="-vf $vidfilters"
97
98