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 视频编解码问题
1314浏览 • 1回复 待解决
HarmonyOS视频编解码-音频渲染
1605浏览 • 1回复 待解决
HarmonyOS CBOR编解码问题
1653浏览 • 1回复 待解决
HarmonyOS编解码接口标准
1667浏览 • 1回复 待解决
HarmonyOS base64编解码
1288浏览 • 1回复 待解决
HarmonyOS 音频编解码问题咨询
1214浏览 • 1回复 待解决
图片编解码能力支持哪些格式
2985浏览 • 1回复 待解决
如何实现字符串编解码
4238浏览 • 1回复 待解决
ArkTS如何实现字符串编解码
4309浏览 • 1回复 待解决
图片编解码支持的格式有哪些
3075浏览 • 1回复 待解决
HarmonyOS 音频文件base64编解码问题
1373浏览 • 1回复 待解决
HarmonyOS视频解码问题
1901浏览 • 1回复 待解决
如何进行编解码操作,有人知道吗?
1286浏览 • 1回复 待解决
编解码播放大数据量流问题
4421浏览 • 0回复 待解决
HarmonyOS hevc格式视频解码
1747浏览 • 1回复 待解决
中文字符串的编解码,有人知道吗?
1620浏览 • 1回复 待解决
HarmonyOS 视频播放AVPlayer解码异常
1295浏览 • 1回复 待解决
HarmonyOS解码视频的能力如何
1025浏览 • 1回复 待解决