From db1696b55cf4e308877b1938157194e2b570f89a Mon Sep 17 00:00:00 2001 From: Jonas Smedegaard Date: Wed, 24 Sep 2014 22:33:48 +0200 Subject: Add vp9 format, enabled by default. --- localvideowebencode | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) (limited to 'localvideowebencode') diff --git a/localvideowebencode b/localvideowebencode index 98843e6..12f7ce2 100755 --- a/localvideowebencode +++ b/localvideowebencode @@ -64,8 +64,9 @@ html favoring open formats with optional non-JavaScript Flash fallback. container video codec audio codec ogg Ogg Theora Vorbis webm WebM VP8 Vorbis + vp9 WebM VP9 Opus mp4 MPEG-4 H.264 AAC - (default: webm,mp4) + (default: webm,vp9,mp4) --audio Audio style: channels limit music max 2 @@ -120,7 +121,7 @@ exit1() { } # defaults -formats=webm,mp4 +formats=webm,vp9,mp4 samplestart=0 samplelength=150 @@ -274,6 +275,7 @@ for format in $(echo "$formats" | sed -e 's/,/ /g'); do ogg) ogg=yes;; mp4) mp4=yes;; webm) webm=yes;; + vp9) vp9=yes;; *) exit1 "Unknown format \"$format\".";; esac done @@ -298,10 +300,12 @@ fi if [ -z "$bitrate" ] && [ -n "$_pixels" ] && [ -n "$_frames" ]; then bitrate=$(perl -E '$refsize=640*360;' \ -E "say int( +(($_pixels/\$refsize)**0.75*\$refsize*$_frames*$refbpp) )") + bitrate_half=$(perl -E "say int( $bitrate/2 )") #" fi # default per-codec-channel bitrates bitrate_vorbis=64 +bitrate_opus=64 bitrate_aac=96 case "$audio" in @@ -311,11 +315,13 @@ case "$audio" in hqspeech) channels=1 bitrate_vorbis=48 + bitrate_opus=32 bitrate_aac=64 ;; speech) channels=1 bitrate_vorbis=48 + bitrate_opus=32 bitrate_aac=64 compress=yes [ -z "$melt_recent" ] || _melt_loudness="$loudness_results" @@ -337,14 +343,17 @@ esac # TODO: When verified beneficial, add option real_time=-2 melt="melt -progress" _melt_in="${_melt_in:+$_melt_in }${sample:+in=${samplestart:-0} out=$((${samplestart:-0} + samplelength))}" -_melt_video="progressive=1${framerate:+ frame_rate_den="$framerate_den" frame_rate_num="$framerate_num"}${bitrate:+ vb=$bitrate}${size:+ s=${width:+$width}x${height:+$height}}${aspect:+ aspect=$aspect}" -_melt_ogg="$_melt_video f=ogg vcodec=libtheora${bitrate_fixed:- qscale=5}" -_melt_h264="$_melt_video f=mp4 vcodec=libx264 threads=0 movflags=+faststart vpre=baseline${x264tune:+ tune=$x264tune}${bitrate_fixed:- crf=23}" -_melt_webm="$_melt_video f=webm vcodec=libvpx vpre=libvpx-$webmpreset${bitrate_fixed:- crf=10}" +_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_fixed:- qscale=5}" +_melt_h264="$_melt_video f=mp4 vcodec=libx264${bitrate:+ vb=$bitrate} threads=0 movflags=+faststart vpre=baseline${x264tune:+ tune=$x264tune}${bitrate_fixed:- crf=23}" +_melt_webm="$_melt_video f=webm vcodec=libvpx${bitrate:+ vb=$bitrate} vpre=libvpx-$webmpreset${bitrate_fixed:- crf=10}" +# CRF ignored with libvpx 1.3 +_melt_vp9="$_melt_video f=webm vcodec=libvpx-vp9${bitrate:+ vb=$bitrate_half} vpre=libvpx-$webmpreset${bitrate_fixed:- crf=10}" _melt_audio="${channels:+ac=$channels}" # limit (i.e. avoid peaks "clipping") _melt_postfilters_audio="${limit:+-filter ladspa.1077}" _melt_vorbis="$_melt_audio acodec=libvorbis ab=$(($channels*$bitrate_vorbis))k" +_melt_opus="$_melt_audio acodec=libopus ab=$(($channels*$bitrate_opus))k" _melt_aac="$_melt_audio acodec=aac ab=$(($channels*$bitrate_aac))k" # resolve EBU R128 audio normalizing @@ -365,7 +374,8 @@ $melt -group $_melt_in $infiles \ $filters${channels:+ $_melt_postfilters_audio} \ ${ogg:+-consumer avformat:$stem.ogv $_melt_ogg $_melt_vorbis $_melt_out} \ ${mp4:+-consumer avformat:$stem.mp4 ${bitrate_fixed:+pass=2} $_melt_h264 $_melt_aac $_melt_out} \ - ${webm:+-consumer avformat:$stem.webm $_melt_webm $_melt_vorbis $_melt_out} + ${webm:+-consumer avformat:$stem.webm $_melt_webm $_melt_vorbis $_melt_out} \ + ${vp9:+-consumer avformat:${stem}_vp9.webm $_melt_vp9 $_melt_opus $_melt_out} if [ -n "$mp4" ] && [ -z "$melt_recent" ]; then mv "$stem.mp4" "$stem.mp4"~ @@ -385,6 +395,7 @@ __height="${_height:+ height=\"$_height\"}" __heightplus=${_height:+ height=\"$(($_height+4))\"} _source_ogg="" _source_webm="" +_source_vp9="" _source_mp4="" # TODO: resolve flash player to use [ -z "$flashplayer" ] || flash=yes @@ -393,13 +404,15 @@ _object_flash="" _param_flashvars="" __oggfile=${ogg:+open format Ogg} -__webmfile=${webm:+open format WebM} +__webmfile=${webm:+open format WebM (VP8)} +__vp9file=${vp9:+open format WebM (VP9/Opus)} __mp4file=${mp4:+closed format MPEG-4} cat >"$stem.html" < ${mp4:+$_source_mp4 +}${vp9:+$_source_vp9 }${webm:+$_source_webm }${ogg:+$_source_ogg }${flash:+$_object_flash @@ -410,7 +423,8 @@ $_param_flashvars ${flash:+ }

Download Video:

    -${webm:+
  • $__webmfile +${vp9:+
  • $__vp9file +}${webm:+
  • $__webmfile }${ogg:+
  • $__oggfile }${mp4:+
  • $__mp4file }

-- cgit v1.2.3