aboutsummaryrefslogblamecommitdiffstats
path: root/ffextract-frame
blob: b9465504d60ab59c95fa444fa7ccf4c9a28d800d (plain) (tree)




















































                                                                                                       
#!/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