#!/bin/sh # See LICENSE file for copyright and license details. set -e usage () { printf 'usage %s: [-t time] [-y] in-file [out-file]\n' "$0" >&2 exit 1 } ffmpeg_flag_y= ss=10 while getopts t:y flag; do case "$flag" in t) ss="${OPTARG}";; y) ffmpeg_flag_y=-y;; ?) usage;; esac done shift $(( ${OPTIND} - 1 )) if test ! $# = 1 && test ! $# = 2; then usage fi removeext () { printf '%s\0' "$1" | tr '\0\n' '\n\0' | sed 's/\.[^.]*$//' | tr '\0' '\n' } in_file="$1" if test -z "${in_file}"; then usage fi out_file="" if test $# = 2; then out_file="$2" if test -z "${out_file}"; then usage fi else out_file="$(removeext "${in_file}").png" fi if test "${out_file}" = -; then exec ffmpeg -i "${in_file}" -ss "${ss}" -update 1 -frames:v 1 -c:v png -f image2pipe - else exec ffmpeg -i "${in_file}" -ss "${ss}" -update 1 -frames:v 1 ${ffmpeg_flag_y} -- "${out_file}" fi