Wymagane wyjaśnienie właściwości JavaCV FFmpegFrameRecorder

używamFFmpegFrameRecorder aby uzyskać wejście wideo z mojej kamery internetowej i nagrać je w pliku wideo. Problem polega na tym, że buduję swoją aplikację przy użyciu kilku różnych kodów źródłowych demo, które znalazłem i używam właściwości, z których niektóre nie są dla mnie całkowicie jasne.

Po pierwsze, oto mój fragment kodu:

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) - Co to znaczy(13) jak mogę zrozumieć, jaki rzeczywisty kodek stoi za jakimkolwiek numerem?setPixelFormat - Po prostu to zrozum, nie wiem, co w ogóle robisetFrameRate (30) - Myślę, że powinno to być całkiem jasne, ale jaka jest logika, jaką liczbę klatek wybieramy (czy nie jest lepiej, tym lepiej?)setVideoBitrate (10 * 1024 * 1024) - znowu prawie nie wiem, co to robi i jaka jest logika kryjąca się za liczbami?

Na koniec chcę tylko wspomnieć o jednym ostatnim problemie, który nagrywam w ten sposób. Jeśli rzeczywista długość filmu to powiedzmy 20 sekund. Gdy odtwarzam plik wideo utworzony z programu, działa on znacznie szybciej. Nie mogę powiedzieć, czy jest to dokładnie 2 razy szybsze niż powinno być, ale ogólnie, jeśli nagrywam 20-sekundowy film, jest on odtwarzany przez około 10 sekund. Co może to powodować i jak mogę to naprawić?

questionAnswers(1)

yourAnswerToTheQuestion