音视频编解码组件AudioDecoder得到的buffer数据大小和AudioRenderer_OnWriteData回调buffer length不匹配

使用音视频编解码组件,发现OH_AudioDecoder得到的buffer数据大小和OH_AudioRenderer_Callbacks::OH_AudioRenderer_OnWriteData这个回调中得到的buffer length不匹配。不确定如何处理。

HarmonyOS
2024-05-07 22:49:42
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
是潘达不是胖达

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-05-08 16:37:07
相关问题
HarmonyOS 音视频编解码-音频渲染
156浏览 • 1回复 待解决
HarmonyOS 视频编解码出现花屏
95浏览 • 1回复 待解决
音视频都支持哪些编码格式
705浏览 • 1回复 待解决
鸿蒙音视频通信系统如何实现
4768浏览 • 1回复 待解决
HarmonyOS 音视频处理相关解决方案
376浏览 • 1回复 待解决
fileio.write写buffer数据有问题
4577浏览 • 1回复 待解决
音视频播放是否需要创建长时任务
1780浏览 • 1回复 待解决
HarmonyOS CBOR编解码问题
271浏览 • 1回复 待解决
编解码播放大数据量流问题
3128浏览 • 0回复 待解决
验证pixelmap数据buffer转base64是否正常
1750浏览 • 1回复 待解决
HarmonyOS Buffer功能太过简陋。
332浏览 • 1回复 待解决