相机video不工作 – 反应原生
题
我一直在试图弄清楚为什么这个工作不能工作一段时间。 我已经使用了很多示例代码,但我仍然无法弄清楚。
码
takeVideo() { console.log('started to take video'); this.camera.capture({ audio: true, mode: Camera.constants.CaptureMode.video, target: Camera.constants.CaptureTarget.disk }).then((data) => { this.setState({ path: data.path }); console.log(data); }).catch((err) => console.log(err)); } stopVideo() { this.camera.stopCapture(); console.log(this.state.path); } renderCamera() { return ( <View> <Camera ref={(cam) => { this.camera = cam; }} style={styles.preview} aspect={Camera.constants.Aspect.fill} captureTarget={Camera.constants.CaptureTarget.disk} captureMode={Camera.constants.CaptureMode.video} > <TouchableHighlight style={styles.capture} onPressIn={this.takeVideo.bind(this)} onPressOut={this.stopVideo.bind(this)} underlayColor="rgba(255, 255, 255, 0.5)" > <View /> </TouchableHighlight> </Camera> </View> ); }
什么不工作
当我console.log(this.state.path)
它输出false
,这意味着它不会改变,video没有logging。
信息
- 这是在IOS上
- 如果我将
Camera.constants.CaptureMode.video
更改为Camera.constants.CaptureMode.still
(.video
=>.still
) - RN版本:
react-native-cli: 2.0.1
react-native: 0.44.0
回购
我发现这个回购是试图做几乎完全一样的事情,我有同样的问题。 这里是回购: https : //github.com/MiLeung/record
你的代码中的所有东西都可以,但是你错过了一件重要的事情。
this.camera.capture({ audio: true, mode: Camera.constants.CaptureMode.video, target: Camera.constants.CaptureTarget.disk }).then((data) => { this.setState({ path: data.path }); console.log(data); }).catch((err) => console.log(err));
在上面的代码中,您正在告诉状态, 在保存数据后设置对象path。
但是,在那里:
stopVideo() { this.camera.stopCapture(); console.log(this.state.path); }
在保存数据之前,您正在获取path对象。
试试这个:
this.camera.capture({ audio: true, mode: Camera.constants.CaptureMode.video, target: Camera.constants.CaptureTarget.disk }).then((data) => { this.setState({ path: data.path }); console.log(this.state.path); // You should have your path set console.log(data); }).catch((err) => console.log(err));
stopCapture
函数告诉本地代码,停止录制并保存video – 可能需要一些时间,所以在 stopCapture
不起作用之后立即执行this.state.path
。
欲了解更多信息,请查看https://developer.mozilla.org/pl/docs/Web/JavaScript/Reference/Global_Objects/Promise