[英]Camera Video not Working - React Native
我一直想弄清楚为什么这段时间不起作用。 我使用了很多示例代码,但是我仍然无法弄明白。
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
,这意味着它没有改变,视频也没有记录。
Camera.constants.CaptureMode.video
到Camera.constants.CaptureMode.still
( .video
=> .still
) 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));
在上面的代码中,您告诉状态, 在保存数据后设置对象路径。
但是,那里:
stopVideo() {
this.camera.stopCapture();
console.log(this.state.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
函数告诉本机代码,停止录制和保存视频 - 可能需要一些时间,因此在 stopCapture
不起作用后立即执行this.state.path
。
有关详细信息,请查看https://developer.mozilla.org/pl/docs/Web/JavaScript/Reference/Global_Objects/Promise
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.