Окружающая среда
- Flutter SDK: 3.8.1
- пакет камеры: 0.10.6
- Зависимости плагина камеры:
Код: Выделить всё
camera: ^0.10.6 permission_handler: ^11.3.1 video_player: ^2.7.0
- Предварительный просмотр камеры отображается с правильной яркостью
- Записанное видео очень темное/черное
- Проблема возникает как при нормальном, так и при слабом освещении условиях
- Фотографии, сделанные одной и той же камерой, получаются нормально
1. Отключен механизм рендеринга крыльчатки
Добавлен в AndroidManifest.xml:Код: Выделить всё
2. Проверенные разрешения
Все необходимые разрешения объявлены и предоставлены:Код: Выделить всё
Инициализация камеры:
Код: Выделить всё
Future _initializeCamera() async {
if (!mounted) return;
setState(() {
_errorMessage = null;
_isInitializing = true;
});
try {
// Request camera permission
final hasPermission = await _mediaService.hasCameraPermission();
if (!hasPermission) {
final granted = await _mediaService.requestCameraPermission();
if (!granted) {
if (!mounted) return;
setState(() {
_errorMessage = 'Camera permission required';
_isInitializing = false;
});
return;
}
}
// Get available cameras
_cameras = await availableCameras();
if (_cameras.isEmpty) {
if (!mounted) return;
setState(() {
_errorMessage = 'No cameras found';
_isInitializing = false;
});
return;
}
// Select camera based on facing direction
final selectedCamera = _cameras.firstWhere(
(camera) => camera.lensDirection == _cameraFacing,
orElse: () => _cameras.first,
);
// Initialize camera controller
_cameraController = CameraController(
selectedCamera,
ResolutionPreset.high,
enableAudio: true,
);
await _cameraController!.initialize();
await _cameraController!.setFlashMode(_flashMode);
if (!mounted) return;
setState(() {
_isInitializing = false;
});
} catch (e) {
if (!mounted) return;
setState(() {
_errorMessage = 'Failed to initialize camera: $e';
_isInitializing = false;
});
}
}
Код: Выделить всё
Future _startVideoRecording() async {
if (_cameraController == null || !_cameraController!.value.isInitialized) return;
try {
// Enable torch mode if flash is on
if (_flashMode == FlashMode.always) {
await _cameraController!.setFlashMode(FlashMode.torch);
}
// Start recording
await _cameraController!.startVideoRecording();
if (!mounted) return;
setState(() {
_isRecording = true;
_recordingDuration = 0;
});
// Start timer for duration display
_recordingTimer = Timer.periodic(const Duration(seconds: 1), (timer) {
if (mounted) {
setState(() {
_recordingDuration++;
});
}
});
} catch (e) {
if (!mounted) return;
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('Failed to start recording: $e')),
);
}
}
Future _stopVideoRecording() async {
if (_cameraController == null || !_isRecording) return;
try {
final video = await _cameraController!.stopVideoRecording();
_recordingTimer?.cancel();
// Reset flash mode
if (_flashMode == FlashMode.always) {
await _cameraController!.setFlashMode(FlashMode.off);
}
setState(() {
_isRecording = false;
_recordingDuration = 0;
});
if (!mounted) return;
// Navigate to preview screen
Navigator.of(context).push(
MaterialPageRoute(
builder: (context) => CreatePostScreen(preSelectedMedia: [video]),
),
);
} catch (e) {
if (!mounted) return;
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('Failed to stop recording: $e')),
);
}
}
Код: Выделить всё
_cameraController = CameraController(
selectedCamera,
ResolutionPreset.high, // Using high resolution
enableAudio: true,
);
- Предварительный просмотр показывает правильную яркость в режиме реального времени.
- Отснятые фотографии работают идеально с правильной экспозицией.
- Только видеозапись дает темный результат.
- Темнота одинакова на протяжении всего видео (а не только в первых нескольких кадрах).
- Увеличение яркости устройства не влияет на записываемое видео
- Есть ли определенная настройка камеры или параметр инициализации, который мне не хватает для записи видео?
- Должен ли я устанавливать значения экспозиции или ISO перед началом видеозаписи?
- Известен ли Обход этой проблемы с помощью плагина камеры Flutter?
- Существуют ли альтернативные пакеты камер, которые лучше справляются с записью видео?
Подробнее здесь: https://stackoverflow.com/questions/797 ... s-fine-but
Мобильная версия