Проблема с видеозаписью Expo React Native APK: запуск захвата при useEffect ⇐ Android
-
Гость
Проблема с видеозаписью Expo React Native APK: запуск захвата при useEffect
Я использую Expo React Native вместе с компонентом Expo Camera для записи видео.
Моя цель — начать запись видео сразу после открытия компонента камеры.
При запуске моего приложения через Expo все работает отлично, а записанные видео получаются такими, как ожидалось. Однако когда я создаю APK (пакет Android) с тем же кодом и пытаюсь записать видео, продолжительность полученных файлов составляет 0 секунд, отображая только неподвижное изображение с момента, когда я нажимаю кнопку записи, чтобы остановить запись. Что интересно, видео становится длиннее, если я удерживаю кнопку остановки дольше.
import { View, Text, TouchableOpacity, StyleSheet } из «реагировать-родной»; импортировать { CameraType, Camera } из «экспо-камеры»; // импортируем * как файловую систему из 'expo-file-system'; импортировать {useState, useRef, useEffect} из «реагировать»; функция TestRecord() { const [разрешение, requestPermission] = Camera.useCameraPermissions(); const cameraRef = useRef(null); const isRecordingRef = useRef(false); const [cameraReady, setCameraReady] = useState(false); useEffect(() => { if (cameraRef.current && !isRecordingRef.current && cameraReady && разрешение && разрешение.грантед) { isRecordingRef.current = правда; НачатьИнтервалЗаписи(); } }, [cameraReady, разрешение]); const startRecordingInterval = async () => { если (cameraRef.current) { пытаться { const videoData = ждут cameraRef.current.recordAsync(); //получить видео } поймать (ошибка) { console.log("ошибка: ", ошибка); } } } const stopRecording = () => { if (cameraRef.current && isRecordingRef.current) { isRecordingRef.current = ложь; cameraRef.current.stopRecording(); } }; if (!permission || разрешение?.granted === false) { вернуть ; } возвращаться ( { setCameraReady (истина); }} onMountError={(ошибка) => { // сделай что-нибудь }} > Остановить запись ) } экспортировать TestRecord по умолчанию; Хотелось бы понять, почему в APK-версии запись видео не работает должным образом и как это исправить
Я попытался добавить компонент кнопки для запуска записи:
Начать запись Хотя этот подход работает со встроенным APK, он не соответствует моим требованиям.
Есть ли способ начать запись сразу после открытия камеры, не полагаясь на событие нажатия кнопки?
Я использую Expo React Native вместе с компонентом Expo Camera для записи видео.
Моя цель — начать запись видео сразу после открытия компонента камеры.
При запуске моего приложения через Expo все работает отлично, а записанные видео получаются такими, как ожидалось. Однако когда я создаю APK (пакет Android) с тем же кодом и пытаюсь записать видео, продолжительность полученных файлов составляет 0 секунд, отображая только неподвижное изображение с момента, когда я нажимаю кнопку записи, чтобы остановить запись. Что интересно, видео становится длиннее, если я удерживаю кнопку остановки дольше.
import { View, Text, TouchableOpacity, StyleSheet } из «реагировать-родной»; импортировать { CameraType, Camera } из «экспо-камеры»; // импортируем * как файловую систему из 'expo-file-system'; импортировать {useState, useRef, useEffect} из «реагировать»; функция TestRecord() { const [разрешение, requestPermission] = Camera.useCameraPermissions(); const cameraRef = useRef(null); const isRecordingRef = useRef(false); const [cameraReady, setCameraReady] = useState(false); useEffect(() => { if (cameraRef.current && !isRecordingRef.current && cameraReady && разрешение && разрешение.грантед) { isRecordingRef.current = правда; НачатьИнтервалЗаписи(); } }, [cameraReady, разрешение]); const startRecordingInterval = async () => { если (cameraRef.current) { пытаться { const videoData = ждут cameraRef.current.recordAsync(); //получить видео } поймать (ошибка) { console.log("ошибка: ", ошибка); } } } const stopRecording = () => { if (cameraRef.current && isRecordingRef.current) { isRecordingRef.current = ложь; cameraRef.current.stopRecording(); } }; if (!permission || разрешение?.granted === false) { вернуть ; } возвращаться ( { setCameraReady (истина); }} onMountError={(ошибка) => { // сделай что-нибудь }} > Остановить запись ) } экспортировать TestRecord по умолчанию; Хотелось бы понять, почему в APK-версии запись видео не работает должным образом и как это исправить
Я попытался добавить компонент кнопки для запуска записи:
Начать запись Хотя этот подход работает со встроенным APK, он не соответствует моим требованиям.
Есть ли способ начать запись сразу после открытия камеры, не полагаясь на событие нажатия кнопки?
Мобильная версия