Параметры, необходимые для эмуляции флага FFMPEG '-sameq' при использовании libavcodec - PullRequest
2 голосов
/ 02 июня 2011

В настоящее время пытаются использовать 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 для улучшения качества вывода?

1 Ответ

0 голосов
/ 15 июня 2011

После дальнейшего тестирования и использования некоторых других вызовов в библиотеке Libavformat я обнаружил, что, пока я устанавливаю битовую скорость выходного контекста равной входному контексту, то можно поддерживать то же качество. Это не очень удобно при транскодировании из формата с высокой пропускной способностью, такого как MPEG2, вплоть до потока H264, поскольку пропускная способность выходного сигнала, вероятно, намного больше, чем нужно, но это решение, позволяющее не терять качество транскодированного файла .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...