#!/bin/sh # defaults _format="-input_format mjpeg" _dev="/dev/video0" # loop through arguments for arg in $@ do # set values based of arguments found case $arg in s|start) _start=1 ;; k|kill|stop) _stop=1 ;; l|list) _list=1 ;; 30) _fps="-framerate 30" ;; 60) _fps="-framerate 60" ;; raw) _format="-input_format yuyv422" ;; fullhd) _res="-video_size 1920x1080" ;; hd) _res="-video_size 1280x720" ;; sd) _res="-video_size 640x360" ;; max) _res="max" ;; [0-9]*x[0-9]*) _res="-video_size $arg" ;; [0-9]) _dev="$arg" ;; *) _unknown="$_unknown $arg" ;; esac shift; done if [ ! -z "$_unknown" ] then echo "unknown parameter(s): $_unknown" fi # set resolution if [ x"$_res" == x"max" ] then _res="-video_size $(ffplay -f v4l2 -list_formats all -i $_dev 2>&1 \ | grep mjpeg \ | xargs \ | cut -d":" -f4 \ | cut -d " " -f2 \ )" _format="-input_format mjpeg" fi # list supported formats + resolutions if [ ! -z "$_list" ] then command="$(echo "ffplay -f v4l2 -list_formats all -i $_dev")" echo "starting: $command" $command 2>&1 \ | grep '^\[video4linux2' \ | cut -d: -f3,4 \ | sed -e 's/^[ \t]*//;s/ : /: /' exit 0 fi if [ ! -z "$_start" ] then command="ffplay -loglevel quiet -f v4l2 $_fps $_format $_res -i $_dev" echo "starting: $command" | xargs _SWM_WS=-1 $command > /dev/null 2>&1 & [ $? -ne 0 ] \ && echo "ffplay couldn't start" exit 0 fi if [ ! -z "$_stop" ] then echo "stopping: ffplay -loglevel quiet -f v4l2" pkill -qf "ffplay -loglevel quiet -f v4l2" exit 0 fi if [ $(( _start + _stop + _list )) -eq 0 ] then echo "usage: cam command [framerate] [format] [resolution] [device]" echo " commands:" echo " start - start camera" echo " stop - stop camera" echo " list - list supported formats and resolutions" echo " formats:" echo " raw - reads the yuyv422 stream (default is mjpeg)" echo " resolutions:" echo " sd - set video size to 640x360" echo " hd - set video size to 1280x720" echo " fullhd - set video size to 1920x1080" echo " max - set maximum video size (implies mjpeg format)" echo " x - manually set resolution (see list command)" echo " framerates:" echo " 30 - set framerate to 30 fps" echo " 60 - set framerate to 60 fps" echo " - set video device number (defaults is 0)" echo echo " Note: ffplay may not start or fall back to internal defaults when options (or combinations thereof) are not supported by the camera." exit 2 fi