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ć?