ARSession и запись видео - PullRequest
       27

ARSession и запись видео

1 голос
/ 08 апреля 2019

Я вручную пишу видеомагнитофон.К сожалению, это необходимо, если вы хотите записывать видео и одновременно использовать ARKit.Я понял большую часть этого, но теперь мне нужно немного его оптимизировать, потому что мой телефон довольно сильно работает с ARKit, Vision и этим рекордером одновременно.

Чтобы сделать рекордер, вам нужноиспользуйте AVAssetWriter с AVAssetWriterInputAVAssetWriterInputPixelBufferAdaptor).Вход имеет свойство isReadyForMoreMediaData, которое необходимо проверить, прежде чем вы сможете написать другой кадр.Я записываю в режиме реального времени (или как можно ближе).

Прямо сейчас, когда ARKit.ARSession дает мне новый сеанс, я немедленно передаю его на AVAssetWriterInput.То, что я хочу сделать, это добавить его в очередь, и проверить цикл, чтобы увидеть, есть ли образцы для записи.Что касается жизни, я не могу понять, как это сделать эффективно.

Я хочу просто запустить цикл while, как это, но кажется, что это плохая идея:

func startSession() {
    // …
    while isRunning {
        guard !pixelBuffers.isEmpty && writerInput.isReadyForMoreMediaData else {
            continue
        }
        // process sample
    } 
}

Могу ли я запустить этот отдельный поток из ARSession.delegateQueue?Я не хочу сталкиваться с проблемами с CVPixelBuffer s из-за слишком долгого удержания камеры.

...