Swift ImagePicker StartVideoCapture

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

Я определил средство выбора изображений и начал захват видео при нажатии кнопки:

if (UIImagePickerController.isSourceTypeAvailable(.camera)) {
        imagePicker.sourceType = .camera
        imagePicker.cameraDevice = UIImagePickerControllerCameraDevice.front
        imagePicker.allowsEditing = false
        imagePicker.delegate = self
    }
    imagePicker.startVideoCapture()
    print("Capture started")

позже я остановил захват видео:

imagePicker.stopVideoCapture()
print("capture over")

Я знаю, что это должно вызывать мой метод:

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
    print("captured")
}

По какой-то причине мое видео не начинает запись, так как логическое значение imagepicker.startvideocapture возвращает false. Я полностью застрял в том, почему это происходит; может кто-нибудь предложить несколько предложений?


person newguy222    schedule 26.03.2017    source источник
comment
Разве вам не нужно представлять средство выбора изображений, прежде чем пытаться захватить видео?   -  person rmaddy    schedule 26.03.2017
comment
И почему вы пытаетесь вызвать startVideoCapture вне блока if?   -  person rmaddy    schedule 26.03.2017
comment
И где вы на самом деле создаете сборщик? Вы должны создавать его и использовать только в том случае, если исходный тип доступен.   -  person rmaddy    schedule 26.03.2017
comment
Я думал, что мне нужно использовать только методы start и stopvideocapture; Я пытаюсь записать, не предъявляя никакой камеры. И я создал сборщик в начале класса.   -  person newguy222    schedule 26.03.2017


Ответы (2)


Согласно документации, startVideoCapture возвращает значение false при некоторых из следующих обстоятельств:

Этот метод может возвращать значение false по разным причинам, среди которых следующие:

Съемка видео уже выполняется

Устройство не поддерживает захват видео

На устройстве закончилось место на диске

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

person Fahim    schedule 26.03.2017
comment
да, но я почти уверен, что ни одно из них не применимо; устройство поддерживает захват мультимедиа, на нем не закончилось место на диске, и я знаю, что еще не записываю фильм. - person newguy222; 26.03.2017
comment
По сути, UIImagePickerController предназначен для случаев, когда вам нужен пользовательский интерфейс. Если вам не нужен какой-либо пользовательский интерфейс, вы можете посмотреть AVFoundation, чтобы сделать видеозапись. Итак, то, что вы пытаетесь сделать здесь, может не сработать, потому что вы пытаетесь не отображать какой-либо пользовательский интерфейс. - person Fahim; 26.03.2017

Попробуй это..

imagePicker.CameraCaptureMode = .video

потому что CameraCaptureMode // по умолчанию фото, а не видео

or

Возможно, вы не информируете UIImagePickerController о записи видео. Итак, попробуйте эту строку

imagePicker.mediaTypes = [kUTTypeMovie as String]
person Swetha Lakshmi    schedule 04.03.2019