相机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