HarmonyOS 鸿蒙Next avPlayer设置url 后 AVPlayer 的状态还是0

发布于 1周前 作者 gougou168 最后一次编辑是 5天前 来自 鸿蒙OS

HarmonyOS 鸿蒙Next avPlayer设置url 后 AVPlayer 的状态还是0

private async loadMusic(isAudioPlay: boolean) {
  this.isAudioPlay = isAudioPlay;
  let pathUrl = this.songBean[this.number].url ?? Constants.DEFAULT_EMPTY_STRING;
  let fdPath = 'fd://';
  let file: fs.File | null = null;
  try {
    logger.info(`loadMusic pathUrl==${pathUrl}`);
    file = await fs.open(pathUrl);
    if (file) {
      fdPath = fdPath + Constants.DEFAULT_EMPTY_STRING + file.fd;
    }
  } catch (error) {
    this.playInfoErrorCall();
    this.setListPlayErrorInfo(this.songBean[this.number].url);
    this.isPlayError = true;
    logger.error(`open url failed: ${error.code}, ${error.message}, open url: ${pathUrl}`);
    return;
  } finally {
    if (file) {
      fs.close(file);
    }
  }
  if (!this.avPlayer) {
    logger.info('avPlayer is null');
    return;
  }
  try {
    this.avPlayer.url = fdPath;
    logger.info(`avPlayer url succes`);
  } catch (error) {
    logger.error(`avPlayer url failed: ${error.code}, ${error.message}`);
    this.avPlayer.url = fdPath;
  }
  logger.info(`isAudioPlay===${isAudioPlay}`);
  if (isAudioPlay) {
    await this.avPlayer.prepare();
    logger.info(`avPlayer prepare succes`);
  }
  this.setAVMetadata();
  this.startContinuousTask();
  logger.info(`duration:${this.avPlayer?.duration}`);
}
1 回复

针对HarmonyOS鸿蒙Next AVPlayer设置url后状态仍为0的问题,这通常表明AVPlayer未能正确进入预期状态。以下是一些可能的解决步骤:

  1. 确保资源有效性:在设置AVPlayer的url属性时,请确认提供的媒体资源地址是有效且可访问的。如果地址有误或资源不可用,AVPlayer可能无法正确进入prepared状态。
  2. 监听状态变化:通过监听AVPlayer的stateChange事件,可以实时了解播放器的状态变化。检查是否有错误状态或状态变化异常,从而诊断问题所在。
  3. 正确调用方法:在设置url后,确保调用了prepare()方法使AVPlayer进入prepared状态。同时,如果在后续过程中需要重置资源,应正确调用reset()方法使AVPlayer重新进入idle状态。
  4. 检查权限设置:如果访问的是在线媒体资源,请确保应用已声明ohos.permission.INTERNET权限。

如果以上步骤均无法解决问题,可能是AVPlayer内部逻辑或系统层面的问题。此时,建议联系HarmonyOS官方客服以获取更专业的支持。官网地址是:https://www.itying.com/category-93-b0.html

回到顶部