Как записать видео в RealityKit?
У меня есть проект RealityKit в Xcode, и я хочу записать ARView
. Я рассматривал ReplayKit, но он предназначен для записи экрана, я хочу записывать толькоARView
со своей камерой. Я рассматривал проект с открытым исходным кодом ARVideoKit от AFathi, но он не поддерживает RealityKit... кое-что о разных путях рендеринга. Я нашел статью Medium, в которой описывается, как реализовать функцию записи в приложении ARKit, но проблема в том, что для этого требуется метод:func renderer(_ renderer: SCNSceneRenderer)
который недоступен в RealityKit, потому что это метод SceneKit.
1 ответ
Мой ответ предполагает, что вы знакомы с записью видео и аудио с помощью AVAssetWriter
.
Есть захваченный кадр, который предоставляется как часть ARKit. session(_:didUpdate:)
метод. ВARFrame
возвращенный объект имеет CVPixelBuffer
названный capturedFrame
. Обращайтесь с кадром, как с обычным сеансом видеозаписи, за исключением того, что онcaptureOutput(_:didOutput:from:)
метод, он вместо этого фиксируется здесь. Вам все еще может понадобитьсяcaptureOutput(_:didOutput:from:)
для звука, если вы также собираетесь записывать звук с микрофона.
В моем случае я преобразовал свой захваченный кадр в MTLTexture
и использовал Metal для обработки моих видеокадров перед передачей их AVAssetWriter
. Я хотел нарисовать поверх рамок камеры перед записью. К сожалению, сделать это очень сложно, и я боюсь, что это не быстрый и короткий ответ "копировать + вставить". Надеюсь, указывая вам наcapturedFrame
объект, возвращаемый ARKit, - хорошее место для начала.
Пример того, как записывать видео с помощью AVAssetWriter
:https://programmersought.com/article/80131041234/;jsessionid=38CBA6743FB3C440DE9D2B25A6854B28
Если вы хотите погрузиться в кроличью нору OpenGL / Metal:https://developer.apple.com/documentation/metalkit/