Требуется объяснение свойств JavaCV FFmpegFrameRecorder

я используюFFmpegFrameRecorder чтобы получить видеовход с моей веб-камеры и записать его в видеофайл. Проблема в том, что я создаю свое приложение, используя несколько различных демонстрационных исходных кодов, которые я нашел, и я использую свойства, некоторые из которых мне не совсем понятны.

Во-первых, вот мой фрагмент кода:

FFmpegFrameRecorder recorder = new FFmpegFrameRecorder(FILENAME,  grabber.getImageWidth(),grabber.getImageHeight());

        recorder.setVideoCodec(13);
        recorder.setFormat("mp4");
        recorder.setPixelFormat(avutil.PIX_FMT_YUV420P);
        recorder.setFrameRate(30);
        recorder.setVideoBitrate(10 * 1024 * 1024);

        recorder.start();
setVideoCodec (13) - Что это означает(13) Как я могу понять, какой кодек стоит за любым номером?setPixelFormat - Просто возьми это, не знаю, что вообще делаетsetFrameRate (30) - Я думаю, что это должно быть довольно ясно, но все же, какова логика, по которой мы выбираем частоту кадров (не выше, тем лучше?)setVideoBitrate (10 * 1024 * 1024) - опять почти не знаю, что это делает и какова логика чисел?

В конце я просто хочу упомянуть еще одну проблему, которая заключается в том, что я получаю запись видео следующим образом. Если фактическая длина видео, скажем, 20 сек. Когда я воспроизводю видеофайл, созданный из программы, он работает значительно быстрее. Не могу сказать, точно ли это в 2 раза быстрее, чем должно быть, но в целом, если я записываю 20-секундное видео, оно воспроизводится в течение примерно 10 секунд. Что может вызвать это и как я могу это исправить?

Ответы на вопрос(1)

Ваш ответ на вопрос