ネットワーク経由でビデオをストリーミングするため、MediaRecorderを使用するときにビデオファイルのサイズを縮小しようとしています。
これが私が持っているものです
private boolean prepareMediaRecorder(){
myCamera = getCameraInstance();
mediaRecorder = new MediaRecorder();
myCamera.unlock();
mediaRecorder.setCamera(myCamera);
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
mediaRecorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_LOW));
mediaRecorder.setOutputFile("/sdcard/myvideo.mp4");
mediaRecorder.setMaxDuration(60000); // Set max duration 60 sec.
mediaRecorder.setMaxFileSize(5000000); // Set max file size 5M
mediaRecorder.setPreviewDisplay(myCameraSurfaceView.getHolder().getSurface());
try {
mediaRecorder.prepare();
} catch (IllegalStateException e) {
releaseMediaRecorder();
return false;
} catch (IOException e) {
releaseMediaRecorder();
return false;
}
return true;
}
CamcorderProfile.QUALITY_LOW行のコードは大きな違いを生むようですが、他に何も影響はありません。setVideoFrameRateとsetCaptureRateの両方を使用してフレームレートを下げようとしましたが、どちらも影響はありません(2つの違いはわかりません)。setAudioSource行をコメントアウトしてオーディオソースを無効にしようとしましたが、「E / MediaRecorder(7934):最初にオーディオソースを設定せずにオーディオエンコーダーを設定してみてください」というエラーがスローされます。ドキュメントには、「このメソッドが呼び出されない場合、出力ファイルにはオーディオトラックが含まれません」と記載されています。
ファイルサイズをできるだけ小さくするには、どのパラメータを設定する必要がありますか?