ffplay: add option to allow custom seek interval

At present, left and right keys are hardcoded to seek by 10 seconds.
pull/295/head
Gyan Doshi 6 years ago
parent ad9b4ecc26
commit 1a4a8df249
  1. 2
      doc/ffplay.texi
  2. 8
      fftools/ffplay.c

@ -60,6 +60,8 @@ Play @var{duration} seconds of audio/video.
see @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}. see @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}.
@item -bytes @item -bytes
Seek by bytes. Seek by bytes.
@item -seek_interval
Set custom interval, in seconds, for seeking using left/right keys. Default is 10 seconds.
@item -nodisp @item -nodisp
Disable graphical display. Disable graphical display.
@item -noborder @item -noborder

@ -319,6 +319,7 @@ static int video_disable;
static int subtitle_disable; static int subtitle_disable;
static const char* wanted_stream_spec[AVMEDIA_TYPE_NB] = {0}; static const char* wanted_stream_spec[AVMEDIA_TYPE_NB] = {0};
static int seek_by_bytes = -1; static int seek_by_bytes = -1;
static float seek_interval = 10;
static int display_disable; static int display_disable;
static int borderless; static int borderless;
static int startup_volume = 100; static int startup_volume = 100;
@ -3343,10 +3344,10 @@ static void event_loop(VideoState *cur_stream)
seek_chapter(cur_stream, -1); seek_chapter(cur_stream, -1);
break; break;
case SDLK_LEFT: case SDLK_LEFT:
incr = -10.0; incr = seek_interval ? -seek_interval : -10.0;
goto do_seek; goto do_seek;
case SDLK_RIGHT: case SDLK_RIGHT:
incr = 10.0; incr = seek_interval ? seek_interval : 10.0;
goto do_seek; goto do_seek;
case SDLK_UP: case SDLK_UP:
incr = 60.0; incr = 60.0;
@ -3582,6 +3583,7 @@ static const OptionDef options[] = {
{ "ss", HAS_ARG, { .func_arg = opt_seek }, "seek to a given position in seconds", "pos" }, { "ss", HAS_ARG, { .func_arg = opt_seek }, "seek to a given position in seconds", "pos" },
{ "t", HAS_ARG, { .func_arg = opt_duration }, "play \"duration\" seconds of audio/video", "duration" }, { "t", HAS_ARG, { .func_arg = opt_duration }, "play \"duration\" seconds of audio/video", "duration" },
{ "bytes", OPT_INT | HAS_ARG, { &seek_by_bytes }, "seek by bytes 0=off 1=on -1=auto", "val" }, { "bytes", OPT_INT | HAS_ARG, { &seek_by_bytes }, "seek by bytes 0=off 1=on -1=auto", "val" },
{ "seek_interval", OPT_FLOAT | HAS_ARG, { &seek_interval }, "set seek interval for left/right keys, in seconds", "seconds" },
{ "nodisp", OPT_BOOL, { &display_disable }, "disable graphical display" }, { "nodisp", OPT_BOOL, { &display_disable }, "disable graphical display" },
{ "noborder", OPT_BOOL, { &borderless }, "borderless window" }, { "noborder", OPT_BOOL, { &borderless }, "borderless window" },
{ "volume", OPT_INT | HAS_ARG, { &startup_volume}, "set startup volume 0=min 100=max", "volume" }, { "volume", OPT_INT | HAS_ARG, { &startup_volume}, "set startup volume 0=min 100=max", "volume" },
@ -3652,7 +3654,7 @@ void show_help_default(const char *opt, const char *arg)
"c cycle program\n" "c cycle program\n"
"w cycle video filters or show modes\n" "w cycle video filters or show modes\n"
"s activate frame-step mode\n" "s activate frame-step mode\n"
"left/right seek backward/forward 10 seconds\n" "left/right seek backward/forward 10 seconds or to custom interval if -seek_interval is set\n"
"down/up seek backward/forward 1 minute\n" "down/up seek backward/forward 1 minute\n"
"page down/page up seek backward/forward 10 minutes\n" "page down/page up seek backward/forward 10 minutes\n"
"right mouse click seek to percentage in file corresponding to fraction of width\n" "right mouse click seek to percentage in file corresponding to fraction of width\n"

Loading…
Cancel
Save