Не удается вызвать startRecordingToOutputFileURL более одного раза в экземпляре AVCaptureMovieFileOutput

В настоящее время я тестирую на iOS 8, на iPhone 6. Я вызываю эти API от Swift.

Я пытаюсь понять, почему я не могу позвонить startRecordingToOutputFileURL более одного раза на одном экземпляре AVCaptureMovieFileOutput,

  • я звоню stopRecording прежде чем я позвоню startRecordingToOutputFileURL снова.
  • Я удаляю временный видеофайл перед звонком startRecordingToOutputFileURL,

Первый раз, когда я звоню startRecordingToOutputFileURL, didStartRecordingToOutputFileAtURL обратный вызов делегата сработал. Когда я звоню stopRecording, didFinishRecordingToOutputFileAtURL обратный вызов срабатывает.

После этого я удаляю временный файл.

Потом, когда я позвоню startRecordingToOutputFileURL в следующий раз обратный вызов делегата не запускается. И когда я звоню stopRecording во второй раз "готовый" обратный вызов также не запускается.

Документы Apple для startRecordingToOutputFileURL говорят следующее:

В iOS это переключение файлов с точностью до кадра не поддерживается. Вы должны вызвать stopRecording перед повторным вызовом этого метода, чтобы избежать ошибок.

Тем не менее, я звоню stopRecording перед повторным вызовом, и он не работает.

Мой текущий обходной путь - удалить AVCaptureMovieFileOutput подключение, инициализировать новый экземпляр AVCaptureMovieFileOutput, а затем установите новое соединение. Это ужасно, потому что это занимает много времени и останавливает предварительный просмотр видео.

Пожалуйста, дайте мне знать, если вы знаете, почему это происходит, и если есть решение.

ОБНОВЛЕНИЕ: я только заметил, что, если я переключаю свой AVCaptureSessionsessionPreset в AVCaptureSessionPresetPhoto а затем вернуться к AVCaptureSessionPresetHigh, тогда я могу начать захват видео снова.

ОБНОВЛЕНИЕ 2: Вот другой способ, которым я могу решить проблему:

    captureSession.stopRunning()
    captureSession.startRunning()

ОБНОВЛЕНИЕ 3: Оказывается, это связано с некоторым кодом, который фиксирует кнопки громкости - https://github.com/jpsim/JPSVolumeButtonHandler. Это не происходит, когда я закомментирую код, который начинается JPSVolumeButtonHandler,

0 ответов

Другие вопросы по тегам