summaryrefslogtreecommitdiff
path: root/localvideowebencode
diff options
context:
space:
mode:
authorJonas Smedegaard <dr@jones.dk>2014-09-29 16:19:53 +0200
committerJonas Smedegaard <dr@jones.dk>2014-09-29 16:19:53 +0200
commit8bfcd96c580f5cbfec2f25021451184638caa8f7 (patch)
tree1bb406a3f972bfb3b4f1bf00069b386a0c949f5e /localvideowebencode
parent0857688474916f8e6e3f24bc8182aa87637e4bbd (diff)
Drop support for fixed bitrate: Outside scope of this script.
Diffstat (limited to 'localvideowebencode')
-rwxr-xr-xlocalvideowebencode34
1 files changed, 11 insertions, 23 deletions
diff --git a/localvideowebencode b/localvideowebencode
index bb383aa..f3e80a7 100755
--- a/localvideowebencode
+++ b/localvideowebencode
@@ -61,11 +61,8 @@ html favoring open formats with optional non-JavaScript Flash fallback.
(default: no aspect hinting)
-r, --rate Video framerate: e.g. 25 1001/30000
(default: use input framerate)
- --refbpp Reference bits-per-pixel relative to 360p30, for
- computing average bitrate when not fixed
+ --refbpp Bits-per-pixel ratio at 360p30, for bitrate hinting
(default: 0.12)
- -b, --bitrate Fixed video bitrate in bytes: e.g. 768k 1M
- (default: none - use variable bitrate)
--formats Containers and codecs to use, comma-separated:
[container] [video codec] [audio codec]
theora ogg Ogg Theora Vorbis
@@ -125,10 +122,9 @@ exit1() {
formats=webm,vp9,mp4
samplestart=0
samplelength=150
-bitrate_variable=yes
# parse cmdline options
-TEMP="`getopt -s sh -o hp:s:a:r:b:t: -l help,profile:,size:,aspect:,rate:,video:,refbpp:,bitrate:,formats:,audio:,audioprefilter:,loudness,loudness-data:,filter:,stem:,title:,sample,sample-start:,sample-length: -n "$PRG" -- "$@"`" || exit1 "Internal getopt error."
+TEMP="`getopt -s sh -o hp:s:a:r:b:t: -l help,profile:,size:,aspect:,rate:,video:,refbpp:,formats:,audio:,audioprefilter:,loudness,loudness-data:,filter:,stem:,title:,sample,sample-start:,sample-length: -n "$PRG" -- "$@"`" || exit1 "Internal getopt error."
eval set -- "$TEMP"
while true ; do
case "$1" in
@@ -139,7 +135,6 @@ while true ; do
-r|--rate) framerate="$2"; shift 2;;
--video) video="$2"; shift 2;;
--refbpp) refbpp="$2"; shift 2;;
- -b|--bitrate) bitrate="$2"; bitrate_fixed=yes; bitrate_variable=; shift 2;;
--formats) formats="$2"; shift 2;;
--audio) audio="$2"; shift 2;;
--audioprefilter) audioprefilters="${audioprefilters:+$audioprefilters }-filter $2"; shift 2;;
@@ -281,8 +276,7 @@ if [ -n "$_pixels" ] && [ $_pixels -ge $((1024*768)) ]; then
fi
# compute average bitrate from reference data and "power of .75" rule
-bitrate_vp9="$bitrate"
-if [ -z "$bitrate" ] && [ -n "$_pixels" ] && [ -n "$_frames" ]; then
+if [ -n "$_pixels" ] && [ -n "$_frames" ]; then
bitrate=$(perl -E '$refsize=640*360;' \
-E "say int( +(($_pixels/\$refsize)**0.75*\$refsize*$_frames*$refbpp) )")
bitrate_vp9=$(perl -E "say int( $bitrate/2 )") #"
@@ -331,22 +325,22 @@ esac
melt="melt -progress"
_melt_sample="$infile_first ${sample:+in=${samplestart:-0} out=$((${samplestart:-0} + samplelength))}"
_melt_video="progressive=1${framerate:+ frame_rate_den="$framerate_den" frame_rate_num="$framerate_num"}${size:+ s=${width:+$width}x${height:+$height}}${aspect:+ aspect=$aspect}"
-_melt_ogg="$_melt_video f=ogg vcodec=libtheora${bitrate:+ vb=$bitrate}${bitrate_variable:+ qscale=5}"
-_melt_h264="$_melt_video f=mp4 vcodec=libx264 vpreset=medium vprofile=baseline${x264tune:+ tune=$x264tune}${bitrate_fixed:+ vb=$bitrate} threads=0 movflags=+faststart${bitrate_variable:+ crf=23}"
-_melt_webm="$_melt_video f=webm vcodec=libvpx vpreset=libvpx-$webmpreset${bitrate:+ vb=$bitrate}${bitrate_fixed:+ minrate=$bitrate maxrate=$bitrate}${bitrate_variable:+ crf=10} cpu-used=3"
+_melt_ogg="$_melt_video f=ogg vcodec=libtheora${bitrate:+ vb=$bitrate} qscale=5"
+_melt_h264="$_melt_video f=mp4 vcodec=libx264 vpreset=medium vprofile=baseline${x264tune:+ tune=$x264tune} threads=0 movflags=+faststart crf=23"
+_melt_webm="$_melt_video f=webm vcodec=libvpx vpreset=libvpx-$webmpreset${bitrate:+ vb=$bitrate} crf=10 cpu-used=3"
_melt_img="$_melt_video f=image2"
# CRF ignored with libvpx 1.3
-_melt_vp9="$_melt_video f=webm vcodec=libvpx-vp9 vpreset=libvpx-$webmpreset${bitrate_vp9:+ vb=$bitrate_vp9}${bitrate_fixed:+ minrate=$bitrate_vp9 maxrate=$bitrate_vp9}${bitrate_variable:+ crf=10} cpu-used=5"
+_melt_vp9="$_melt_video f=webm vcodec=libvpx-vp9 vpreset=libvpx-$webmpreset${bitrate_vp9:+ vb=$bitrate_vp9} crf=10 cpu-used=5"
_melt_audio="${channels:+ac=$channels}"
# limit (i.e. avoid peaks "clipping")
_melt_postfilters_audio="${limit:+-filter ladspa.1077}"
_melt_vorbis="$_melt_audio acodec=libvorbis${channels:+ ab=$(($channels*$bitrate_vorbis))k}"
-_melt_opus="$_melt_audio acodec=libopus${channels:+ ab=$(($channels*$bitrate_opus))k}${bitrate_fixed:+ vbr=constrained}${opusapp:+ application=$opusapp}"
+_melt_opus="$_melt_audio acodec=libopus${channels:+ ab=$(($channels*$bitrate_opus))k}${opusapp:+ application=$opusapp}"
_melt_aac="$_melt_audio acodec=aac${channels:+ ab=$(($channels*$bitrate_aac))k}"
avconv="avconv -threads auto -y -v warning"
-_avconv_vp8="-c:v libvpx -pre:v libvpx-$webmpreset${bitrate:+ -b:v $bitrate}${bitrate_fixed:+ -minrate $bitrate -maxrate $bitrate}${bitrate_variable:+ -crf 10} -cpu-used 3"
-_avconv_vp9="-c:v libvpx-vp9 -pre:v libvpx-$webmpreset${bitrate_vp9:+ -b:v $bitrate_vp9}${bitrate_fixed:+ -minrate $bitrate_vp9 -maxrate $bitrate_vp9}${bitrate_variable:+ -crf 10} -cpu-used 5"
+_avconv_vp8="-c:v libvpx -pre:v libvpx-$webmpreset${bitrate:+ -b:v $bitrate} -crf 10 -cpu-used 3"
+_avconv_vp9="-c:v libvpx-vp9 -pre:v libvpx-$webmpreset${bitrate_vp9:+ -b:v $bitrate_vp9} -crf 10 -cpu-used 5"
# resolve EBU R128 audio normalizing
if [ -n "$loudness" ] && [ -z "$_melt_loudness" ]; then
@@ -356,12 +350,6 @@ if [ -n "$loudness" ] && [ -z "$_melt_loudness" ]; then
echo "Loudness data: $_melt_loudness"
fi
-if [ -n "$mp4" ] && [ -n "$bitrate_fixed" ]; then
- echo "Analyzing complexity for MPEG-4..."
- $melt ${_melt_sample:-$infiles} $filters \
- -consumer avformat:/dev/null pass=1 fastfirstpass=1 an=1 audio_off=1 $_melt_h264
-fi
-
if [ -n "$webm$vp9" ]; then
echo "Analyzing complexity for WebM..."
$melt ${_melt_sample:-$infiles} $filters \
@@ -378,7 +366,7 @@ $melt ${_melt_sample:-$infiles} \
${channels:+$audioprefilters${_melt_loudness:+ -filter loudness results="$_melt_loudness"}} \
$filters${channels:+ $_melt_postfilters_audio} \
${ogg:+-consumer avformat:$stem.ogv $_melt_ogg $_melt_vorbis} \
- ${mp4:+-consumer avformat:$stem.mp4${bitrate_fixed:+ pass=2} $_melt_h264 $_melt_aac} \
+ ${mp4:+-consumer avformat:$stem.mp4 $_melt_h264 $_melt_aac} \
${webm:+-consumer avformat:$stem.webm $_melt_webm pass=2 passlogfile=${stem}_vp8 $_melt_vorbis} \
${vp9:+-consumer avformat:${stem}_vp9.webm pass=2 passlogfile=${stem}_vp9 $_melt_vp9 $_melt_opus}