RxSwift 和 AVKit 的问题
Issues with RxSwift and AVKit
我正在构建我希望成为一个简单的 macOS 应用程序,它将在本地存储视频 select 通过弹出按钮编辑。
该应用程序有两个 windows 1) AVPlayerView 和 2) 一个简单的控制面板,允许用户 select 并在另一个 window 上播放标记的视频。
所有这些在 XCode 中都非常有效。当保存的 URL 被 selected 时,它被制作成一个 AVAsset,它又被制作成一个 AVPlayerItem。下一个过程我已成功尝试(在 Xcode)两种方式:创建 1) PublishSubect 或 2) PublishSubject。在 AVPlayerview window 的视图控制器中,我订阅了控制面板的发布主题,并使用 AVPlayerItem
更新 AVplayerView 的播放器
destinationVC.videoSubject.subscribe(
onNext: { [weak self] item in
self?.player.replaceCurrentItem(with: item)
}
).disposed(by: bag)
或者我以类似的方式注入播放器。当我 运行 XCode 中的应用程序时,这些选项中的任何一个都可以完美地工作。我遇到的问题是,当我将它存档到 运行 我计算机上的应用程序时,当我 select 要播放的视频时,应用程序崩溃了。
我将此任务隔离到后台线程,希望能更好地找出错误,但生成的崩溃报告对我来说意义不大:
Thread 2 Crashed:: Dispatch queue: Background
0 [myinfo].STSVideoPlayer 0x000000010e655476 closure #1 in closure #1 in VideoViewController.prepare(for:sender:) + 134 (VideoViewController.swift:40)
1 [myinfo].STSVideoPlayer 0x000000010e655499 thunk for @escaping @callee_guaranteed () -> () + 25
2 libdispatch.dylib 0x00007fff6e6d56c4 _dispatch_call_block_and_release + 12
3 libdispatch.dylib 0x00007fff6e6d6658 _dispatch_client_callout + 8
4 libdispatch.dylib 0x00007fff6e6dbc44 _dispatch_lane_serial_drain + 597
5 libdispatch.dylib 0x00007fff6e6dc5d6 _dispatch_lane_invoke + 363
6 libdispatch.dylib 0x00007fff6e6e5c09 _dispatch_workloop_worker_thread + 596
7 libsystem_pthread.dylib 0x00007fff6e930a3d _pthread_wqthread + 290
8 libsystem_pthread.dylib 0x00007fff6e92fb77 start_wqthread + 15
很明显,我在这里不知所措。如果您有任何见解,我们将不胜感激!
我找到了更详细的崩溃报告,原来我是force-unwrapping一些零。我不确定在 XCode 中是如何通过的,但现在一切都在顺利进行。
我正在构建我希望成为一个简单的 macOS 应用程序,它将在本地存储视频 select 通过弹出按钮编辑。
该应用程序有两个 windows 1) AVPlayerView 和 2) 一个简单的控制面板,允许用户 select 并在另一个 window 上播放标记的视频。
所有这些在 XCode 中都非常有效。当保存的 URL 被 selected 时,它被制作成一个 AVAsset,它又被制作成一个 AVPlayerItem。下一个过程我已成功尝试(在 Xcode)两种方式:创建 1) PublishSubect 或 2) PublishSubject。在 AVPlayerview window 的视图控制器中,我订阅了控制面板的发布主题,并使用 AVPlayerItem
更新 AVplayerView 的播放器 destinationVC.videoSubject.subscribe(
onNext: { [weak self] item in
self?.player.replaceCurrentItem(with: item)
}
).disposed(by: bag)
或者我以类似的方式注入播放器。当我 运行 XCode 中的应用程序时,这些选项中的任何一个都可以完美地工作。我遇到的问题是,当我将它存档到 运行 我计算机上的应用程序时,当我 select 要播放的视频时,应用程序崩溃了。
我将此任务隔离到后台线程,希望能更好地找出错误,但生成的崩溃报告对我来说意义不大:
Thread 2 Crashed:: Dispatch queue: Background
0 [myinfo].STSVideoPlayer 0x000000010e655476 closure #1 in closure #1 in VideoViewController.prepare(for:sender:) + 134 (VideoViewController.swift:40)
1 [myinfo].STSVideoPlayer 0x000000010e655499 thunk for @escaping @callee_guaranteed () -> () + 25
2 libdispatch.dylib 0x00007fff6e6d56c4 _dispatch_call_block_and_release + 12
3 libdispatch.dylib 0x00007fff6e6d6658 _dispatch_client_callout + 8
4 libdispatch.dylib 0x00007fff6e6dbc44 _dispatch_lane_serial_drain + 597
5 libdispatch.dylib 0x00007fff6e6dc5d6 _dispatch_lane_invoke + 363
6 libdispatch.dylib 0x00007fff6e6e5c09 _dispatch_workloop_worker_thread + 596
7 libsystem_pthread.dylib 0x00007fff6e930a3d _pthread_wqthread + 290
8 libsystem_pthread.dylib 0x00007fff6e92fb77 start_wqthread + 15
很明显,我在这里不知所措。如果您有任何见解,我们将不胜感激!
我找到了更详细的崩溃报告,原来我是force-unwrapping一些零。我不确定在 XCode 中是如何通过的,但现在一切都在顺利进行。