Skip to content

Commit

Permalink
ffmpeg: add option not to offset seek position by start time
Browse files Browse the repository at this point in the history
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
  • Loading branch information
wm4 authored and michaelni committed Apr 20, 2015
1 parent 57865a9 commit bac7084
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 1 deletion.
7 changes: 7 additions & 0 deletions doc/ffmpeg.texi
Original file line number Diff line number Diff line change
Expand Up @@ -1158,6 +1158,13 @@ This option enables or disables accurate seeking in input files with the
transcoding. Use @option{-noaccurate_seek} to disable it, which may be useful
e.g. when copying some streams and transcoding the others.

@item -seek_timestamp (@emph{input})
This option enables or disables seeking by timestamp in input files with the
@option{-ss} option. It is disabled by default. If enabled, the argument
to the @option{-ss} option is considered an actual timestamp, and is not
offset by the start time of the file. This matters only for files which do
not start from timestamp 0, such as transport streams.

@item -thread_queue_size @var{size} (@emph{input})
This option sets the maximum number of queued packets when reading from the
file or device. With low latency / high rate live streams, packets may be
Expand Down
2 changes: 2 additions & 0 deletions ffmpeg.h
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,7 @@ typedef struct OptionsContext {

/* input/output options */
int64_t start_time;
int seek_timestamp;
const char *format;

SpecifierOpt *codec_names;
Expand Down Expand Up @@ -339,6 +340,7 @@ typedef struct InputFile {
int64_t ts_offset;
int64_t last_ts;
int64_t start_time; /* user-specified start time in AV_TIME_BASE or AV_NOPTS_VALUE */
int seek_timestamp;
int64_t recording_time;
int nb_streams; /* number of stream that ffmpeg is aware of; may be different
from ctx.nb_streams if new streams appear during av_read_frame() */
Expand Down
5 changes: 4 additions & 1 deletion ffmpeg_opt.c
Original file line number Diff line number Diff line change
Expand Up @@ -919,7 +919,7 @@ static int open_input_file(OptionsContext *o, const char *filename)

timestamp = (o->start_time == AV_NOPTS_VALUE) ? 0 : o->start_time;
/* add the stream start time */
if (ic->start_time != AV_NOPTS_VALUE)
if (!o->seek_timestamp && ic->start_time != AV_NOPTS_VALUE)
timestamp += ic->start_time;

/* if seeking requested, we execute it */
Expand Down Expand Up @@ -2865,6 +2865,9 @@ const OptionDef options[] = {
{ "ss", HAS_ARG | OPT_TIME | OPT_OFFSET |
OPT_INPUT | OPT_OUTPUT, { .off = OFFSET(start_time) },
"set the start time offset", "time_off" },
{ "seek_timestamp", HAS_ARG | OPT_INT | OPT_OFFSET |
OPT_INPUT, { .off = OFFSET(seek_timestamp) },
"enable/disable seeking by timestamp with -ss" },
{ "accurate_seek", OPT_BOOL | OPT_OFFSET | OPT_EXPERT |
OPT_INPUT, { .off = OFFSET(accurate_seek) },
"enable/disable accurate seeking with -ss" },
Expand Down

0 comments on commit bac7084

Please sign in to comment.