OpenHarmony开发者论坛

标题: OpenHarmony 硬件编码问题 [打印本页]

作者: leohe    时间: 2023-12-27 17:49
标题: OpenHarmony 硬件编码问题
[md]# 背景

* OpenHarmony3.2
* dayu150

## 需求描述

使用OpenHarmony摄像头预览并将摄像头源的数据传给硬件编码器的作为源输入进行H264编码.

打开摄像头,设置输出源需要使用目标输出的surfaceid

```javascript
  // 创建VideoOutput对象
  let videoOutput: camera.VideoOutput | undefined = undefined;
  try {
    videoOutput = cameraManager.createVideoOutput(videoProfilesArray[0], videoSurfaceId);
  } catch (error) {
    let err = error as BusinessError;
    console.error(`Failed to create the videoOutput instance. error: ${JSON.stringify(err)}`);
  }
```

打开视频编码器, 可以获得nativewindows指针.

```cpp
   // 配置编码器
        ret = OH_VideoEncoder_Configure(videoEnc, format);
        if (ret != AV_ERR_OK) {
            // 异常处理
            return OH_ENC_ERR_CONFIG_ERR;
        }
        // 获取需要输入的Surface,以进行编码
        OHNativeWindow *nativeWindow;
        ret = OH_VideoEncoder_GetSurface(videoEnc, &nativeWindow);
        if (ret != AV_ERR_OK) {
            // 异常处理
            return OH_ENC_ERR_GET_SURFACE_ERR;
        }
        ret = OH_VideoEncoder_Prepare(videoEnc);
        if (ret != AV_ERR_OK) {
            // 异常处理
            return OH_ENC_ERR_PREPARE_ERR;
        }
```

# 问题

1. 如何将编码器获取到的OHNativeWindow 提取到surfaceid提供给Camera关联数据源?
2. APP已经申请 'ohos.permission.CAMERA','ohos.permission.WRITE\_MEDIA','ohos.permission.READ\_MEDIA','ohos.permission.MEDIA\_LOCATION' 四个权限. 调用OH\_VideoEncoder\_Prepare, 一直返回 AV\_ERR\_OPERATE\_NOT\_PERMIT. 应该怎么解决?
[/md]
作者: 论坛小助手    时间: 2024-1-12 10:40
问题1,可以参考下官方文档使用的方式https://gitee.com/openharmony/do ... edia.md#avrecorder9
问题2,方便提供一下日志吗
作者: leohe    时间: 2024-1-12 10:56
回复 论坛小助手: 问题1: 官方的文档是arkts层的基于AVRecorder的实现用法. surfaceid直接从AVRecorder里面可以获取. 但是我拿到的是native层的nativewindows. 怎么从nativewindows 句柄获取surfaceid 都没找到接口.
我打赌你们肯定没用过这个接口.
关键一点,  AVRecorder编码设置于native层的编码一样报错2的错误码

问题2: 采集你所需日志的方法是什么?




欢迎光临 OpenHarmony开发者论坛 (https://forums.openharmony.cn/) Powered by Discuz! X3.5