2017-01-12 12 views
0

私が取り組むアプリでは、ビデオを録画するためのビデオ録画プレビューがある場所があります。私のプレビューを開始するには、次のコードを持っている:私は私のビデオの録画を開始した後、プレビューは、それ自体のサイズを変更し、いくつかの理由Android - ビデオの録画時にプレビューのサイズが変更される

if (mMediaRecorder == null) mMediaRecorder = new MediaRecorder(); 

mMediaRecorder.setCamera(mCamera); 

mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT); 
mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); 
mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264); 
mMediaRecorder.setVideoEncodingBitRate(3072 * 1000); 
mMediaRecorder.setVideoFrameRate(60); 
mMediaRecorder.setVideoSize(1280, 720); 
mMediaRecorder.setOutputFile(videoFile.getAbsolutePath()); 

:私のMediaRecorderについて

mCamera = Camera.open(); 
mCamera.setPreviewDisplay(mHolder); 

Camera.Parameters parameters = mCamera.getParameters(); 
List<Camera.Size> previewSizes = parameters.getSupportedPreviewSizes(); 

Camera.Size previewSize = previewSizes.get(0); 

parameters.setPreviewSize(previewSize.width, previewSize.height); 
parameters.setVideoStabilization(false); 

mCamera.setParameters(parameters); 
mCamera.startPreview(); 
mCamera.unlock(); 

を、私は次のセットアップコードを持っています「ズームイン」しているように見える。私はユーザーが同じ質問を投稿したソリューションのいくつかを試しましたが、それらのソリューションは機能しませんでした。どうやら、正しく動作させるには、プレビューサイズを16:9のアスペクト比に設定する必要があります。誰もが解決策を知っていますか?

答えて

0

1280x720のビデオ録画がすべてのデバイスでサポートされるという保証はありません。 supported video recording sizesを繰り返して、好きなものを選んでください。特定のデバイスに推奨されるビデオ録画サイズには、getPreferredPreviewSizeForVideo()を使用できます。

getSupportedPreviewSizes()で返された最初のプレビューサイズを選択する代わりに、最も適したプレビューサイズを選択する必要があります。すべての実際的なケースでは、同じサイズがgetSupportedVideoSizes()およびgetSupportedPreviewSizes()のリストにあることが期待できます。

16:9のアスペクト比ではなく、任意のサイズを選択できます。まれなケースで、サポートされている動画とプレビューのサイズが一致しない場合は、同じアスペクト(幅/高さ)のサイズを選択する必要があります。例えば。 1280x720および640x360

ビデオプレビュービュー(通常はSurfaceView)は、選択したプレビューサイズと同じアスペクト比(同じサイズではありません)である必要があります。 1280x780のプレビューと1180x720の表示サイズを選択できます。そうしないと、画面上のプレビューが歪んでしまいます(太すぎたり狭すぎたりします)。この本による

、一部のデバイスでは、getSupportedVideoSizes()はnullをを返す場合があります。次に、getSupportedPreviewSizes()によって返されたリストを使用する必要があります。

関連する問題