Changes of Revision 11
ffhevc.changes
Changed
x
1
2
-------------------------------------------------------------------
3
+Mon Nov 08 10:10:00 UTC 2016 - neutrino8@opensuse.org
4
+
5
+- Update to version 2.9.6
6
+ * Added support for encoding to TrueHD audio. Requires a very
7
+ recent ffmpeg version, preferably latest from git
8
+ * Some small improvements to the additional container output
9
+ * Moved the video_deinterlace_func() function inside the actual
10
+ deinterlace code
11
+ * Update to the README file
12
+ * Update to the man page
13
+
14
+-------------------------------------------------------------------
15
Mon Nov 07 16:25:00 UTC 2016 - neutrino8@opensuse.org
16
17
- Update to version 2.9.5
18
ffhevc.spec
Changed
10
1
2
3
4
Name: ffhevc
5
-Version: 2.9.5
6
+Version: 2.9.6
7
Release: 0
8
Summary: A small shell script for encoding to H.265/HEVC with ffmpeg
9
License: GPL-2.0+
10
ffhevc-2.9.5.tar.gz/ChangeLog -> ffhevc-2.9.6.tar.gz/ChangeLog
Changed
14
1
2
+2016-11-08 - ffhevc 2.9.6
3
+ * Added support for encoding to TrueHD audio. Requires a very recent
4
+ ffmpeg version, preferably latest from git
5
+ * Some small improvements to the additional container output
6
+ * Moved the video_deinterlace_func() function inside the actual
7
+ deinterlace code
8
+ * Update to the README file
9
+ * Update to the man page
10
+
11
2016-11-07 - ffhevc 2.9.5
12
* Cosmetics in the code for deinterlacing
13
* Instead of skipping FPS conversion if the FPS can't be detected,
14
ffhevc-2.9.5.tar.gz/README -> ffhevc-2.9.6.tar.gz/README
Changed
10
1
2
- it supports copying virtually an unlimited amount of subtitles.
3
- it creates the final output directory if user provides a path in addition to the output name.
4
- it supports virtually an unlimited amount of audio tracks.
5
-- it supports encoding audio to AC-3, E-AC-3, DTS, MP3, Vorbis, Opus, FLAC, PCM or AAC or copying an audio track.
6
+- it supports encoding audio to AC-3, E-AC-3, TrueHD, DTS, MP3, Vorbis, Opus, FLAC, PCM or AAC or copying an audio track.
7
- it supports setting the nice value in the config file.
8
- it supports a limited amount of user-provided metadata.
9
- it optionally scales the video.
10
ffhevc-2.9.5.tar.gz/ffhevc -> ffhevc-2.9.6.tar.gz/ffhevc
Changed
198
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: 2.9.5
6
-# Date: 2016-11-07
7
+# Version: 2.9.6
8
+# Date: 2016-11-08
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="2.9.5"
17
+version="2.9.6"
18
19
CFG="$HOME/.ffhevc"
20
cfgversion="28"
21
22
fi
23
fi
24
25
-# Used by mc deinterlace and FPS conversion
26
+# Used by mc/bobbing deinterlace and FPS conversion
27
video_fps_func() {
28
GETFPS="$($FFPROBE -i "$input" -select_streams v:0 -show_entries stream=r_frame_rate 2>&1 | sed -n 's|^r_frame_rate=||p')"
29
}
30
31
-# Used by mc deinterlace and interlace-aware encoding
32
+# Used by mc/bobbing deinterlace and interlace-aware encoding
33
video_field_parity_func() {
34
echo
35
green "-> Detecting Field Parity..."
36
37
}
38
39
if [ "$VID_DEINTERLACE" = "y" ]; then
40
- video_deinterlace_func() {
41
- printf "Use Motion-Compensation Deinterlacing? [y/N]: "
42
- read mcd
43
- if [ "$mcd" = "y" -o "$mcd" = "Y" ]; then
44
- video_field_parity_func
45
- printf "Specify the Field Parity of the Input File [tff/bff - default is $defpar]: "
46
- read par
47
- test -z "$par" && fpar="$defpar" || fpar="$par"
48
- fi
49
- case "$1" in
50
- ofps) test ! -z "$fpar" && deinterlace="yadif=1,mcdeint=mode=medium:parity=$fpar:qp=10,framestep=step=2," || deinterlace="yadif=0," ;;
51
- bob) test ! -z "$fpar" && deinterlace="yadif=1,mcdeint=mode=medium:parity=$fpar:qp=10," || deinterlace="yadif=1," ;;
52
- esac
53
- }
54
-
55
printf "Deinterlace the Input File? [y/N]: "
56
read deint
57
if [ "$deint" = "y" -o "$deint" = "Y" ]; then
58
+ video_deinterlace_func() {
59
+ printf "Use Motion-Compensation Deinterlacing? [y/N]: "
60
+ read mcd
61
+ if [ "$mcd" = "y" -o "$mcd" = "Y" ]; then
62
+ video_field_parity_func
63
+ printf "Specify the Field Parity of the Input File [tff/bff - default is $defpar]: "
64
+ read par
65
+ test -z "$par" && fpar="$defpar" || fpar="$par"
66
+ fi
67
+ case "$1" in
68
+ ofps) test ! -z "$fpar" && deinterlace="yadif=1,mcdeint=mode=medium:parity=$fpar:qp=10,framestep=step=2," || deinterlace="yadif=0," ;;
69
+ bob) test ! -z "$fpar" && deinterlace="yadif=1,mcdeint=mode=medium:parity=$fpar:qp=10," || deinterlace="yadif=1," ;;
70
+ esac
71
+ }
72
echo
73
brown " Deinterlace Methods"
74
brown " ~~~~~~~~~~~~~~~~~~~"
75
76
fi
77
78
if [ -z "$deinterlace" ]; then
79
- printf "Enable Interlace-aware encoding? [y/N]: "
80
+ printf "Enable Interlace-aware Encoding? [y/N]: "
81
read intaw
82
if [ "$intaw" = "y" -o "$intaw" = "Y" ]; then
83
video_field_parity_func
84
85
echo " Opus ----> Channels Support: 8 (ffmpeg max)"
86
echo " Vorbis --> Channels Support: 8 (ffmpeg max)"
87
echo " MP3 -----> Channels Support: 2 (codec max)"
88
+ echo " TrueHD --> Channels Support: 6 (encoder max)"
89
echo " FLAC ----> Channels Support: 8 (codec max)"
90
echo " PCM -----> Channels Support: 8 (ffmpeg max)"
91
echo " COPY ----> Channels Support: depends on audio codec"
92
93
abropts[i]="32-6144"
94
abrdef[i]="768"
95
;;
96
+ truehd)
97
+ strict="-strict -2"
98
+ acdc[i]="truehd"
99
+ ameta[i]="TrueHD"
100
+ abropts[i]="1000-18000"
101
+ abrdef[i]="5000"
102
+ skiptfs="1"
103
+ ;;
104
dts)
105
strict="-strict -2"
106
acdc[i]="dca"
107
108
case "$CON" in
109
mp4)
110
case "${acodec[i]}" in
111
- pcm|opus|flac)
112
+ pcm|opus|flac|truehd)
113
error "-> $(echo "${acodec[i]}" | tr '[:lower:]' '[:upper:]') is not supported by the MP4 container!"
114
error "-> Check your config file, if needed, in '$CFG'"
115
exit 1
116
117
esac
118
119
case "${acodec[i]}" in
120
- ac3|eac3|dts|aac|fdk*|mp3|vorbis|opus|"")
121
+ ac3|eac3|truehd|dts|aac|fdk*|mp3|vorbis|opus|"")
122
printf "Track $i: Specify the Audio Bitrate in kbps [${abropts[i]} - default is ${abrdef[i]}]: "
123
read abr[i]
124
test -z "${abr[i]}" && abitrate[i]="${abrdef[i]}k" || abitrate[i]="${abr[i]}k"
125
126
esac
127
128
case "${acodec[i]}" in
129
- ac3|eac3|dts|"") chanrange[i]="1-6"; defchan[i]="6" ;;
130
+ ac3|eac3|truehd|dts|"") chanrange[i]="1-6"; defchan[i]="6" ;;
131
aac|opus|vorbis|flac|pcm) chanrange[i]="1-8"; defchan[i]="8" ;;
132
mp3) chanrange[i]="1-2"; defchan[i]="2" ;;
133
fdk*)
134
135
;;
136
esac
137
case "${acodec[i]}" in
138
- ac3|eac3|"")
139
+ ac3|eac3|truehd|"")
140
case "${ach[i]}" in
141
[1-6]) true ;;
142
*)
143
case "${acodec[i]}" in
144
ac3|"") error "-> AC-3 supports only 1-6 channels!" ;;
145
eac3) error "-> E-AC-3 encoder in ffmpeg supports only 1-6 channels!" ;;
146
+ truehd) error "-> TrueHD encoder in ffmpeg supports only 1-6 channels!" ;;
147
esac
148
exit 1
149
;;
150
151
;;
152
esac
153
;;
154
- vorbis|pcm)
155
+ vorbis|pcm|truehd)
156
brown " Supported Sample Rates"
157
brown " ~~~~~~~~~~~~~~~~~~~~~~"
158
echo " 0 -> 8000 Hz 5 -> 24000 Hz 10 -> 88200 Hz"
159
160
mp4)
161
for a in $(eval echo "{1..$MAX_AUD_TRACKS}"); do
162
case "${acodec[a]}" in
163
- pcm|opus|flac)
164
+ pcm|opus|flac|truehd)
165
error "-> Additional container $i does not support ${acodec[a]} audio!"
166
error "-> See: $formats_url"
167
exit 1
168
169
# Haven't found a reliable way to make it work with
170
# FLAC and PCM audio so just skip this if one of
171
# these audio codecs is chosen. Patch welcome
172
+ # In case of TrueHD, while we support setting the
173
+ # bitrate, that codec is variable in nature and
174
+ # the actual bitrate can wildly fluctuate, which
175
+ # will result in miscalculation for the target
176
+ # size by an unknown amount
177
if [ -z "$skiptfs" ]; then
178
echo
179
printf "Set a Target File Size? [y/N]: "
180
181
echo "" >> "$OUTFILE.sh"
182
if [ ! -z "$extracon" ]; then
183
for i in $extracon; do
184
- echo "$FFMPEG -i \"$OUTPUT\" -map 0 -c copy \"${OUTPUT%.*}.$i\"" >> "$OUTFILE.sh"
185
- echo "" >> "$OUTFILE.sh"
186
+ echo "echo" >> "$OUTFILE.sh"
187
+ echo "echo -e \"\e[1;32m-> Converting to $i...\e[0;39;49m\"" >> "$OUTFILE.sh"
188
+ echo "$FFMPEG -i \"$OUTPUT\" -map 0 -c copy \"${OUTPUT%.*}.$i\" >/dev/null 2>&1" >> "$OUTFILE.sh"
189
+ echo "test \"\$?\" = \"0\" && echo -e \"\e[1;32m-> Done\e[0;39;49m\" || echo -e \"\e[1;31m-> Failed!\e[0;39;49m\"" >> "$OUTFILE.sh"
190
done
191
+ echo "echo" >> "$OUTFILE.sh"
192
fi
193
chmod +x "$OUTFILE.sh"
194
195
source "$OUTFILE.sh"
196
-
197
-exit $?
198
ffhevc-2.9.5.tar.gz/ffhevc.1 -> ffhevc-2.9.6.tar.gz/ffhevc.1
Changed
21
1
2
.de IPs
3
.IP "\\$1"
4
..
5
-.TH ffhevc 1 "Sep 05, 2016"
6
+.TH ffhevc 1 "Nov 07, 2016"
7
.SH NAME
8
ffhevc
9
10
11
12
.SH DESCRIPTION
13
\fBffhevc\fR is a small, yet quite capable shell script for encoding to the H.265/HEVC video
14
-format. It uses the FFmpeg encoder and the libx265 library. \fBffhevc\fR supports the basic
15
-requirements for video encoding coupled with support for encoding multiple audio tracks
16
+format. It uses the FFmpeg encoder and the libx265 library. \fBffhevc\fR supports mostly the
17
+basic requirements for video encoding coupled with support for encoding multiple audio tracks
18
and copying multiple subtitles. \fBffhevc\fR only supports as input video files so it is
19
not possible to encode directly from a DVD/BD drive or an ISO image.
20
.LP
21