gpt4 book ai didi

reactjs - 如何使用 React 在音频元素上设置 srcObject

转载 作者:行者123 更新时间:2023-12-03 13:23:11 27 4
gpt4 key购买 nike

我一直在尝试在 React 中设置音频标签的 src 属性,但该轨道从未播放。

playTrack(track) {
const stream = new MediaStream()
stream.addTrack(track)
this.setState(() => ({ stream }))
}

render() {
return (
<audio src={this.state.stream || null} controls volume="true" autoPlay />
)
}

当我检查 Chrome 调试器时,它显示音频标记已将 [MediaStream] 设置为其源,但没有播放任何内容,并且所有控件仍呈灰色。

这样做而不是设置状态是可行的,但我认为这在 React 中是非常不受欢迎的。

const audio = document.querySelector('audio')
audio.srcObject = stream

最佳答案

如果不需要将流存储在状态中,那么您可以使用 ref 更新 srcObject 属性:

playTrack(track) {
const stream = new MediaStream()
stream.addTrack(track)
this.audio.srcObject = stream;
}

render() {
return (
<audio ref={audio => {this.audio = audio}} controls volume="true" autoPlay />
)
}

如果您确实需要从状态访问流,您可以尝试此操作

<audio ref={audio => { audio.srcObject = this.state.stream }} />

src={this.state.stream} 不起作用的原因是 src 需要一个表示音频资源 url 的字符串,而 this.state.stream 是一个 MediaStream 对象。

audio.srcaudio.srcObject 是不同的属性,需要不同的值类型。

关于reactjs - 如何使用 React 在音频元素上设置 srcObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48603402/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com