在使用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来降低帧率,两者都没有影响(不确定两者之间的区别)。我试图通过注释掉setAudioSource行来禁用音频源(我不需要音频),但是抛出了一个错误消息"E/MediaRecorder(7934):尝试设置音频编码器而不先设置音频源“。文档显示“如果不调用此方法,输出文件将不包含音轨”。
我应该设置哪些参数才能使文件大小尽可能小?
发布于 2013-03-11 04:48:52
我想通了。代码行..。
mediaRecorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_LOW));设置输出格式和视频编码器以及音频。这使您可以将文件大小大大减小。
https://stackoverflow.com/questions/15317520
复制相似问题