1.0.2 • Published 4 years ago

@uni/audio v1.0.2

Weekly downloads
-
License
BSD-3-Clause
Repository
github
Last release
4 years ago

createAudioContext

npm

API to create and return audio (corresponding to background audio) AudioContext object in the applet. Also known as "foreground audio", the playback stops when the user leaves the page.

Support

Install

$ npm install @uni/audio --save

or

$ npm install @uni/apis --save

Usage

//  基于rax
import { createElement, useEffect, useState } from 'rax';
import View from 'rax-view';
import Text from 'rax-text';
import { createAudioContext } from '@uni/audio';

export default () => {
  const [audioContext, setAudioContext] = useState();
  useEffect(()=> {
    const audioContext = createAudioContext();
  
    audioContext.src = 'https://static.yximgs.com/udata/pkg/miniprogram-outer/test.m4a';
    // 由于某些游览器的一些限制策略 Autoplay policy,h5可能并不会自动播放
    audioContext.autoplay = true; 
    
    audioContext.onPlay(res => {
      console.log('onPlay', res);
    });
  
    audioContext.onPause(res => {
      console.log('onPause', res);
    });
  
    audioContext.onStop(res => {
      console.log('onStop', res);
    });
  
    audioContext.onEnded(res => {
      console.log('onEnded', res);
    });
  
    audioContext.onError(err => {
      console.log('onError', err);
    });
  
    audioContext.onWaiting(res => {
      console.log('onWaiting', res);
    });
    setAudioContext(audioContext);
  }, [])

  const play = () => {
    audioContext.play();
  };
  const pause = () => {
    audioContext.pause();
  };
  const stop = () => {
    audioContext.stop();
  };
  const seek = () => {
    audioContext.seek(30);
  };
  const destroy = () => {
    audioContext.destroy();
  };
  return (
    <View>
      <View onClick={play}>
        <Text>play</Text>
      </View>
      <View onClick={pause}>
        <Text>pause</Text>
      </View>
      <View onClick={stop}>
        <Text>stop</Text>
      </View>
      <View onClick={seek}>
        <Text>seek</Text>
      </View>
      <View onClick={destroy}>
        <Text>destroy</Text>
      </View>
    </View>
  )
}

You can also import from the big package:

import { audio } from '@uni/apis';

const audioContext = audio.createAudioContext();

Method

createAudioContext()

Parameter

PropertyTypeDescriptionrequiredDefaultSupported
useWebAudioImplementboolean是否使用 WebAudio 作为底层音频驱动,默认关闭。对于短音频、播放频繁的音频建议开启此选项,开启后将获得更优的性能表现,对于长音频建议关闭此选项。false

Return

return value audioContext。

audioContext Property List

属性类型是否只读说明默认值
srcstring音频码,用于直接播放。支持音频格式:AAC,MP3。-
autoplayboolean是否自动开始播放。false
loopboolean是否循环播放。false
durationnumber当前音频的长度,单位为秒(s),只有在当前有合法的 src 时返回。-
currentTimenumber当前音频的播放位置,单位为秒(s),只有在当前有合法的 src 时返回,时间不取整。-
pausedboolean当前是否为暂停或停止状态,true 表示暂停或停止,false 表示正在播放。-
volumenumber音量。范围 0~1。-

audioContext Non-universal Parameter List (due to the destruction of the multi-code capability, it is not recommended to use)

属性类型是否只读说明默认值支持
startTimenumber开始播放的位置,单位为秒(s)。0
obeyMuteSwitchboolean是否遵循系统静音开关,当此参数为 false 时,即使用户打开了静音开关,也能继续发出声音。true
bufferednumber音频缓冲的时间点,仅保证当前播放时间点到此时间点内容已缓冲。-
playbackRatenumber播放速度。范围 0.5-2.0。1

audioContext Method List

方法参数说明
play播放。
pause暂停。暂停后的音频再播放会从暂停处开始播放。
stop停止。停止后的音频再播放会从头开始播放。
seekposition跳转到指定位置,单位为秒(s)。精确到小数点后 3 位,即支持 毫秒(ms) 级别精确度。
destroy销毁当前实例。
onCanplayFunction callback监听前景音频进入可以播放状态,但不保证后面可以流畅播放。
onPlayFunction callback监听前景音频播放事件。
onPauseFunction callback监听前景音频暂停事件。
onStopFunction callback监听前景音频停止事件。
onEndedFunction callback监听前景音频自然播放结束事件。
onErrorFunction callback监听前景音频播放错误事件。
onWaitingFunction callback监听前景音频加载中事件,当音频因为数据不足,需要停下来加载时会触发。
onSeekingFunction callback监听前景音频开始播放进度跳转的操作事件。
onSeekedFunction callback监听前景音频完成播放进度跳转的操作事件。
offCanplayFunction callback取消监听 onCanplay 事件。
offPlayFunction callback取消监听 onPlay 事件。
offPauseFunction callback取消监听 onPause 事件。
offStopFunction callback取消监听 onStop 事件。
offEndedFunction callback取消监听 onEnded 事件。
offTimeUpdateFunction callback取消监听 onTimeUpdate 事件。
offErrorFunction callback取消监听 onError 事件。
offWaitingFunction callback取消监听 onWaiting 事件。
offSeekingFunction callback取消监听 onSeeking 事件。
offSeekedFunction callback取消监听 onSeeked 事件。

audioContext Non-universal Method List (due to the destruction of the multi-code capability, it is not recommended to use)

方法参数说明支持
onTimeUpdateFunction callback监听前景音频播放进度更新事件。

src 支持格式

说明:src各个容器具有差异,推荐使用音频格式:AAC,MP3

字节小程序:src仅支持临时路径(如通过下载到本地的音频地址)、网络地址(该地址的域名必须在小程序开发者平台 request 域名白名单中配置)

阿里小程序:音频码,用于直接播放。支持音频格式:AAC,MP3,只支持来源于优酷的音频码。

微信小程序:2.2.3 开始支持云文件ID。

h5: 支持 chooseMedia 选择的临时音频文件、网络地址(有游览器跨域限制),不同的音频格式支持取决于浏览器。

格式IOSAndroid
m4a
wav
mp3
aac
flac
ogg
ape
amr
wma
mp4
aiff
caf

FQA

  • 同时播放时是不是只要create 2个AudioContext就可以?

    是的

  • 多种特效音需要穿插播放时,是不是create 1个Audio,并且在播放时切换音乐就可以?

    是的,参考demo

  audioContext.src = 'https://static.yximgs.com/udata/pkg/miniprogram-outer/test.m4a';
  
  const change = () => {
    audioContext.src = 'https://b.bdstatic.com/miniapp/images/yanyuan.mp3';
    audioContext.onCanplay(res => {
      console.log('onCanplay');
      audioContext.play();
      audioContext.offCanplay();
    })
  };
  • 生命周期的钩子触发顺序是一致的吗?

    onEnd事件:stop 时 h5 也会触发 onEnd 事件,小程序端不会。

1.0.2

4 years ago

1.0.2-beta

4 years ago

1.0.1

4 years ago

1.0.1-beta

4 years ago

1.0.0

4 years ago

1.0.0-beta3

4 years ago

1.0.0-beta2

4 years ago

1.0.0-beta1

4 years ago

1.0.0-beta

4 years ago