77,6 → 77,7 |
# * Added codec ids for On2's VP3, VP4, VP5 and VP6, TechSmith Screen Capture |
# Codec (Camtasia's) and Theora, expanded list of FOURCCs of Indeo's |
# codecs. |
# * Added $end_offset / -E, used to eliminate some seconds from the end |
# |
|
set -e |
172,6 → 173,8 |
declare -i pts_title=36 # Used for the title (see -T) |
# See --shoehorn |
declare shoehorned= |
# See -E / $end_offset |
declare -i DEFAULT_END_OFFSET=60 |
# This can only be changed in the configuration file |
# Change it to change the safe renanimg: |
# When writing the output file, the input name + output extension is |
258,6 → 261,8 |
# e.g.: for second 50 '-ss ' will become '-ss 50' while '' will stay empty |
# By default -ss goes before -i. |
declare wa_ss_af="" wa_ss_be="-ss " |
# This number of seconds is *not* captured from the end of the video |
declare -i end_offset=$DEFAULT_END_OFFSET |
|
# Experimental in 1.0.7b: transformations/filters |
# Operations are decomposed into independent optional steps, this will allow |
321,6 → 326,7 |
'FONT_MINCHO' |
'stdout' |
'stderr' |
'DEFAULT_END_OFFSET' |
) |
|
# This is only used to exit when -DD is used |
815,8 → 821,8 |
# from the current video |
# compute_timecodes($1 = timecode_from, $2 = interval, $3 = numcaps) |
compute_timecodes() { |
local st=0 end=${VID[$LEN]} tcfrom=$1 tcint=$2 tcnumcaps=$3 |
# globals: fromtime, totime, timecode_from, TIMECODES |
local st=0 end=${VID[$LEN]} tcfrom=$1 tcint=$2 tcnumcaps=$3 eo=0 |
# globals: fromtime, totime, timecode_from, TIMECODES, end_offset |
if [ $st -lt $fromtime ]; then |
st=$fromtime |
fi |
823,7 → 829,15 |
if [ $totime -gt 0 ] && [ $end -gt $totime ]; then |
end=$totime |
fi |
if [ $totime -le 0 ]; then # If no totime is set, use end_offset |
eo=$end_offset |
|
if fptest 0 -ne "($end-$st-$eo)<0" ; then |
error "End offset too high, use e.g. '-E0'." |
return $EX_UNAVAILABLE |
fi |
fi |
|
local inc= |
if [ "$tcfrom" -eq $TC_INTERVAL ]; then |
inc=$tcint |
835,7 → 849,7 |
else |
#inc=$(( ($end-$st) / $tcnumcaps )) |
# FIXME: The last second is avoided (-1) to get the correct caps number |
inc=$( bc -lq <<< "scale=3; ($end-$st-1)/$tcnumcaps" ) |
inc=$( bc -lq <<< "scale=3; ($end-$eo-$st)/$tcnumcaps" ) |
fi |
else |
error "Internal error" |
853,7 → 867,7 |
stamp=$(bc -q <<<"$stamp+$inc") |
done |
unset LTC[0] # Discard initial cap (=$st) |
TIMECODES=( ${TIMECODES[*]} ${LTC[*]} ) |
TIMECODES=( ${TIMECODES[@]} ${LTC[@]} ) |
} |
|
# Tries to guess an aspect ratio comparing width and height to some |
1593,6 → 1607,9 |
as -i. |
-t|--to <arg> Set ending time. No caps beyond this. Same format |
as -i. |
-E|--end_offset <arg> This time is ignored, from the end of the video. Same |
format as -i. This value is not used when a explicit |
ending time is set. By default it is $DEFAULT_END_OFFSET. |
-T|--title <arg> Add a title above the vidcaps. |
-j|--jpeg Output in jpeg (by default output is in png). |
-q|--quiet Don't print progess messages just errors. Repeat to |
1732,11 → 1749,14 |
|
# Returned value tests, compare return to expected return |
local TESTS=( |
# Don't use anything with a RE meaning |
|
# Floating point numeric "test" |
"fptest 3 -eq 3 0 #FP test" |
"fptest 3.2 -gt 1 0 #FP test" |
"fptest 1/2 -le 2/3 0 #FP test" |
"fptest 6.34 -gt 6.34 1 # FP test" |
"fptest 1>0 -eq 1 0 #FP -logical- test" |
|
"is_number 3 0 #Numeric recognition" |
"is_number '3' 1 #Quoted numeric recognition" |
1801,10 → 1821,10 |
# TODO: use no name at all with -u noarg |
#eval set -- "${default_options} ${@}" |
ARGS="$@" |
TEMP=$(getopt -s bash -o i:n:u:T:f:t:S:jhFMH:c:ma:l:De::UqAO:I::k:W: \ |
TEMP=$(getopt -s bash -o i:n:u:T:f:t:S:jhFMH:c:ma:l:De::UqAO:I::k:W:E: \ |
--long "interval:,numcaps:,username:,title:,from:,to:,stamp:,jpeg,help,"\ |
"shoehorn:,mplayer,ffmpeg,height:,columns:,manual,aspect:,highlight:,"\ |
"extended::,fullname,quiet,autoaspect,override:,mincho,funky:" \ |
"extended::,fullname,quiet,autoaspect,override:,mincho,funky:,end_offset:" \ |
-n $0 -- "$@") |
|
eval set -- "$TEMP" |
1852,6 → 1872,14 |
fi |
shift |
;; |
-E|--end_offset) |
if ! totime=$(get_interval "$2") ; then |
error "End offset must be a valid timecode. Got '$2'." |
exit $EX_USAGE |
fi |
end_offset=$totime |
shift |
;; |
-t|--to) |
if ! totime=$(get_interval "$2") ; then |
error "Ending timestamp must be a valid timecode. Got '$2'." |
1996,7 → 2024,7 |
;; |
*) |
error "Unknown funky mode. Got '$2'." |
exit $EX_UAGE |
exit $EX_USAGE |
;; |
esac |
shift |