Mit android-MediaRecorder

Unten ist die Struktur meiner Arbeit code zum aufzeichnen von video und audio:

Fragen:
1) Warum ist die CamcorderProfile benötigt? setProfile(...) erscheint, um die Dimensionen zu was auch immer QUALITY_HIGH gibt, aber später habe ich den Dimensionen will ich mit setVideoSize(...) die überschreibt das. Allerdings, wenn ich entfernen Sie die beiden CamcorderProfile Linien, die app stürzt bei setVideoSize(...) mit LogCat E/MediaRecorder(19526): setVideoSize called in an invalid state: 2.

2) Wie kann ich nicht audio aufnehmen? Die Dokumentation besagt, dass, wenn setAudioSource(...) ist nicht genannt, wird es keine audio-Spur. Wenn ich allerdings entfernen, die app stürzt bei setProfile(...) mit LogCat E/MediaRecorder(19946): try to set the audio encoder without setting the audio source first.

3.) Wenn ich entfernen Sie die beiden CamcorderProfile Linien und die setAudioSource(...) Linie, kracht es wie in 1).

4) ich habe auch versucht, durch hinzufügen der Zeile

recorder.setOutputFormat(OutputFormat.DEFAULT);

statt der CamcorderProfile Linien. Aber jetzt stürzt es bei perpare(). Wenn setAudioSource(...) bezeichnet, ist das LogCat ist: E/MediaRecorder(20737): audio source is set, but audio encoder is not set wenn es nicht heißt das LogCat ist: E/MediaRecorder(20544): video source is set, but video encoder is not set

Ich sah überall im internet, und ich kann nicht finden, ein gutes Beispiel für den richtigen Weg, um das setup der MediaRecorder. Hier es impliziert nach API 8 sollten Sie die CamcorderProfile Klasse, aber es scheint mir, dass es Probleme verursacht.

Jede Hilfe würde groß sein! Danke!

Code (die funktioniert, wenn Sie ausführen, wie es unten ist):

recorder = new MediaRecorder();
recorder.setCamera(<<camera>>);
recorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT);
recorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);

CamcorderProfile profile = CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH);
recorder.setProfile(profile);

recorder.setOutputFile(<<Path String>>);
recorder.setVideoSize(<<Width>>, <<Height>>);

recorder.setPreviewDisplay(<<Surface>>);

recorder.setOrientationHint(0); 
recorder.setMaxDuration(10000);
recorder.setOnInfoListener(this);

try
{
    recorder.prepare();
    recorder.start();
} catch ...

InformationsquelleAutor jacobianism | 2013-07-23

Schreibe einen Kommentar