mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-01-08 13:22:53 +02:00
lavf/concatdec: add the "duration" directive.
This commit is contained in:
parent
b92c7a8f4b
commit
ea2de3d096
@ -56,6 +56,8 @@ following directive is recognized:
|
|||||||
Path to a file to read; special characters and spaces must be escaped with
|
Path to a file to read; special characters and spaces must be escaped with
|
||||||
backslash or single quotes.
|
backslash or single quotes.
|
||||||
|
|
||||||
|
All subsequent directives apply to that file.
|
||||||
|
|
||||||
@item @code{ffconcat version 1.0}
|
@item @code{ffconcat version 1.0}
|
||||||
Identify the script type and version. It also sets the @option{safe} option
|
Identify the script type and version. It also sets the @option{safe} option
|
||||||
to 1 if it was to its default -1.
|
to 1 if it was to its default -1.
|
||||||
@ -64,6 +66,11 @@ To make FFmpeg recognize the format automatically, this directive must
|
|||||||
appears exactly as is (no extra space or byte-order-mark) on the very first
|
appears exactly as is (no extra space or byte-order-mark) on the very first
|
||||||
line of the script.
|
line of the script.
|
||||||
|
|
||||||
|
@item @code{duration @var{dur}}
|
||||||
|
Duration of the file. This information can be specified from the file;
|
||||||
|
specifying it here may be more efficient or help if the information from the
|
||||||
|
file is not available or accurate.
|
||||||
|
|
||||||
@end table
|
@end table
|
||||||
|
|
||||||
@subsection Options
|
@subsection Options
|
||||||
|
@ -20,6 +20,7 @@
|
|||||||
|
|
||||||
#include "libavutil/avstring.h"
|
#include "libavutil/avstring.h"
|
||||||
#include "libavutil/opt.h"
|
#include "libavutil/opt.h"
|
||||||
|
#include "libavutil/parseutils.h"
|
||||||
#include "avformat.h"
|
#include "avformat.h"
|
||||||
#include "internal.h"
|
#include "internal.h"
|
||||||
|
|
||||||
@ -174,6 +175,20 @@ static int concat_read_header(AVFormatContext *avf)
|
|||||||
}
|
}
|
||||||
if ((ret = add_file(avf, filename, &file, &nb_files_alloc)) < 0)
|
if ((ret = add_file(avf, filename, &file, &nb_files_alloc)) < 0)
|
||||||
FAIL(ret);
|
FAIL(ret);
|
||||||
|
} else if (!strcmp(keyword, "duration")) {
|
||||||
|
char *dur_str = get_keyword(&cursor);
|
||||||
|
int64_t dur;
|
||||||
|
if (!file) {
|
||||||
|
av_log(avf, AV_LOG_ERROR, "Line %d: duration without file\n",
|
||||||
|
line);
|
||||||
|
FAIL(AVERROR_INVALIDDATA);
|
||||||
|
}
|
||||||
|
if ((ret = av_parse_time(&dur, dur_str, 1)) < 0) {
|
||||||
|
av_log(avf, AV_LOG_ERROR, "Line %d: invalid duration '%s'\n",
|
||||||
|
line, dur_str);
|
||||||
|
FAIL(ret);
|
||||||
|
}
|
||||||
|
file->duration = dur;
|
||||||
} else if (!strcmp(keyword, "ffconcat")) {
|
} else if (!strcmp(keyword, "ffconcat")) {
|
||||||
char *ver_kw = get_keyword(&cursor);
|
char *ver_kw = get_keyword(&cursor);
|
||||||
char *ver_val = get_keyword(&cursor);
|
char *ver_val = get_keyword(&cursor);
|
||||||
|
Loading…
Reference in New Issue
Block a user