camera - Expo recordAsync() 不返回响应

标签 camera expo

我能够使用 takePictureAsync() 拍照,它确实给了我一个响应。 但是,我无法收到 recordAsync() 的响应。

这些是我的依赖项:

import React, { useState, useEffect } from 'react';
import { StyleSheet, Text, View, TouchableOpacity } from 'react-native';
import { Camera } from 'expo-camera';

这些是权限:

useEffect(() => {
    (async () => {
      const { status } = await Camera.requestPermissionsAsync();
      setHasPermission(status === 'granted');
    })();
  }, []);

这些是功能和状态:

  const [hasPermission, setHasPermission] = useState(null);
  const [type, setType] = useState(Camera.Constants.Type.back);
  const [record, setRecord] = useState(false)
  const [cam, setCam] = useState(null)

  const takeVideo = async () => {
    console.log('take video')
    if(cam){
      setRecord(true)
      let video = await cam.recordAsync({mute:true, maxDuration:5})
      console.log('video', video)  
    }
  }

 const stopRecord = async () => {
    console.log('stop record')
    let endVideo = await cam.stopRecording()
    console.log('end video', endVideo)
    setRecord(false)
  }

这些是渲染:

<View style={styles.container}>
  <Camera style={styles.camera} type={type} ref={(ref)=>setCam(ref)}>
     <View style={styles.buttonContainer}>
        {record?
          <TouchableOpacity style={styles.button} onPress={() => stopRecord()}>
            <Text style={styles.text}> Stop </Text>
          </TouchableOpacity>:
          <TouchableOpacity
            style={styles.button}
            onPress={() => {takeVideo()}}>
            <Text style={styles.text}> Record </Text>
          </TouchableOpacity>
        }
          
      </View>
    </Camera>
</View>

最佳答案

经过一晚上的尝试,我发现了这个问题。 要在世博会上录制视频,用户需要授予应用程序音频权限。文档中没有说明这一点。( https://docs.expo.io/versions/latest/sdk/camera/#recordasync )

const {status} = await Audio.requestPermissionsAsync();

希望expo能够更新此文档。

我如何发现它需要音频许可? 我使用 try/catch 来捕获错误。

try{
    if(cam){
      setRecord(true)
      let video = await cam.recordAsync({mute:true, maxDuration:5})
      console.log('video', video)
    }
   }catch(err){
      console.log(err)
   }

关于camera - Expo recordAsync() 不返回响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68152345/

相关文章:

swift - iPhone X 的相机预览比例是多少?

react-native - react native ScrollView 类型错误 : undefined is not an object (evaluating 'this._subscribableSubscriptions.forEach' )

javascript - 如何将字符串转换为小写? .toLowerCase() 无法正常工作

node.js - expo publish 总是以 Ubuntu 上的 Javascript head out of memory 结束

c++ - 使用 DMA 仅从 DCMI 读取每秒的字节

javascript - 围绕场景旋转相机

camera - 将主相机与 transform.LookAt 一起用于目标但不旋转相机

swift - 使 UIViewController 符合 AVCapturePhotoCaptureDelegate 不起作用

javascript - 屏幕不滚动 Expo web

android - React native Expo 版本代码 1 已被使用。尝试其他版本代码