В настоящее время пытаются использовать libavcodec для перекодирования видеофайлов MP4 (MPEG4 и H264) и MPG (MPEG2) в файлы .MP4, .MPG и .AVI.Делали это ранее, используя FFMpeg.exe с использованием флага '-sameq', чтобы сохранить выходной файл с качеством, аналогичным входному файлу.
Теперь с помощью av_open_input_file, av_read_frame и avcodec_decode_video2 откройте, прочитайтеи декодировать входной файл, затем назначая AVCodecContext и кодируя данные, используя avcodec_encode_video.Однако качество видео в выходном файле довольно низкое.
Это настройки AVCodecContext, которые я использую?: -
codecContextOutput->width = SAME AS INPUT FILE;
codecContextOutput->height = SAME AS INPUT FILE;
codecContextOutput->pix_fmt = SAME AS INPUT FILE;
/* frames per second */
AVRational ar;
ar.num = 1;
ar.den = 25;
codecContextOutput->time_base = ar;
codecContextOutput->gop_size = 10; /* emit one intra frame every ten frames */
codecContextOutput->max_b_frames=1;
codecContextOutput->bit_rate = 480000;
Кто-нибудь знает дополнительные настройки, необходимые для эмуляции '-sameq?'настройки или какие дополнительные настройки необходимы в AVCodecContext для улучшения качества вывода?