2013-05-17 7 views
8

Ich benutze Media Recorder, um Videos in einer Android App aufzuzeichnen.MediaRecorder setVideoSize zeigt unterschiedliches Verhalten in verschiedenen Geräten

mMediaRecorder.setCamera(mServiceCamera); 
mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT); 
mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT); 
mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT); 

//mMediaRecorder.setVideoSize(mPreviewSize.width, mPreviewSize.height); 

mMediaRecorder.setVideoFrameRate(30); 
mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.DEFAULT); 
mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT); 
String file_name = Environment.getExternalStorageDirectory().getPath() +"/myVideo.mp4"; 
mMediaRecorder.setOutputFile(file_name);  
mMediaRecorder.setPreviewDisplay(mSurfaceHolder.getSurface()); 
mMediaRecorder.prepare(); 
mMediaRecorder.start(); 

Das Problem in der Leitung ist

mMediaRecorder.setVideoSize(mPreviewSize.width, mPreviewSize.height); 

In HTC und Xperia arbeitet setVideoSize fein (funktioniert nur, wenn ich diese Zeile nicht kommentieren). Aber in Nexus und Note, setVideoSize wird nicht funktionieren (funktioniert nur, wenn ich diese Zeile kommentieren).

Was muss ich tun, damit die App in all diesen Geräten korrekt ausgeführt wird?

+0

können Sie mir sagen.Wie erhalten Sie Vorschaugrößen? – Amrendra

Antwort

0

Videogrößen in einem Gerät entsprechen Vorschaugrößen. Sie müssen zuerst prüfen, ob die von Ihnen eingestellte Videogröße verfügbar ist oder nicht. Videogrößen in verschiedenen Geräten können unterschiedlich sein. Überprüfen Sie zunächst die verfügbaren Vorschaugrößen mit getSupportedPreviewSizes() und stellen Sie dann die Videogröße ein. Dies wird eine Liste zurückgeben. Sie müssen nur eine von ihnen auswählen.

4

Sie müssen verstehen, dass die Vorschau und das tatsächlich aufgenommene Video zwei verschiedene Dinge sind, ebenso Vorschaugrößen und Videogrößen sind zwei verschiedene Parameter. Was Sie im Sucher sehen, ist im Wesentlichen die Vorschau, aber es wird nicht wirklich aufgezeichnet.

  1. Beim Starten einer Kamera legen Sie die Vorschaugröße für die Kamera fest. Sie müssen jedoch nach den unterstützten Vorschaugrößen fragen und sollten eine davon festlegen.

    Kamera Kamera = camera.open(); Liste psizes = camera.getParameters() .getSupportedPreviewSizes();

  2. Sobald Sie die Vorschau eingerichtet haben, können Sie die Aufnahme mit einem MediaRecorder starten, und die Videogröße kann auf den Medienrekorder eingestellt werden, und es wird die tatsächliche Größe des aufgenommenen Videos festgelegt. Auch hier sollten Sie eine der unterstützten Videogröße einstellen.

    Listengrößen = camera.getParameters() .getSupportedVideoSizes();

und dann können Sie eine davon an den Medienrecorder

mediaRecorder.setVideoSize(videoWidth, videoHeight); 

So setzen, immer daran denken, für die unterstützten Größen zu überprüfen, sonst sind Sie verpflichtet, eine App Absturz zu bekommen.

Verwandte Themen