ken*_*ken 5 video-recording android-camera front-camera
我使用MediaRecorder录制视频。使用后置摄像头时,它可以正常工作,但是使用前置摄像头时,捕获的视频被翻转/反转。这意味着右侧的项目将出现在左侧。摄像头预览可以正常工作,只是最终捕获的视频翻转了。
这是相机预览的样子
但是最终的视频看起来像这样(所有项目都出现在左侧,出现在右侧)
到目前为止我尝试过的是:
我尝试使用“ matrix准备记录器”,但似乎并没有改变。
private boolean prepareRecorder(int cameraId){
//# Create a new instance of MediaRecorder
mRecorder = new MediaRecorder();
setCameraDisplayOrientation(this,cameraId,mCamera);
int angle = getVideoOrientationAngle(this,cameraId);
mRecorder.setOrientationHint(angle);
if(cameraId == Camera.CameraInfo.CAMERA_FACING_FRONT){
Matrix matrix = new Matrix();
matrix.preScale(1.0f,-1.0f);
}
//all other code to prepare recorder here
}
Run Code Online (Sandbox Code Playgroud)
我已经在下面阅读了所有此问题,但似乎所有这些SurfaceView都未能解决我的问题。有关信息,我使用的是相机预览,所以这里的问题无济于事。
所以我的问题是:
1)如何通过前置摄像头捕获视频,而不是反向视频(与摄像头预览完全相同)?
2)如何在SurfaceView不使用相机预览的情况下实现此目的TextureView?(因为我上面提到的所有问题,告诉有关使用TextureView)
欢迎所有可能的解决方案..Tq
编辑
我制作了2个简短的视频片段以阐明问题,请下载并查看
因此,如果系统相机应用程序生成与您的应用程序类似的视频,则您没有做错什么。现在是时候了解前置摄像头视频录制会发生什么情况了。
前置摄像头在拍摄静态图片或视频方面与后置摄像头没有什么不同。手机在屏幕上显示相机预览的方式有所不同。为了让用户看起来更自然,Android(和所有其他系统)镜像预览,以便您可以像在镜子中一样看到自己。
重要的是要了解这仅适用于向您呈现预览的方式。如果您拿起任何视频会议应用程序,连接两只手中握着的两个设备,然后看看自己,您会惊讶地发现自己的两个实例被翻转了。
这不是错误,这是向对方呈现视频的自然方式。
看草图:
你看到的场景是这样的:
这就是你的同伴看到同一场景的方式
通常,视频录制是从您的同伴的视角进行的,如第二张图片所示。这是视频会议等的自然设置。
但 Snapchat 和其他一些社交应用程序选择存储前置视频剪辑,就好像您从镜子中录制它一样(就好像在第一张图片中录音机在您手中一样)。有些人喜欢这个功能,有些人讨厌它(请参阅https://forums.androidcentral.com/general-help-how/664539-front-camera-pics-mirrored-reversed-only-snapchat.html和https://www .reddit.com/r/nexus6/comments/3846ay/has_anyone_found_a_fix_for_snapchat_flipping)
您不能为此使用 MediaRecorder。您可以使用 MediaCodec 的较低级别 API 来记录处理后的帧。您需要“手动”翻转每一帧,这可能会严重影响性能,因为通常 MediaRecorder 会以非常有效的方式将相机“连接”到硬件编码器,甚至不需要将像素复制到用户内存。这个答案展示了如何操纵相机渲染为纹理的方式。
| 归档时间: |
|
| 查看次数: |
8564 次 |
| 最近记录: |