我不确定为什么这不起作用。我正在获取摄像头流,并且可以正常工作,因为我正在摄像头上取光。
流似乎没有附着。
class VideoOutput extends React.Component {
constructor(props) {
super(props);
this.videoRef = React.createRef();
}
componentDidMount() {
const videoObj = this.videoRef.current;
videoObj.srcObject = this.props.video;
console.log(videoObj);
}
render() {
return <video ref={this.videoRef}></video>;
}
}
class Application extends React.Component {
constructor(props) {
super(props);
this.state = {
video: null
};
this.handleVideoClick = this.handleVideoClick.bind(this);
}
async getVideo() {
const video = await navigator.mediaDevices.getUserMedia({
audio: false,
video: true
});
this.setState({ video });
}
stopVideo() {
this.state.video.getTracks().forEach(track => track.stop());
this.setState({ video: null });
}
handleVideoClick() {
if (this.state.video) {
this.stopVideo();
} else {
this.getVideo();
}
}
render(){
return(
<div>
<button onClick={this.handleVideoClick}>
{this.state.video ? 'Vid On' : 'Vid Off'}
</button>
<div>
{this.state.video ? <VideoOutput video={this.state.video} /> : ''}
</div>
</div>
);
}
}
ReactDOM.render(<Application />, document.getElementById('root'));
此处不起作用的示例: https://codepen.io/Chenzo/pen/QXXVvr
这似乎对我来说应该有效……但我怀疑我缺少一些简单的东西。
答案 0 :(得分:1)
我怀疑问题是您没有在播放视频。设置srcObject
后,尝试添加此内容:
videoObj.play();