以下是一些有助于解释情况的背景信息。我的任务是构建一个白板应用程序。此应用程序需要设备的摄像头才能在实时流中显示白板。该装置可以与白板成一定角度放置,但仍然显示“平坦”图像。非常类似于以一定角度拍摄照片然后将图像倾斜为平坦,就像您将图像直接拍摄在前面一样。
我的问题是,是否可以倾斜相机预览的SurfaceView,以便我可以录制倾斜图像的视频,而不是图像本身?
答案 0 :(得分:0)
如果将其发送到TextureView而不是SurfaceView,则可以应用变换矩阵。你可以在Grafika PlayMovieActivity中看到一个简单的例子,其中adjustAspectRatio()
应用矩阵来设置视频的宽高比。
如果您不熟悉矩阵变换,请查看the answers here。
这假设您可以控制播放器,并且可以向它发送一个"歪斜这么多"价值与视频一起。要修改实际视频,您需要将转换应用于视频帧,因为他们正在前往编码器的路上。一种方法是将预览发送到SurfaceTexture,使用适当的变换在GLES四边形上绘制,并使用MediaCodec编码器捕获GLES渲染。
它更容易直接拍摄并在播放时歪斜。