HarmonyOS 鸿蒙Next 前后置摄像头切换导致录制视频上下颠倒

发布于 1周前 作者 sinazl 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 前后置摄像头切换导致录制视频上下颠倒

使用摄像头录制时,前后切换摄像头时,录制的视频出现上下颠倒问题,问题场景的操作步骤如下:
1.1 开启前置摄像头预览
1.2 开始录制
1.3 录制过程中,切换到后置摄像头,后置摄像头在ui上显示是ok的
1.4 结束录制
1.5 查看录制文件,录制的文件播放时后置摄像头是上下颠倒的 
 

2 回复

 摄像头获取预览的YUV数据并写到文件中保存,可以使用Camera_PhotoCaptureSetting中的rotation设置拍照的旋转角度,默认0度。

当前规格,预览流旋转角度固定值 90 度, 目前双路预览流角度固定前置摄像头得到的YUV数据顺时针旋转了90度,后置摄像头得到的YUV数据顺时针旋转了270度。

换算前后摄像头的数据角度 可以通过YUV数据进行旋转操作,对于前置摄像头的数据还需进行镜像翻转操作。

旋转代码参考:

private byte[] rotateYUVDegree270(byte[] data, int imageWidth, int imageHeight) {

byte[] yuv = new byte[imageWidth * imageHeight * 3 / 2];

// Rotate the Y luma

int i = 0;

for (int x = imageWidth - 1; x >= 0; x--) {

for (int y = 0; y < imageHeight; y++) {

yuv[i] = data[y * imageWidth + x];

i++;

}

}// Rotate the U and V color components

i = imageWidth * imageHeight;

for (int x = imageWidth - 1; x > 0; x = x - 2) {

for (int y = 0; y < imageHeight / 2; y++) {

yuv[i] = data[(imageWidth * imageHeight) + (y * imageWidth) + (x - 1)];

i++;

yuv[i] = data[(imageWidth * imageHeight) + (y * imageWidth) + x];

i++;

}

}

return yuv;

}

对于前置摄像头的数据还需要进行镜像翻转的操作

private byte[] rotateYUVDegree270(byte[] data, int imageWidth, int imageHeight) {

byte[] yuv = new byte[imageWidth * imageHeight * 3 / 2];

// Rotate the Y luma

int i = 0;

for (int x = imageWidth - 1; x >= 0; x--) {

for (int y = 0; y < imageHeight; y++) {

yuv[i] = data[y * imageWidth + x];

i++;

}

} // Rotate the U and V color components

i = imageWidth * imageHeight;

for (int x = imageWidth - 1; x > 0; x = x - 2) {

for (int y = 0; y < imageHeight / 2; y++) {

yuv[i] = data[(imageWidth * imageHeight) + (y * imageWidth) + (x - 1)];

i++;

yuv[i] = data[(imageWidth * imageHeight) + (y * imageWidth) + x];

i++;

}

}

return yuv;

}


更多关于HarmonyOS 鸿蒙Next 前后置摄像头切换导致录制视频上下颠倒的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


针对HarmonyOS鸿蒙Next系统中前后置摄像头切换导致录制视频上下颠倒的问题,以下是一些可能的解决方案:

  1. 系统更新:确保手机已安装最新的HarmonyOS版本,有时系统更新会修复摄像头相关的bug。

  2. 相机设置

    • 在相机应用中,检查是否有关于摄像头方向的设置,并尝试调整。
    • 尝试关闭或开启“自拍镜像”功能,看是否能解决问题。
  3. 应用兼容性

    • 如果是在特定应用中出现问题,尝试更新该应用或查找是否有相关设置可以调整。
    • 考虑使用其他视频录制应用,看问题是否依然存在。
  4. 硬件检查

    • 检查摄像头是否有物理损坏或遮挡。
    • 尝试重启设备,看是否能解决问题。
  5. 缓存清理:在设置中找到应用管理,选择相机应用,清除其缓存和数据,有时缓存问题可能导致视频录制异常。

如果上述方法均无法解决问题,建议联系官网客服获取更专业的帮助。官网地址是:https://www.itying.com/category-93-b0.html

回到顶部