diff options
author | root <root@atreju.jones.dk> | 2014-09-03 00:09:56 +0200 |
---|---|---|
committer | root <root@atreju.jones.dk> | 2014-09-03 16:05:58 +0200 |
commit | 687f7820a47e0126b3d80cde010a90a62daaab60 (patch) | |
tree | 9d0f08e02415d6c56c2dca50414d8148ed48ea8a | |
parent | 3e36d7686aef3831414b4bd83c1900e064d5a804 (diff) |
Add options --h264preset --webmpreset.
-rwxr-xr-x | localvideowebencode | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/localvideowebencode b/localvideowebencode index 0b1510b..905ae85 100755 --- a/localvideowebencode +++ b/localvideowebencode @@ -42,6 +42,10 @@ html favoring open formats with optional non-JavaScript Flash fallback. (default: none) --h264profile MPEG-4 AVC target profile: baseline main high (default: baseline) + --h264preset MPEG-4 AVC target preset: slow ultrafast etc. + (default: medium) + --webmpreset WebM target preset: 360p 720p 720p50_60 etc. + (default: profile-related or none) --stem Stem of output filenames, optionally with path (default: basename of last input file) -t, --title Title used in html fallback graphics @@ -87,7 +91,7 @@ rate=25 h264profile=baseline # parse cmdline options -TEMP="`getopt -s sh -o hp:s:a:r:b:t: -l help,profile:,size:,aspect:,rate:,bitrate:,h264profile:,stem:,title:,filter:,sample:: -n "$PRG" -- "$@"`" || exit1 "Internal getopt error." +TEMP="`getopt -s sh -o hp:s:a:r:b:t: -l help,profile:,size:,aspect:,rate:,bitrate:,h264profile:,h264preset:,webmpreset:,stem:,title:,filter:,sample:: -n "$PRG" -- "$@"`" || exit1 "Internal getopt error." eval set -- "$TEMP" while true ; do case "$1" in @@ -98,6 +102,8 @@ while true ; do -r|--rate) rate="$2"; shift 2;; -b|--bitrate) bitrate="$2"; shift 2;; --h264profile) h264profile="$2"; shift 2;; + --h264preset) h264preset="$2"; shift 2;; + --webmpreset) webmpreset="$2"; shift 2;; --stem) stem="$2"; shift 2;; -t|--title) title="$2"; shift 2;; --filter) filters="${filters:+$filters }-filter $2"; shift 2 @@ -145,41 +151,51 @@ case "$profile" in 320x240|qvga) _melt_in="-profile=quarter_pal${_melt_in:+ $_melt_in}" _melt="${size:-width=320 height=240}${_melt:+ $_melt}" + webmpreset="${webmpreset:-360p}" ;; 480x360|hvga) _melt_in="-profile=quarter_pal${_melt_in:+ $_melt_in}" _melt="${size:-width=480 height=360}${_melt:+ $_melt}" + webmpreset="${webmpreset:-360p}" ;; 640x480|vga) _melt_in="-profile=quarter_pal${_melt_in:+ $_melt_in}" _melt="${size:-width=640 height=480}${_melt:+ $_melt}" + webmpreset="${webmpreset:-360p}" ;; 800x600|svga) _melt_in="-profile=quarter_pal${_melt_in:+ $_melt_in}" _melt="${size:-width=800 height=600}${_melt:+ $_melt}" + webmpreset="${webmpreset:-360p}" ;; 1024x768|xga) _melt_in="-profile=quarter_pal${_melt_in:+ $_melt_in}" _melt="${size:-width=1024 height=768}${_melt:+ $_melt}" + webmpreset="${webmpreset:-720p}" ;; 240p|432x240|wqvga) _melt_in="-profile=atsc_720p_25${_melt_in:+ $_melt_in}" _melt="${size:-width=432 height=240}${_melt:+ $_melt}" + webmpreset="${webmpreset:-360p}" ;; 360p|640x360|nhd) _melt_in="-profile=atsc_720p_25${_melt_in:+ $_melt_in}" _melt="${size:-width=640 height=360}${_melt:+ $_melt}" + webmpreset="${webmpreset:-360p}" ;; 480p|848x480|wvga) _melt_in="-profile=atsc_720p_25${_melt_in:+ $_melt_in}" _melt="${size:-width=848 height=480}${_melt:+ $_melt}" + webmpreset="${webmpreset:-360p}" ;; 576p|1024x576|wsvga) _melt_in="-profile=atsc_720p_25${_melt_in:+ $_melt_in}" _melt="${size:-width=1024 height=576}${_melt:+ $_melt}" + webmpreset="${webmpreset:-360p}" ;; 720p|1280x720|wxga|hd) _melt_in="-profile=atsc_720p_25${_melt_in:+ $_melt_in}" + webmpreset="${webmpreset:-720p}" ;; '') _melt="progressive=1 frame_rate_den=1${_melt:+ $_melt}" @@ -192,10 +208,10 @@ esac case "$h264profile" in baseline|main) - _melt_h264="properties=x264-medium-$h264profile" + _melt_h264="properties=x264-medium-$h264profile ${h264preset:+-vpre=libx264-$h264preset}" ;; high) - _melt_h264="properties=x264-medium" + _melt_h264="properties=x264-medium ${h264preset:+-vpre=libx264-$h264preset}" ;; *) exit1 "Unknown MPEG-4 AVC profile \"$h264profile\".";; esac @@ -206,6 +222,7 @@ esac _melt_in="${_melt_in:+$_melt_in }-progress $sample" _melt="$_melt ${bitrate:+vb=${bitrate}} ${size:+s=$size} ${aspect:+aspect=$aspect}" _melt_audio="ab=96k" +_melt_webm="${webmpreset:+-vpre=libvpx-$webmpreset}" ## Theora/Vorbis/Ogg melt -group $_melt_in $infiles -group $filters -consumer avformat:"$stem.ogg" f=ogg vcodec=libtheora $_melt acodec=libvorbis $_melt_audio $_melt_out @@ -220,7 +237,7 @@ qt-faststart "$stem.mp4"~ "$stem.mp4" ## VP8/Vorbis/WebM # TODO: use two-pass when supported by melt -melt -group $_melt_in $infiles -group $filters -consumer avformat:"$stem.webm" properties=webm $_melt $_melt_audio $_melt_out +melt -group $_melt_in $infiles -group $filters -consumer avformat:"$stem.webm" properties=webm $_melt_webm $_melt $_melt_audio $_melt_out ## JPEG preview ffmpegthumbnailer -s0 -i "$stem.mp4" -o "$stem.jpg" |