HarmonyOS 视频编解码出现花屏

编码出问题了,输入的yuv i420 正常 , 编码输出的h264花屏 ,编码器没有任何报错,必现目前我们只有i420,纹理你们也不支持。

HarmonyOS
2024-11-13 10:57:44
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
zbw_apple

​获取跨距,然后按行拷贝。

1.获取跨距。

API 12 新增以下方式获取跨距:​

// 解码场景,收到输出 Buffer 后 
OH_AVFormat *format = OH_VideoDecoder_GetOutputDescription(decoder); 
int widthStride = 0; 
int32_t heightStride = 0; 
bool ret = OH_AVFormat_GetIntValue(format, OH_MD_KEY_VIDEO_STRIDE, widthStride); 
if (ret) { 
  // Error 
} 
bool ret = OH_AVFormat_GetIntValue(format, OH_MD_KEY_VIDEO_SLICE_HEIGHT, heightStride); 
if (ret) { 
  // Error 
} 
OH_AVFormat_Destroy(format); 
 
// 编码场景,收到输入 Buffer 后 
OH_AVFormat *format = OH_VideoEncoder_GetInputDescription(encoder); 
int widthStride = 0; 
bool ret = OH_AVFormat_GetIntValue(format, OH_MD_KEY_VIDEO_STRIDE, widthStride); 
if (ret) { 
  // Error 
} 
OH_AVFormat_Destroy(format);

​2.按行拷贝:

参考实现:​

int32_t ReadYUV420P(std::shared_ptr<VideoEncSignal> &signal, uint8_t *addr, int32_t width, int32_t height, 
int32_t stride) 
{ 
  if (width == 0) { 
    return 0; 
  } 
  int32_t pixelSize = int32_t(stride / width); 
  width *= pixelSize; 
  // Y 
  for (int32_t i = 0; i < height; ++i) { 
  signal->inFile_->read(reinterpret_cast<char *>(addr), width); 
  addr += stride; 
} 
  width >>= 1; 
  stride >>= 1; 
  // UV 
  for (int32_t i = 0; i < height; ++i) { 
  signal->inFile_->read(reinterpret_cast<char *>(addr), width); 
  addr += stride; 
} 
  return stride * height * 3 / 2; // 3: nom, 2: denom 
}
分享
微博
QQ
微信
回复
2024-11-13 16:09:22
相关问题
HarmonyOS视频编解码-音频渲染
227浏览 • 1回复 待解决
HarmonyOS CBOR编解码问题
352浏览 • 1回复 待解决
HarmonyOS编解码接口标准
371浏览 • 1回复 待解决
图片编解码能力支持哪些格式
1888浏览 • 1回复 待解决
如何实现字符串编解码
2636浏览 • 1回复 待解决
图片编解码支持的格式有哪些
1652浏览 • 1回复 待解决
HarmonyOS视频解码问题
638浏览 • 1回复 待解决
ArkTS如何实现字符串编解码
2763浏览 • 1回复 待解决
HarmonyOS hevc格式视频解码
196浏览 • 1回复 待解决
编解码播放大数据量流问题
3166浏览 • 0回复 待解决
如何进行编解码操作,有人知道吗?
326浏览 • 1回复 待解决
中文字符串的编解码,有人知道吗?
634浏览 • 1回复 待解决
视频解码结果通过到vulkan渲染
1700浏览 • 1回复 待解决
求鸿蒙视频编码解码的具体demo
6488浏览 • 1回复 待解决
HarmonyOS Native HEVC 硬解码问题
511浏览 • 1回复 待解决
HarmonyOS base64解码报错
1012浏览 • 1回复 待解决