Таким образом, на основе Crashlytics Firebase. Следующий сбой происходит только для устройств iPhone 7 и iPhone 7 Plus. < /p>
Я также проверил приложение на старых устройствах - iPhone 6s, iPhone 7 и iPhone 11 и я не смог воспроизвести эту проблему.Fatal Exception: NSGenericException
*** -[AVCaptureSession stopRunning] stopRunning may not be called between calls to beginConfiguration and commitConfiguration
MainViewModel.swift - Line 598
closure #1 in MainViewModel.stopCaptureSession() + 598
Я использую Dispatchqueue для синхронизации, поэтому я не совсем понимаю, что здесь происходит.
MainViewModelФункции , связанные с захватом и Stoprunning , beginconfiguration , commitconfiguration вызовы:
private let sessionQueue = DispatchQueue(label: "sessionQueue")
private func stopCaptureSession() {
sessionQueue.sync {
if captureSession.isRunning {
captureSession.stopRunning()
}
// Remove all inputs
for input in captureSession.inputs {
captureSession.removeInput(input)
}
// Remove all outputs
for output in captureSession.outputs {
captureSession.removeOutput(output)
}
DispatchQueue.main.async {
self.torch = false
self.cameraReady = false
}
}
}
private func setupCaptureSessionConfigurationForRecording() async {
sessionQueue.sync {
captureSession.beginConfiguration()
let videoOutput = AVCaptureVideoDataOutput()
videoOutput.setSampleBufferDelegate(self, queue: videoQueue)
if captureSession.canAddOutput(videoOutput) {
captureSession.addOutput(videoOutput)
if let videoConnection = videoOutput.connection(with: .video), videoConnection.isVideoOrientationSupported {
videoConnection.videoOrientation = orientation
}
self.videoOutput = videoOutput
}
captureSession.commitConfiguration()
}
}
private func removeCaptureSessionConfigurationForRecording() {
sessionQueue.sync {
self.captureSession.beginConfiguration()
if let videoOutput = self.videoOutput {
self.videoQueue.sync {
self.captureSession.removeOutput(videoOutput)
self.videoOutput = nil
}
}
self.captureSession.commitConfiguration()
}
}
Подробнее здесь: https://stackoverflow.com/questions/796 ... nconfigura
Avcapturessession.stoprunning () не может быть вызвана между призывами к Beginconfiguration и Commitconfiguration (iPhon ⇐ IOS
Программируем под IOS
1749633231
Anonymous
Таким образом, на основе Crashlytics Firebase. Следующий сбой происходит только для устройств iPhone 7 и iPhone 7 Plus. < /p>
Я также проверил приложение на старых устройствах - iPhone 6s, iPhone 7 и iPhone 11 и я не смог воспроизвести эту проблему.Fatal Exception: NSGenericException
*** -[AVCaptureSession stopRunning] stopRunning may not be called between calls to beginConfiguration and commitConfiguration
MainViewModel.swift - Line 598
closure #1 in MainViewModel.stopCaptureSession() + 598
Я использую Dispatchqueue для синхронизации, поэтому я не совсем понимаю, что здесь происходит.
MainViewModelФункции , связанные с захватом и Stoprunning , beginconfiguration , commitconfiguration вызовы:
private let sessionQueue = DispatchQueue(label: "sessionQueue")
private func stopCaptureSession() {
sessionQueue.sync {
if captureSession.isRunning {
captureSession.stopRunning()
}
// Remove all inputs
for input in captureSession.inputs {
captureSession.removeInput(input)
}
// Remove all outputs
for output in captureSession.outputs {
captureSession.removeOutput(output)
}
DispatchQueue.main.async {
self.torch = false
self.cameraReady = false
}
}
}
private func setupCaptureSessionConfigurationForRecording() async {
sessionQueue.sync {
captureSession.beginConfiguration()
let videoOutput = AVCaptureVideoDataOutput()
videoOutput.setSampleBufferDelegate(self, queue: videoQueue)
if captureSession.canAddOutput(videoOutput) {
captureSession.addOutput(videoOutput)
if let videoConnection = videoOutput.connection(with: .video), videoConnection.isVideoOrientationSupported {
videoConnection.videoOrientation = orientation
}
self.videoOutput = videoOutput
}
captureSession.commitConfiguration()
}
}
private func removeCaptureSessionConfigurationForRecording() {
sessionQueue.sync {
self.captureSession.beginConfiguration()
if let videoOutput = self.videoOutput {
self.videoQueue.sync {
self.captureSession.removeOutput(videoOutput)
self.videoOutput = nil
}
}
self.captureSession.commitConfiguration()
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79661693/avcapturesession-stoprunning-may-not-be-called-between-calls-to-beginconfigura[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия