Захват видео Android CameraX: ERROR_NO_VALID_DATA при начале записиAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Захват видео Android CameraX: ERROR_NO_VALID_DATA при начале записи

Сообщение Anonymous »

Я пытаюсь реализовать запись видео в своем приложении для Android с помощью CameraX. Приложение отображает предварительный просмотр камеры корректно, но когда я пытаюсь начать запись, получаю следующее

Код: Выделить всё

error:Sending VideoRecordEvent Finalize [error: ERROR_NO_VALID_DATA]
Зависимости в build.gradle:

Код: Выделить всё

    implementation ("androidx.camera:camera-camera2:1.3.0-rc01")
implementation ("androidx.camera:camera-lifecycle:1.3.0-rc01")
implementation ("androidx.camera:camera-view:1.3.0-rc01")
implementation ("androidx.camera:camera-video:1.3.0-rc01")
Моя связанная функция:

Код: Выделить всё

   private fun initializeVideoCapture() {
val recorder = Recorder.Builder()
.setQualitySelector(QualitySelector.from(Quality.HIGHEST))
.build()
videoCapture = VideoCapture.withOutput(recorder)
}

@SuppressLint("MissingPermission")
private fun startRecording() {
val videoCapture = this.videoCapture ?: return

val videoFile = File(
outputDirectory,
"${System.currentTimeMillis()}.mp4"
)

val outputOptions = FileOutputOptions.Builder(videoFile).build()
recording = videoCapture.output
.prepareRecording(this, outputOptions)
.withAudioEnabled()
.start(ContextCompat.getMainExecutor(this)) { recordEvent ->
when (recordEvent) {
is VideoRecordEvent.Start -> {
Toast.makeText(this, "Recording started", Toast.LENGTH_SHORT).show()
}
is VideoRecordEvent.Finalize -> {
if (recordEvent.hasError()) {
Toast.makeText(this, "Recording error", Toast.LENGTH_SHORT).show()
} else {
Toast.makeText(this, "Recording succeeded", Toast.LENGTH_SHORT).show()
}
recording?.close()
recording = null
}
}
}
}

private fun stopRecording() {
recording?.stop()
recording = null
}

private fun allPermissionsGranted() = ActivityCompat.checkSelfPermission(
this, Manifest.permission.CAMERA
) == PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(
this, Manifest.permission.RECORD_AUDIO
) == PackageManager.PERMISSION_GRANTED

private fun createOutputDirectory(): File {
val mediaDir = externalMediaDirs.firstOrNull()?.let {
File(it, resources.getString(R.string.app_name)).apply { mkdirs() }
}
return if (mediaDir != null && mediaDir.exists())
mediaDir else filesDir
}
Я убедился, что необходимые разрешения (CAMERA, RECORD_AUDIO) запрошены и предоставлены. Приложение правильно инициализирует камеру и отображает предварительный просмотр, но не удается начать запись видео.
Что может быть причиной ошибки ERROR_NO_VALID_DATA и как ее устранить для успешной записи и сохранения видео?

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

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

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

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

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

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