Проблема с видеозаписью 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, он не соответствует моим требованиям.
Есть ли способ начать запись сразу после открытия камеры, не полагаясь на событие нажатия кнопки?
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
APK застрял на экране Splash после выпуска APK в Expo Bare Workflow (React Native)
Anonymous » » в форуме Android - 0 Ответы
- 8 Просмотры
-
Последнее сообщение Anonymous
-
-
-
APK застрял на экране Splash после выпуска APK в Expo Bare Workflow (React Native)
Anonymous » » в форуме IOS - 0 Ответы
- 6 Просмотры
-
Последнее сообщение Anonymous
-