小程序怎么获取audio长度

时间:2025-01-27 03:37:15 单机游戏

在微信小程序中,获取音频文件的长度通常有以下几种方法:

使用 `wx.createInnerAudioContext` 创建 `innerAudioContext`

通过 `wx.createInnerAudioContext` 创建的 `innerAudioContext` 对象,可以通过其 `duration` 属性获取音频的总时长。在音频播放过程中,监听 `onTimeUpdate` 事件可以实时获取当前播放进度,而音频的总时长可以在 `innerAudioContext` 初始化时通过 `duration` 属性获得。

示例代码:

```javascript

const innerAudioContext = wx.createInnerAudioContext();

innerAudioContext.src = 'https://example.com/audio.mp3';

innerAudioContext.onCanplay(() => {

console.log('音频总时长:', innerAudioContext.duration);

});

innerAudioContext.play();

```

监听 `audio` 标签的 `onloadedmetadata` 事件

创建一个 `audio` 标签,并监听其 `onloadedmetadata` 事件,该事件在音频的元数据加载完成后触发,此时可以获取到音频的总时长。

示例代码:

```javascript

const audio = document.createElement('audio');

audio.src = 'https://example.com/audio.mp3';

audio.onloadedmetadata = function() {

console.log('音频总时长:', audio.duration);

};

audio.load();

audio.play();

```

使用第三方插件

可以使用一些第三方插件来获取音频时长,例如 `react-audio-player`。这些插件通常提供了更方便的接口来处理音频播放和时长获取。

示例代码(使用 `react-audio-player`):

```javascript

import ReactAudioPlayer from 'react-audio-player';

function App() {

return (

ref="audioPlayer"

src="https://example.com/audio.mp3"

onDurationChange={(duration) => {

console.log('音频总时长:', duration);

}}

/>

);

}

```

建议

推荐使用:

推荐使用 `wx.createInnerAudioContext` 创建 `innerAudioContext`,因为这是微信小程序官方推荐的方法,且易于使用和管理。

注意事项:在音频播放之前,`innerAudioContext` 的 `duration` 属性可能为 0,这是正常现象。需要在音频播放过程中通过监听 `onTimeUpdate` 事件来获取实时播放进度。

通过以上方法,可以有效地获取微信小程序中音频文件的长度。