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