Android-Kamera onPreviewFrame Bildrate ist nicht konsistent

Ich versuche zu Kodieren eine 30 frames pro Sekunde video mit MediaCodec durch die Kamera PreviewCall zurück(onPreviewFrame). Das video, das ich codiert spielt immer sehr schnell(das ist nicht gewünscht).
So, ich habe versucht zu überprüfen, die Anzahl der frames, die kommt in meine Kamera-Vorschau durch die Einrichtung eines int frameCount variable zu erinnern, seine Zählung. Was ich erwarte ist 30 frames pro Sekunde, weil ich meine setup-Kamera-Vorschau zu 30 fps-Vorschau(siehe unten). Das Ergebnis, dass ich wieder komme ist nicht das gleiche.
Ich rief die onPreviewFrame Rückruf für die 10 Sekunden, die Anzahl der frameCount ich wieder komme ist nur etwa 100 Bilder. Das ist schlecht, da warte ich auf 300 frames. Ist meine Kamera-Parameter richtig eingestellt? Ist das eine Einschränkung von Android Kamera-Vorschau rufen Sie zurück? Und wenn dies ist eine Einschränkung der Android-Kamera-Vorschau rufen Sie zurück, dann ist es eine andere Kamera-Rückruf, zurück, Kamera-Bild-Daten(nv21,yuv, yv12) bei 30 frames pro Sekunde?

vielen Dank für das Lesen und deine Zeit für ein helpout. ich würde schätzen alle Kommentare und Meinungen.

Hier ist ein Beispiel für ein kodiertes video mit Kamera onPreviewFrame:

http://www.youtube.com/watch?v=I1Eg2bvrHLM&feature=youtu.werden

                Camera.Parameters parameters = mCamera.getParameters();
                parameters.setPreviewFormat(ImageFormat.NV21);
                parameters.setPictureSize(previewWidth,previewHeight);
                parameters.setPreviewSize(previewWidth, previewHeight);
//             parameters.setPreviewFpsRange(30000,30000);

                parameters.setPreviewFrameRate(30);
                mCamera.setParameters(parameters);

                mCamera.setPreviewCallback(previewCallback);
                mCamera.setPreviewDisplay(holder);
  • Unterschiedliche Geräte haben unterschiedliche Funktionen. Ist 30fps im Bereich zurückgegeben, die von developer.android.com/reference/android/hardware/... ?
  • Mein Gerät zurückgegeben, eine Reihe von 5000-30000, ich denke, meine Frage ist jetzt, wie Sie die rate fix, damit es nicht schwankt die ganze Zeit?
  • gibt es andere Möglichkeiten, um die Kamera-frame-Daten anderen als Kamera onPreviewFrame Rückruf?
  • Sie können die systemeigene Kamera intrface, als OpenCV tut, statt onPreviewFrame(), aber es ist nicht sicherer, nicht schneller und nicht offiziell unterstützt. Es wird keine überwindung der variable range-problem. Ich würde nur empfehlen, diese Möglichkeit für video-Aufnahme, wenn Sie mit hardware-encoder, die Kamera zu Lesen-Puffer im kernel-Adressraum.
InformationsquelleAutor xiaowoo | 2013-11-12
Schreibe einen Kommentar