我想打开3个功能的设备相机:
动作侦测
视频记录
使用rtsp
我可以通过初始化设备相机预览并使用相机对象的返回byte []数据来完成2个第一个功能。
class Adbanner extends React.Component {
// Set this component's state as the current ad index
state = {ad: 0};
// Rotates the ad index state every 2 seconds
rotateAd () {
this.setState({ad: (this.state.ad + 1) % adarray.length});
this.timer = setTimeout(this.rotateAd, 2000);
}
// Start rotating the ad index when mounted
componentDidMount () {
this.rotateAd();
}
// Renders when constructed, then whenever the state changes (or when React wants to)
render() {
return (
<div>
<input id="ad" type="image" src={adarray[this.state.ad]} style="position:absolute, height:50%, width:100%">
</div>
);
}
// Stop the update timer when unmounting
componentWillUnmount () {
clearTimeout(this.timer);
}
}
export default Adbanner;
但我还不能做第三个功能。 我尝试过一些操作系统(libstreaming,rtmp-rtsp-stream-client-java ,..)但他们都将再次打开新的相机预览做流。
对于如何仅对现有相机预览中的rtsp相机字节[]数据进行流式传输,您有何评论?
答案 0 :(得分:1)
如果您查看rtmp-… library,可以找到onPreviewFrame()实施。您可以通过添加检测来扩展此方法。如果我理解正确,这个库可以为你处理录像。
如果您(理所当然)更喜欢使用更成熟的库,那么您的选择应该是WebRTC。但是将您的面部检测挂钩到WebRTC可能会更难,并且可能涉及C ++。
另一方面,如果您的任务非常有限,并且两台设备共享相同的无线局域网且干扰最小,则您不需要高级传输协议作为RTSP。直接TCP套接字(用于编码帧)就足够了,这可以非常轻松地添加。