我刚刚通过安卓相机教程玩过。我的问题是关于方向。如果我以纵向模式开始,录制的视频方向错误。在我的情况下,我稍微修改了预览视图的布局 - 现在它有一些错误/任意的纵横比,但录制的视频也有相同(错误)的纵横比!?
预览和实际录制为什么以及如何耦合?有没有办法解耦:录制的视频应该只记录相机提供的内容。
那么如何创建一个相机应用程序,它在录制时忽略方向(或仅使用方向将其存储在元数据中)但在预览中反映它(无事可做 - 通过旋转手机,肖像变成风景)。是否有任何具有正确旋转处理的相机应用程序示例?
我刚刚通过安卓相机教程玩过。我的问题是关于方向。如果我以纵向模式开始,录制的视频方向错误。在我的情况下,我稍微修改了预览视图的布局 - 现在它有一些错误/任意的纵横比,但录制的视频也有相同(错误)的纵横比!?
预览和实际录制为什么以及如何耦合?有没有办法解耦:录制的视频应该只记录相机提供的内容。
那么如何创建一个相机应用程序,它在录制时忽略方向(或仅使用方向将其存储在元数据中)但在预览中反映它(无事可做 - 通过旋转手机,肖像变成风景)。是否有任何具有正确旋转处理的相机应用程序示例?
如果要在 Android 上以与默认方向不同的方向录制视频,则需要使用 MediaRecorder 的setOrientationHint方法。
相机预览方向(由相机的setDisplayOrientation方法设置)和录制方向没有耦合,除此之外,它们都默认沿设备的长边定向。
如果您将应用的方向从横向更改,则需要调用 Camera 的 setDisplayOrientation 以正确调整预览,并调用 Media Recorder 的 setOrientationHint 以独立更改录制方向。
Android 的默认相机应用程序(在AOSP中可用)可以正确处理所有这些问题。
mSession = SessionBuilder.getInstance()
.setContext(getApplicationContext())
.setAudioEncoder(SessionBuilder.AUDIO_AAC)
.setAudioQuality(new AudioQuality(8000, 16000))
.setVideoEncoder(SessionBuilder.VIDEO_H264)
.setSurfaceView(mSurfaceView).setPreviewOrientation(90)
.setCallback(this).build();