音视频编解码组件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
按赞同
/
按时间
bysc111

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
相关问题
鸿蒙音视频通信系统如何实现
3056浏览 • 1回复 待解决
音视频播放是否需要创建长时任务
326浏览 • 1回复 待解决
编解码播放大数据量流问题
1401浏览 • 0回复 待解决
fileio.write写buffer数据有问题
2559浏览 • 1回复 待解决
图片编解码支持格式有哪些
268浏览 • 1回复 待解决
用ETS实现语音视频通话,应该怎么做?
1347浏览 • 1回复 待解决
验证pixelmap数据buffer转base64是否正常
182浏览 • 1回复 待解决
av_player新增支持本地音视频文件播放
131浏览 • 1回复 待解决
p40 phone类型匹配
3167浏览 • 1回复 待解决
图片编解码能力支持哪些格式
301浏览 • 1回复 待解决
如何实现字符串编解码
374浏览 • 1回复 待解决
ArkTS如何实现字符串编解码
611浏览 • 1回复 待解决