uni-app 【报Bug】uni.createInnerAudioContext 无法播放 /data/user/0/ 下的音频文件

uni-app 【报Bug】uni.createInnerAudioContext 无法播放 /data/user/0/ 下的音频文件

示例代码:

// playSrc.value = e.data;
const innerAudioContext = uni.createInnerAudioContext();
innerAudioContext.autoplay = true;
innerAudioContext.src = e.data;
innerAudioContext.onPlay(() => {
console.log('开始播放');
});
innerAudioContext.onError((res) => {
console.log(res)
});

操作步骤:

// /data/user/0/com.hxl.kuaiyi/files/play.wav 文件 此为通过aar生成
// playSrc.value = e.data;
const innerAudioContext = uni.createInnerAudioContext();
innerAudioContext.autoplay = true;
innerAudioContext.src = e.data;
innerAudioContext.onPlay(() => {
console.log('开始播放');
});
innerAudioContext.onError((res) => {
console.log(res)
});

预期结果:

播放正常

实际结果:

{
"errMsg": "MediaError",
"errCode": -5
}

使用audio组件 可以正常播放

bug描述:

uni.createInnerAudioContext 无法播放 /data/user/0/ 下的音频文件


更多关于uni-app 【报Bug】uni.createInnerAudioContext 无法播放 /data/user/0/ 下的音频文件的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

安卓原生播放的 MediaPlayer mediaPlayer = new MediaPlayer(); try { mediaPlayer.setDataSource(path); mediaPlayer.prepare(); mediaPlayer.start(); // 如果需要,可以添加一个监听器来处理播放完成后的逻辑 mediaPlayer.setOnCompletionListener(mp -> { mp.release(); // 释放MediaPlayer资源 // 可以在这里添加其他逻辑,比如删除临时文件等 }); } catch (Exception e) { e.printStackTrace(); if (mediaPlayer != null) { mediaPlayer.release(); // 确保即使在异常情况下也释放MediaPlayer资源 } }

更多关于uni-app 【报Bug】uni.createInnerAudioContext 无法播放 /data/user/0/ 下的音频文件的实战教程也可以访问 https://www.itying.com/category-93-b0.html


在 uni-app 中使用 uni.createInnerAudioContext 播放音频文件时,如果文件路径为 /data/user/0/ 下的文件,可能会遇到无法播放的问题。这个问题通常与文件路径的访问权限或路径格式有关。

可能的原因及解决方案:

  1. 文件路径问题

    • /data/user/0/ 是 Android 应用的私有目录,通常应用只能访问自己的私有目录。确保你正在访问的是当前应用的私有目录。
    • 如果文件路径不正确,uni.createInnerAudioContext 将无法找到文件并播放。

    解决方案

    • 确保文件路径是正确的,并且应用有权限访问该路径。
    • 如果文件存储在应用的私有目录中,可以使用相对路径或通过 plus.io API 获取正确的文件路径。
  2. 文件权限问题

    • Android 应用默认只能访问自己的私有目录,如果文件存储在其他应用的目录中,可能会导致权限问题。

    解决方案

    • 确保文件存储在应用的私有目录中,或者使用 FileProvider 共享文件。
  3. 路径格式问题

    • uni.createInnerAudioContext 需要的是文件的可访问路径,而不是绝对路径。如果路径格式不正确,可能会导致无法播放。

    解决方案

    • 使用 plus.io.convertLocalFileSystemURL 将文件路径转换为可访问的 URL 格式。

示例代码:

// 假设文件路径为 /data/user/0/your.package.name/files/audio.mp3
const filePath = '/data/user/0/your.package.name/files/audio.mp3';

// 将路径转换为可访问的 URL
const audioPath = plus.io.convertLocalFileSystemURL(filePath);

// 创建 InnerAudioContext
const innerAudioContext = uni.createInnerAudioContext();
innerAudioContext.src = audioPath;

// 播放音频
innerAudioContext.play();

// 监听播放事件
innerAudioContext.onPlay(() => {
  console.log('开始播放');
});

innerAudioContext.onError((err) => {
  console.error('播放错误:', err);
});
回到顶部