summaryrefslogtreecommitdiff
path: root/localvideowebencode
diff options
context:
space:
mode:
authorroot <root@atreju.jones.dk>2014-09-03 00:09:56 +0200
committerroot <root@atreju.jones.dk>2014-09-03 16:05:58 +0200
commit687f7820a47e0126b3d80cde010a90a62daaab60 (patch)
tree9d0f08e02415d6c56c2dca50414d8148ed48ea8a /localvideowebencode
parent3e36d7686aef3831414b4bd83c1900e064d5a804 (diff)
Add options --h264preset --webmpreset.
Diffstat (limited to 'localvideowebencode')
-rwxr-xr-xlocalvideowebencode25
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"