Ich teste libstreaming auf neue Android Lollipop, und dieser Code, der auf früheren Release arbeitete, scheint Ausnahme zu starten.MediaRecorder Problem auf Android Lollipop
try {
mMediaRecorder = new MediaRecorder();
mMediaRecorder.setCamera(mCamera);
mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mMediaRecorder.setVideoEncoder(mVideoEncoder);
mMediaRecorder.setPreviewDisplay(mSurfaceView.getHolder().getSurface());
mMediaRecorder.setVideoSize(mRequestedQuality.resX,mRequestedQuality.resY);
mMediaRecorder.setVideoFrameRate(mRequestedQuality.framerate);
// The bandwidth actually consumed is often above what was requested
mMediaRecorder.setVideoEncodingBitRate((int)(mRequestedQuality.bitrate*0.8));
// We write the ouput of the camera in a local socket instead of a file !
// This one little trick makes streaming feasible quiet simply: data from the camera
// can then be manipulated at the other end of the socket
mMediaRecorder.setOutputFile(mSender.getFileDescriptor());
mMediaRecorder.prepare();
mMediaRecorder.start();
} catch (Exception e) {
throw new ConfNotSupportedException(e.getMessage());
}
gestartet Ausnahme ist:
MediaRecorder: Start fehlgeschlagen -38
11-18 09:50:21.028: W/System.err(15783): net.majorkernelpanic.streaming.exceptions.ConfNotSupportedException
11-18 09:50:21.028: W/System.err(15783): at net.majorkernelpanic.streaming.video.VideoStream.encodeWithMediaRecorder(VideoStream.java:442)
11-18 09:50:21.028: W/System.err(15783): at net.majorkernelpanic.streaming.MediaStream.start(MediaStream.java:250)
Ich habe versucht zu kommentieren:
mMediaRecorder.setOutputFile(mSender.getFileDescriptor());
keine Ausnahme gestartet, aber wenn ich starten Streaming eines Dialogs sag mir, dass eine Ausgabedatei benötigt wird.
Hilfe geschätzt.
Ich denke, ich bekomme einen ähnlichen Fehler. Ich versuche, in einen lokalen Socket zu schreiben, um auch Audio/Video zu streamen, bekomme aber nach dem -38 Fehler E/StagefrightRecorder: Der Ausgabedateideskriptor ist ungültig. Laut https://android.googlesource.com/platform/frameworks/av/+/master/media/libmediaplayerservice/StagefrightRecorder.cpp der Fehler Ausgaben in Zeile 752. Wenn der Dateideskriptor kleiner als 0 ist, bedeutet -1 der Standard-Sentinel-Wert Außer dass ich verifiziere, dass ich den Deskriptor als 136 setze, bevor ich die Ausgabedatei setze. – sbaar
welche Android Version verwenden Sie? – andreasperelli
Dieses Problem betrifft nur Lollipop. Derselbe Code auf demselben Nexus 5 und demselben Nexus 7 Gerät funktionierte, als sie auf Kitkat waren. Ich bin mir jetzt ziemlich sicher, dass das Problem etwas mit Sockets zu tun hat, aber ich versuche immer noch herauszufinden, was sich geändert haben könnte. – sbaar