HarmonyOS 音视频编解码-音频渲染

通过OH_AudioDecoder得到的buffer数据大小和OH_AudioRenderer_Callbacks::OH_AudioRenderer_OnWriteData这个回调中得到的buffer length不匹配如何处理,是否有demo可以参考。

HarmonyOS
2024-11-11 11:42:29
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
zxjiu

​buffer length不匹配是正常现象。

处理方式:可以做缓存或者用audioRenderer_->Write(destBuffer, destLength);不要用回调,回调一般是给低时延使用的,比如avplayer示例代码如下:​

auto mem=input->memory_; 
auto srcBuffer = mem->GetAddr(); 
auto destBuffer = const_cast<uint8_t *>(srcBuffer); 
auto srcLength= mem->GetSize(); 
size_t destLength= srcLength; 
while (isForcePaused_ && seekable_ ==Seekable::SEEKABLE) { 
  OHOS∷Media∷SleepInJob(5); //5ms 
  continue; 
} 
OHOS∷Media::AutoLock lock(renderMutex_); 
FALSE RETURN_V(audioRenderer != nullptr,Status∷ERROR_NULL_POINTER); 
for(;destLength>0;){ 
  ret= audioRenderer_->Write(destBuffer, destLength); 
  if(ret<0){ 
    MEDIA_LOG_E("Write data error ret is:" PUBLIC_LOG_D32,ret ); 
    break; 
  } else if (static_cast<size_t>(ret) < destLength) { 
    0HOS::Media::SleepInJob(5); //5ms 
  } 
  destBuffer += ret; 
  destLength-=ret; 
  MEDIA_LOG_DD("written data size " PUBLIC_LOG_D32,ret); 
}
分享
微博
QQ
微信
回复
2024-11-11 15:08:42
相关问题
HarmonyOS 视频编解码出现花屏
180浏览 • 1回复 待解决
音视频都支持哪些编码格式
763浏览 • 1回复 待解决
HarmonyOS 音视频处理相关解决方案
444浏览 • 1回复 待解决
鸿蒙音视频通信系统如何实现
4844浏览 • 1回复 待解决
HarmonyOS CBOR编解码问题
341浏览 • 1回复 待解决
音视频播放是否需要创建长时任务
1855浏览 • 1回复 待解决
视频解码结果通过到vulkan渲染
1688浏览 • 1回复 待解决
HarmonyOS编解码接口标准
366浏览 • 1回复 待解决
用ETS实现语音视频通话,应该怎么做?
3204浏览 • 1回复 待解决