我想要实现一个基本的音调播放器,从一个文件夹加载一个文件,并按下ReactJS中的一个按钮来播放它。
import React, { Component, PropTypes } from 'react';
import ReactDOM from 'react-dom';
import Tone from 'tone';
import MuiThemeProvider from 'material-ui/styles/MuiThemeProvider';
import Slider from 'material-ui/Slider';
import RaisedButton from 'material-ui/RaisedButton';
let sound = new Tone.Player("kick.wav").toMaster();
export default class App extends Component {
render() {
return(
<MuiThemeProvider>
<div>
<Slider min={0} max={100} step={10} className = "Slider1Test1" style={{height: 400}} axis="y"/>
<RaisedButton label="A" className = "RaisedB1Test1" style={{width: 10}}/>
<Slider min={0} max={100} step={10} className = "Slider2Test1" style={{height: 400}} axis="y"/>
<RaisedButton label="B" className = "RaisedB2Test1" style={{width: 10}}/>
</div>
</MuiThemeProvider>
);
}
}但这给出了一个错误:
DOMException:无法解码音频数据modules.js?hash=625032f…::48100隐(承诺) Tone.Buffer:无法解码音频数据: kick.wav
我试过"./kick.wav“、"./kick.ogg”、"./kick.mp3“。我试过给出完整的路径。我试着只使用网络音频,通过给XMLHTTPRequest -这是相同的错误一直。
我是新的反应-请告诉我,如果有正确的方法来做这件事。我需要使用componentDidMount吗?)我也试过用它。请让我知道正确的方法)。谢谢
发布于 2017-06-13 17:37:50
看起来您使用的是流星,这在某种程度上阻止了您向服务器请求加载您的文件。最简单的解决方案是在根目录中创建一个public文件夹,并将示例放在其中。然后将./kick.wav传递给您的Tone.Player构造函数。构造函数在外壳下发出GET请求,并将自动找到您的文件。除了这些更改之外,在缓冲区完成加载之后,我还必须添加此代码来播放示例:
const x = new Tone.Player('./kick.wav').toMaster()
Tone.Buffer.on('load', () => {
x.start();
})https://stackoverflow.com/questions/44507623
复制相似问题