Соотношение сторон сохраненного видео отличается от виджета предварительного просмотра.Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Соотношение сторон сохраненного видео отличается от виджета предварительного просмотра.

Сообщение Anonymous »

Почему записанное видео обрезается по бокам, хотя мой CameraPreview показывает полный кадр?
Я работаю над приложением для Android во Flutter, используя пакет камеры ( 0.11.0+2). Я настроил CameraPreview с соотношением сторон 0,75 (3:4), и он отлично отображает полный кадр. Однако когда я записываю видео, сохраненный файл обрезается по бокам. Я не уверен, что вызывает такую ​​разницу между предварительным просмотром и окончательной записью.
Я использую поток от контроллера для определения позы, и это работает отлично. Но если я записываю одновременно, видео в сохраненном файле обрезается или имеет другое соотношение сторон.
Вот соответствующий код, показывающий, что я делаю. У меня очень большой файл, поэтому я решил показать только те части, которые, по моему мнению, необходимы, но дайте мне знать, если вы хотите, чтобы я показал больше моего кода:
// Camera preview with aspect ratio setting
Align(
alignment: Alignment.center,
child: AspectRatio(
aspectRatio: _aspectRatio, // 0.75 for 3:4 preview aspect ratio
child: CameraPreview(
_cameraController!,
child: _customPaint,
),
),
),

// Initialize camera controller
final CameraController cameraController = CameraController(
cameraDescription,
ResolutionPreset.low, // Tried different resolutions here
imageFormatGroup: ImageFormatGroup.nv21,
enableAudio: false,
fps: 25,
);

// Recording functions
Future _startVideoRecording() async {
if (_cameraController == null || _cameraController!.value.isRecordingVideo) return;

try {
await _cameraController!.startVideoRecording();
setState(() => _isRecording = true);
} on CameraException catch (e) {
print('Error starting video recording: $e');
}
}

Future _stopVideoRecording() async {
if (_cameraController == null || !(_cameraController!.value.isRecordingVideo)) return null;

try {
XFile? videoFile = await _cameraController!.stopVideoRecording();
setState(() => _isRecording = false);
return videoFile;
} on CameraException catch (e) {
print('Error stopping video recording: $e');
return null;
}
}


Подробнее здесь: https://stackoverflow.com/questions/791 ... iew-widget
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»