|
@@ -254,6 +254,7 @@ static const OptionDef *options;
|
|
|
|
|
|
/* FFprobe context */
|
|
|
static const char *input_filename;
|
|
|
+static const char *print_input_filename;
|
|
|
static AVInputFormat *iformat = NULL;
|
|
|
|
|
|
static struct AVHashContext *hash;
|
|
@@ -2836,7 +2837,8 @@ static void show_error(WriterContext *w, int err)
|
|
|
writer_print_section_footer(w);
|
|
|
}
|
|
|
|
|
|
-static int open_input_file(InputFile *ifile, const char *filename)
|
|
|
+static int open_input_file(InputFile *ifile, const char *filename,
|
|
|
+ const char *print_filename)
|
|
|
{
|
|
|
int err, i;
|
|
|
AVFormatContext *fmt_ctx = NULL;
|
|
@@ -2858,6 +2860,10 @@ static int open_input_file(InputFile *ifile, const char *filename)
|
|
|
print_error(filename, err);
|
|
|
return err;
|
|
|
}
|
|
|
+ if (print_filename) {
|
|
|
+ av_freep(&fmt_ctx->url);
|
|
|
+ fmt_ctx->url = av_strdup(print_filename);
|
|
|
+ }
|
|
|
ifile->fmt_ctx = fmt_ctx;
|
|
|
if (scan_all_pmts_set)
|
|
|
av_dict_set(&format_opts, "scan_all_pmts", NULL, AV_DICT_MATCH_CASE);
|
|
@@ -2971,7 +2977,8 @@ static void close_input_file(InputFile *ifile)
|
|
|
avformat_close_input(&ifile->fmt_ctx);
|
|
|
}
|
|
|
|
|
|
-static int probe_file(WriterContext *wctx, const char *filename)
|
|
|
+static int probe_file(WriterContext *wctx, const char *filename,
|
|
|
+ const char *print_filename)
|
|
|
{
|
|
|
InputFile ifile = { 0 };
|
|
|
int ret, i;
|
|
@@ -2980,7 +2987,7 @@ static int probe_file(WriterContext *wctx, const char *filename)
|
|
|
do_read_frames = do_show_frames || do_count_frames;
|
|
|
do_read_packets = do_show_packets || do_count_packets;
|
|
|
|
|
|
- ret = open_input_file(&ifile, filename);
|
|
|
+ ret = open_input_file(&ifile, filename, print_filename);
|
|
|
if (ret < 0)
|
|
|
goto end;
|
|
|
|
|
@@ -3286,6 +3293,12 @@ static int opt_input_file_i(void *optctx, const char *opt, const char *arg)
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
+static int opt_print_filename(void *optctx, const char *opt, const char *arg)
|
|
|
+{
|
|
|
+ print_input_filename = arg;
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
void show_help_default(const char *opt, const char *arg)
|
|
|
{
|
|
|
av_log_set_callback(log_callback_help);
|
|
@@ -3544,6 +3557,7 @@ static const OptionDef real_options[] = {
|
|
|
{ "read_intervals", HAS_ARG, {.func_arg = opt_read_intervals}, "set read intervals", "read_intervals" },
|
|
|
{ "default", HAS_ARG | OPT_AUDIO | OPT_VIDEO | OPT_EXPERT, {.func_arg = opt_default}, "generic catch all option", "" },
|
|
|
{ "i", HAS_ARG, {.func_arg = opt_input_file_i}, "read specified file", "input_file"},
|
|
|
+ { "print_filename", HAS_ARG, {.func_arg = opt_print_filename}, "override the printed input filename", "print_file"},
|
|
|
{ "find_stream_info", OPT_BOOL | OPT_INPUT | OPT_EXPERT, { &find_stream_info },
|
|
|
"read and decode the streams to fill missing information with heuristics" },
|
|
|
{ NULL, },
|
|
@@ -3692,7 +3706,7 @@ int main(int argc, char **argv)
|
|
|
av_log(NULL, AV_LOG_ERROR, "Use -h to get full help or, even better, run 'man %s'.\n", program_name);
|
|
|
ret = AVERROR(EINVAL);
|
|
|
} else if (input_filename) {
|
|
|
- ret = probe_file(wctx, input_filename);
|
|
|
+ ret = probe_file(wctx, input_filename, print_input_filename);
|
|
|
if (ret < 0 && do_show_error)
|
|
|
show_error(wctx, ret);
|
|
|
}
|