Próbuję utworzyć rejestrator wideo w systemie Android i przygotowałem mój kod, który powinien działać - ale ciągle pojawia się komunikat o błędzie start failed: -19
.Android MediaRecorder - "Uruchomienie nie powiodło się: -19"
Oto mój kod:
public boolean startRecording() {
try {
camera.unlock();
mediaRecorder = new MediaRecorder();
mediaRecorder.setOnErrorListener(new MediaRecorder.OnErrorListener() {
@Override
public void onError(MediaRecorder mr, int what, int extra) {
Log.i(TAG, "Error");
}
});
mediaRecorder.setCamera(camera);
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
Log.i(TAG, "a");
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H263);
Log.i(TAG, "b");
mediaRecorder.setMaxDuration(maxDurationInMs); // set to 20000
String uniqueOutFile = OUTPUT_FILE + System.currentTimeMillis() + ".3gp";
File outFile = new File(uniqueOutFile);
if (outFile.exists()) {
outFile.delete();
}
mediaRecorder.setOutputFile(uniqueOutFile);
mediaRecorder.setVideoFrameRate(videoFramesPerSecond); // set to 20
mediaRecorder.setVideoSize(sView.getWidth(), sView.getHeight());
Log.i(TAG, "c");
mediaRecorder.setPreviewDisplay(holder.getSurface());
mediaRecorder.setMaxFileSize(maxFileSizeInBytes); // set to 50000
mediaRecorder.prepare();
Log.i(TAG, "d");
mediaRecorder.start();
Log.i(TAG, "e");
return true;
} catch (IllegalStateException e) {
Log.i(TAG, "f");
Log.e(TAG, e.getMessage());
e.printStackTrace();
camera.lock();
return false;
} catch (IOException e) {
Log.i(TAG, "g");
Log.e(TAG, e.getMessage());
e.printStackTrace();
camera.lock();
return false;
} catch (RuntimeException e) {
Log.i(TAG, "h");
Log.e(TAG, e.getMessage());
camera.lock();
return false;
}
}
Wszystkie dzienniki debugowania (od „a” do „D”) są drukowane w dzienniku, więc wydaje się, że wszystkie kroki upto mediaRecorder.prepare()
są wykonane prawidłowo. Następnie przechwytuje numer RuntimeException
z komunikatem start failed: -19
. Jest podobny question, ale to nie rozwiązuje mojego problemu.
Czy istnieje inny powód, aby uzyskać taki błąd?
nie działa na samsung wielkich duetów – Neji
Komentując tę line out rzuci siły blisko na urządzeniach Samsung, takich jak GN2, GS. To nie jest rozwiązanie. Chociaż nie mam Androida od dawna, mam już dość Androida!Po prostu pozwalali producentom swobodnie wykonywać telefony bez standardu. – Dante
Jak określić rozmiar wideo, jeśli usuniesz ten wiersz? – TOP