diff --git a/libavformat/dashenc.c b/libavformat/dashenc.c index 56af916555..a9b8b1d4f6 100644 --- a/libavformat/dashenc.c +++ b/libavformat/dashenc.c @@ -196,6 +196,16 @@ static const char *get_format_str(SegmentType segment_type) { return NULL; } +static int check_file_extension(const char *filename, const char *extension) { + char *dot; + if (!filename || !extension) + return -1; + dot = strrchr(filename, '.'); + if (dot && !strcmp(dot + 1, extension)) + return 0; + return -1; +} + static void set_vp9_codec_str(AVFormatContext *s, AVCodecParameters *par, AVRational *frame_rate, char *str, int size) { VPCC vpcc; @@ -987,6 +997,17 @@ static int dash_init(AVFormatContext *s) c->format_name = get_format_str(c->segment_type); if (!c->format_name) return AVERROR_MUXER_NOT_FOUND; + if (c->segment_type == SEGMENT_TYPE_WEBM) { + if ((!c->single_file && check_file_extension(c->init_seg_name, c->format_name) != 0) || + (!c->single_file && check_file_extension(c->media_seg_name, c->format_name) != 0) || + (c->single_file && check_file_extension(c->single_file_name, c->format_name) != 0)) { + av_log(s, AV_LOG_WARNING, + "One or many segment file names doesn't end with .webm. " + "Override -init_seg_name and/or -media_seg_name and/or " + "-single_file_name to end with the extension .webm\n"); + } + } + ctx->oformat = av_guess_format(c->format_name, NULL, NULL); if (!ctx->oformat) return AVERROR_MUXER_NOT_FOUND;