|
|
@ -59,7 +59,7 @@ class Audio extends React.PureComponent { |
|
|
|
duration: null, |
|
|
|
paused: true, |
|
|
|
muted: false, |
|
|
|
volume: 0.5, |
|
|
|
volume: 1, |
|
|
|
dragging: false, |
|
|
|
revealed: this.props.visible !== undefined ? this.props.visible : (displayMedia !== 'hide_all' && !this.props.sensitive || displayMedia === 'show_all'), |
|
|
|
}; |
|
|
@ -80,8 +80,8 @@ class Audio extends React.PureComponent { |
|
|
|
_pack() { |
|
|
|
return { |
|
|
|
src: this.props.src, |
|
|
|
volume: this.audio.volume, |
|
|
|
muted: this.audio.muted, |
|
|
|
volume: this.state.volume, |
|
|
|
muted: this.state.muted, |
|
|
|
currentTime: this.audio.currentTime, |
|
|
|
poster: this.props.poster, |
|
|
|
backgroundColor: this.props.backgroundColor, |
|
|
@ -115,7 +115,8 @@ class Audio extends React.PureComponent { |
|
|
|
this.audio = c; |
|
|
|
|
|
|
|
if (this.audio) { |
|
|
|
this.setState({ volume: this.audio.volume, muted: this.audio.muted }); |
|
|
|
this.audio.volume = 1; |
|
|
|
this.audio.muted = false; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
@ -202,7 +203,9 @@ class Audio extends React.PureComponent { |
|
|
|
const muted = !this.state.muted; |
|
|
|
|
|
|
|
this.setState({ muted }, () => { |
|
|
|
this.audio.muted = muted; |
|
|
|
if (this.gainNode) { |
|
|
|
this.gainNode.gain.value = muted ? 0 : this.state.volume; |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
@ -280,7 +283,9 @@ class Audio extends React.PureComponent { |
|
|
|
|
|
|
|
if(!isNaN(x)) { |
|
|
|
this.setState({ volume: x }, () => { |
|
|
|
this.audio.volume = x; |
|
|
|
if (this.gainNode) { |
|
|
|
this.gainNode.gain.value = this.state.muted ? 0 : x; |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
}, 15); |
|
|
@ -313,20 +318,12 @@ class Audio extends React.PureComponent { |
|
|
|
} |
|
|
|
|
|
|
|
handleLoadedData = () => { |
|
|
|
const { autoPlay, currentTime, volume, muted } = this.props; |
|
|
|
const { autoPlay, currentTime } = this.props; |
|
|
|
|
|
|
|
if (currentTime) { |
|
|
|
this.audio.currentTime = currentTime; |
|
|
|
} |
|
|
|
|
|
|
|
if (volume !== undefined) { |
|
|
|
this.audio.volume = volume; |
|
|
|
} |
|
|
|
|
|
|
|
if (muted !== undefined) { |
|
|
|
this.audio.muted = muted; |
|
|
|
} |
|
|
|
|
|
|
|
if (autoPlay) { |
|
|
|
this.togglePlay(); |
|
|
|
} |
|
|
@ -336,11 +333,16 @@ class Audio extends React.PureComponent { |
|
|
|
const AudioContext = window.AudioContext || window.webkitAudioContext; |
|
|
|
const context = new AudioContext(); |
|
|
|
const source = context.createMediaElementSource(this.audio); |
|
|
|
const gainNode = context.createGain(); |
|
|
|
|
|
|
|
gainNode.gain.value = this.state.muted ? 0 : this.state.volume; |
|
|
|
|
|
|
|
this.visualizer.setAudioContext(context, source); |
|
|
|
source.connect(context.destination); |
|
|
|
source.connect(gainNode); |
|
|
|
gainNode.connect(context.destination); |
|
|
|
|
|
|
|
this.audioContext = context; |
|
|
|
this.gainNode = gainNode; |
|
|
|
} |
|
|
|
|
|
|
|
handleDownload = () => { |
|
|
|