我在我的应用程序中使用的摄像机视图与本机摄像机不同,例如,本机摄像机视图如下所示,
但视图在我的应用程序中并不相同,我使用surfaceview为我的自定义相机与媒体记录器捕获视频,在布局中我使用框架布局,
<com.cdr.Vio.CamcorderView android:id="@+id/camcorder_preview" android:clickable="true" android:focusable="true" android:layout_height="wrap_content" android:layout_width="wrap_content"></com.cdr.Vio.CamcorderView>
....
<Button android:id="@+id/widget34" android:background="@drawable/camrecord"
android:layout_height="60dp" android:layout_width="60dp"
android:layout_gravity="right" android:layout_marginRight="20dp">
</Button>
<Button android:id="@+id/widget33" android:background="@drawable/stoprecord"
android:layout_gravity="right" android:layout_height="60dp"
android:layout_width="60dp" android:layout_marginTop="-60dp"
android:layout_marginRight="20dp">
</Button>
我尝试了具有预定义屏幕高度和屏幕宽度的视图,但它再次看起来有些拉伸,这是我拉伸的相机视图,
如果有任何人知道这个问题会帮助我,我该怎么解决呢。
感谢。
答案 0 :(得分:1)
最后我通过设置videEncodingBitRate,AudioEncodingBitRate,AudioSamplingRate等找到了在android 2.1中录制高质量视频的代码。使用此方法,您可以为视频设置任何想要提供高质量视频的属性。
有关设置高质量和低质量参数的信息,请参阅本页
我使用基础版本android 2.1生成高质量视频的代码如下所示。
recorder = new MediaRecorder();
Method[] methods = recorder.getClass().getMethods();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);
recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
recorder.setVideoFrameRate(24);
recorder.setVideoSize(720, 480);
for (Method method : methods) {
try {
if (method.getName().equals("setAudioChannels")) {
method.invoke(recorder, String.format("audio-param-number-of-channels=%d", 1));
} else if (method.getName().equals("setAudioEncodingBitRate")) {
method.invoke(recorder, 12200);
} else if (method.getName().equals("setVideoEncodingBitRate")) {
method.invoke(recorder, 3000000);
} else if (method.getName().equals("setAudioSamplingRate")) {
method.invoke(recorder, 8000);
} else if (method.getName().equals("setVideoFrameRate")) {
method.invoke(recorder, 24);
}
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
答案 1 :(得分:0)
看起来纵横比不再是折腾。 尝试更改相机的预分辨率。
在摄像机参数上调用setPreviewSize
并在摄像机设备上设置摄像机参数。重新开始预览。
编辑:添加了代码
mCameraDevPara.setPreviewSize(PREVIEW_WIDTH, PREVIEW_HEIGHT);
mCameraDev.setParameters(mCameraDevPara);
mMediaRecoder.setCamera(mCameraDev);
PREVIEW_WIDTH
和PREVIEW_HEIGHT
应该是您要设置的预览分辨率的宽度和高度。