【问题标题】:Android Camera2 video aspect ratioAndroid Camera2 视频长宽比
【发布时间】:2018-05-22 14:25:59
【问题描述】:
我认为以下内容未得到明确回答:
使用 Camera2 API,是否可以在不使用 ffmpeg 等后处理的情况下(例如 1:1)在本机设备分辨率之外进行录制?
【问题讨论】:
标签:
android
aspect-ratio
android-camera2
【解决方案1】:
您没有太多详细信息来准确解释您要使用的分辨率,但听起来您想要以与设备的相机。
您始终可以将图像数据发送到 GPU,在那里进行任何您想要的裁剪/缩放,然后将其发送到视频编码器。
一般来说,这会涉及到:
- 设置 EGL 上下文
- 在 EGL 中创建渲染目标,并为其获取 Android Surface
- 创建 SurfaceTexture 以将纹理数据发送到 EGL
- 将 EGL 输入 SurfaceTexture 连接到相机(首先从它创建一个 Surface,如果使用 camera2)
- 将 EGL 输出 Surface 连接到 MediaRecorder
- 编写着色器代码以处理来自相机的传入帧,根据需要裁剪/缩放/修改,然后将它们渲染到输出表面
- 设置相机和媒体记录器,然后同时启动它们
- 在 SurfaceTexture onFrameAvailable 中,触发您的渲染代码。
这是一个相当多的脚手架,但完成后应该相当有效。