我正試圖在 SceneKit 材料上顯示一個 AVCaptureVideoPreviewLayer。
編輯:預覽層的內容來自我的 USB 連接的 iOS 設備。
- 下面鏈接的代碼在我對
NSView的層進行操作時有效,所以這部分應該是可以的 。
- 整個事情似乎在英特爾上作業,但不是蘋果硅 。
- 整個
。
我試過什么?
- 使用
NSView的圖層 - 有效 。
- 不在圖層上設定大小--金屬崩潰(高度為0,寬度為0--這在Big Sur中是應該的)
- 將圖層的尺寸精確地設定為從輸入的埠尺寸得出的尺寸--同樣崩潰 。
- 確保該層不在其他地方顯示(正如你將在代碼中看到的那樣)
更新:以下是在ldb中運行
detach的崩潰日志。 https://gist.github.com/mortenjust/4470c8e9e8ca1dc3043388b8b2886703uj5u.com熱心網友回復:
我也看到了崩潰,但這是一個簡單的
nil解包,在下面一行:AVCaptureDevice.devices(for: .muxed).first!將
.muxed改成.video后,修復了崩潰。然后為了更好地利用資源,可以直接使用該設備,如下:
@IBAction func start(_ sender: Any) { AVCaptureDevice.requestAccess(for: .video) { granted in. print("granted") } let discoverySession = AVCaptureDevice.DiscoverySession(deviceTypes: [. builtInWideAngleCamera], mediaType: .video, position: .front) let device = discoverySession.devices.first! boxNode.geometry?.firstMaterial?.diffuse.contents =設備 }只要確保視圖持續重繪,以便繪制新的視頻幀:
sceneView.rendersContinuously = trueuj5u.com熱心網友回復:
從崩潰日志中得知
- 崩潰是由ASan觸發的(見AddressSanitizer)
- 在
libMTLCapture.dylib下,這是用于在Xcode中除錯金屬的庫 。
我將在 Xcode 中禁用 GPU Frame Capture 除錯選項,看看崩潰是否會消失。如果它消失了,我將向蘋果公司提交一份反饋。
。Thread 2 Crashed:: 派遣佇列: com.apple.root.default-qos 0 libsystem_kernel.dylib 0x00000001826c0cec __pthread_kill 8 1 libsystem_pthread.dylib 0x0000000103beb384 pthread_kill 292 2 libsystem_c.dylib 0x0000000182639864 abort 104 3 libclang_rt.asan_osx_dynamic.dylib 0x0000000102be5e4c __sanitizer::Abort() 64 4 libclang_rt.asan_osx_dynamic.dylib 0x0000000102be5788 __sanitizer::Die() 208 5 libclang_rt.asan_osx_dynamic. dylib 0x0000000102bcf238 __asan::ScopedInErrorReport::~ScopedInErrorReport() 420 420 6 libclang_rt.asan_osx_dynamic. dylib 0x0000000102bcd06c __asan::ReportDeadlySignal(__sanitizer::SignalContext const&) 148 7 libclang_rt.asan_osx_dynamic. dylib 0x0000000102bcc950 __asan:: AsanOnDeadlySignal(int, void*, void*) 96 * 8 libsystem_platform.dylib 0x0000000182739c44 _sigtramp 56 9 libMTLCapture.dylib 0x0000000103a96eb0 0x1039e0000 749232[/span]. 10 com.apple.SceneKit 0x00000001a0ac1d50 __92-[SCNTextureCoreAnimationSource _resizeLayer:toSize:updateLayer:updateTransform:caRenderer:]_block_invoke 824 11 libclang_rt.asan_osx_dynamic.dylib 0x0000000102bc7e28 __wrap_dispatch_group_async_block_invoke 188 12 libdispatch.dylib 0x0000000103b401d8 _dispatch_call_block_and_release 32 13 libdispatch.dylib 0x0000000103b41d20 _dispatch_client_callout 20 14 libdispatch.dylib 0x0000000103b58d04 _dispatch_root_queue_drain 1664 15 libdispatch.dylib 0x0000000103b5939c _dispatch_worker_thread2 140 16 libsystem_pthread.dylib 0x0000000103be74b8 _pthread_wqthread 216 17 libsystem_pthread.dylib 0x0000000103be6228 start_wqthread 8
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/320056.html標籤:
上一篇:安裝react-native-unimodules時未定義的方法`use_unimodules!'。
下一篇:NSAlert的破壞性按鈕
- 使用
