char target[4][1024];
int update;
int use_strftime;
+ int frame_pts;
const char *muxer;
int use_rename;
} VideoMuxData;
AVStream *st = s->streams[0];
const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(st->codecpar->format);
- av_strlcpy(img->path, s->filename, sizeof(img->path));
+ av_strlcpy(img->path, s->url, sizeof(img->path));
/* find format */
if (s->oformat->flags & AVFMT_NOFILE)
av_log(s, AV_LOG_ERROR, "Could not get frame filename with strftime\n");
return AVERROR(EINVAL);
}
+ } else if (img->frame_pts) {
+ if (av_get_frame_filename2(filename, sizeof(filename), img->path, pkt->pts, AV_FRAME_FILENAME_FLAGS_MULTIPLE) < 0) {
+ av_log(s, AV_LOG_ERROR, "Cannot write filename by pts of the frames.");
+ return AVERROR(EINVAL);
+ }
} else if (av_get_frame_filename2(filename, sizeof(filename), img->path,
img->img_number,
AV_FRAME_FILENAME_FLAGS_MULTIPLE) < 0 &&
av_assert0(!img->split_planes);
- ret = avformat_alloc_output_context2(&fmt, NULL, img->muxer, s->filename);
+ ret = avformat_alloc_output_context2(&fmt, NULL, img->muxer, s->url);
if (ret < 0)
return ret;
st = avformat_new_stream(fmt, NULL);
{ "update", "continuously overwrite one file", OFFSET(update), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, ENC },
{ "start_number", "set first number in the sequence", OFFSET(img_number), AV_OPT_TYPE_INT, { .i64 = 1 }, 0, INT_MAX, ENC },
{ "strftime", "use strftime for filename", OFFSET(use_strftime), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, ENC },
+ { "frame_pts", "use current frame pts for filename", OFFSET(frame_pts), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, ENC },
{ "atomic_writing", "write files atomically (using temporary files and renames)", OFFSET(use_rename), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, ENC },
{ NULL },
};