目标是在表面上裁剪来自Camera2 api捕获会话的帧的预览,而不是裁剪将自己创建的视频。
例如,我的流分辨率为1920x1080
(16:9
),屏幕尺寸(仅举例来说)为2000x3000
(2:3
-> {{1 }}或6:9
,例如,选择第二个变体),因此我想将视频的原始流分辨率设为16:24
,但我的预览可以在没有{的情况下填充所有可用空间{1}}调整大小-因此应为1920x1080
(只需使用与流分辨率相同的纵横比将大小增大以填充矩形区域),然后“剪切”对应的“帧数据”到该表面的分辨率(我想是5333x2000)”到2000x3000(只需从顶部和底部移除View
)。
有可能吗?
P.S .:不好的是google sample for camera2 api会调整视图本身的大小,而这些“空白区域”对我来说是不需要的。我还没有发现任何与我的问题非常接近的东西。
P.S.S.:AFAIU this SO solution裁剪了来自相机本身的帧,但是我需要我的视频具有原始分辨率。
答案 0 :(得分:1)
如果您使用的是TextureView,则可以调整其transform matrix来放大预览(并在此过程中切掉边缘)。阅读现有的矩阵,确定宽高比并按比例放大,然后save the new matrix。
但是请注意,保存与您向用户显示的视野不同的视野可能会给您带来负面反应-请使用预览框出他们想要记录的内容,以及是否保存内容过多,录制的视频将达不到预期。当然,也许这与您的用例无关。