Не удается вызвать 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
, а затем установите новое соединение. Это ужасно, потому что это занимает много времени и останавливает предварительный просмотр видео.
Пожалуйста, дайте мне знать, если вы знаете, почему это происходит, и если есть решение.
ОБНОВЛЕНИЕ: я только заметил, что, если я переключаю свой AVCaptureSession
sessionPreset
в AVCaptureSessionPresetPhoto
а затем вернуться к AVCaptureSessionPresetHigh
, тогда я могу начать захват видео снова.
ОБНОВЛЕНИЕ 2: Вот другой способ, которым я могу решить проблему:
captureSession.stopRunning()
captureSession.startRunning()
ОБНОВЛЕНИЕ 3: Оказывается, это связано с некоторым кодом, который фиксирует кнопки громкости - https://github.com/jpsim/JPSVolumeButtonHandler. Это не происходит, когда я закомментирую код, который начинается JPSVolumeButtonHandler
,