From 8d30a205b19cbbb3230bb17818e705ffccd81731 Mon Sep 17 00:00:00 2001 From: dec05eba Date: Thu, 24 Nov 2022 20:43:25 +0100 Subject: Make -c optional, select container format from file extension by default --- src/main.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/main.cpp b/src/main.cpp index bde09b2..c47089d 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1099,6 +1099,25 @@ int main(int argc, char **argv) { const double target_fps = 1.0 / (double)fps; + AVFormatContext *av_format_context; + // The output format is automatically guessed by the file extension + avformat_alloc_output_context2(&av_format_context, nullptr, container_format, filename); + if (!av_format_context) { + fprintf(stderr, "Error: Failed to deduce container format from file extension\n"); + return 1; + } + + av_format_context->flags |= AV_CODEC_FLAG_GLOBAL_HEADER; + av_format_context->flags |= AVFMT_FLAG_GENPTS; + const AVOutputFormat *output_format = av_format_context->oformat; + + std::string file_extension = output_format->extensions; + { + size_t comma_index = file_extension.find(','); + if(comma_index != std::string::npos) + file_extension = file_extension.substr(0, comma_index); + } + if(strcmp(codec_to_use, "auto") == 0) { const AVCodec *h265_codec = find_h265_encoder(gpu_inf.vendor); -- cgit v1.2.3