diff --git a/doc/filters.texi b/doc/filters.texi index 7908c51d48..7151d4c748 100644 --- a/doc/filters.texi +++ b/doc/filters.texi @@ -18153,6 +18153,14 @@ do not have exactly the same duration in the first file. @end itemize +@subsection Commands + +This filter supports the following commands: +@table @option +@item next +Close the current segment and step to the next one +@end table + @section drawgraph, adrawgraph Draw a graph using input video or audio metadata. diff --git a/libavfilter/avf_concat.c b/libavfilter/avf_concat.c index 6198a33d53..46bd42359b 100644 --- a/libavfilter/avf_concat.c +++ b/libavfilter/avf_concat.c @@ -418,6 +418,19 @@ static av_cold void uninit(AVFilterContext *ctx) av_freep(&cat->in); } +static int process_command(AVFilterContext *ctx, const char *cmd, const char *args, + char *res, int res_len, int flags) +{ + int ret = AVERROR(ENOSYS); + + if (!strcmp(cmd, "next")) { + av_log(ctx, AV_LOG_VERBOSE, "Command received: next\n"); + return flush_segment(ctx); + } + + return ret; +} + AVFilter ff_avf_concat = { .name = "concat", .description = NULL_IF_CONFIG_SMALL("Concatenate audio and video streams."), @@ -429,4 +442,5 @@ AVFilter ff_avf_concat = { .outputs = NULL, .priv_class = &concat_class, .flags = AVFILTER_FLAG_DYNAMIC_INPUTS | AVFILTER_FLAG_DYNAMIC_OUTPUTS, + .process_command = process_command, };