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); 
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
分享
微博
QQ
微信
回复
2024-11-11 15:08:42
相关问题
HarmonyOS 音频编解码问题咨询
488浏览 • 1回复 待解决
HarmonyOS 音视频操作API
530浏览 • 1回复 待解决
HarmonyOS 视频编解码问题
535浏览 • 1回复 待解决
HarmonyOS 音视频弹窗demo
573浏览 • 1回复 待解决
HarmonyOS 音视频相关问题
527浏览 • 1回复 待解决
HarmonyOS 视频编解码出现花屏
649浏览 • 1回复 待解决
HarmonyOS AudioVivid音频解码渲染
355浏览 • 1回复 待解决
音视频都支持哪些编码格式
1316浏览 • 1回复 待解决
HarmonyOS Next如何实现FFMPEG音视频播放
464浏览 • 1回复 待解决
HarmonyOS 音视频长时任务使用
531浏览 • 1回复 待解决
鸿蒙音视频通信系统如何实现
5442浏览 • 1回复 待解决
HarmonyOS 音视频画中画功能demo
359浏览 • 1回复 待解决
HarmonyOS 音视频处理相关解决方案
1046浏览 • 1回复 待解决
HarmonyOS 音频文件base64编解码问题
480浏览 • 1回复 待解决
HarmonyOS 网路音视频通话后台保活
358浏览 • 1回复 待解决
HarmonyOS 有本地音视频播放的demo吗?
459浏览 • 1回复 待解决