【问题标题】:Swift 2 - Visualizing an AVMutableComposition for Debugging : Converting Apple's AVCompositionDebugViewerSwift 2 - 可视化 AVMutableComposition 以进行调试:转换 Apple 的 AVCompositionDebugViewer
【发布时间】:2023-12-15 20:32:01
【问题描述】:

我在对 Apple 提供的用于显示 AVMutableComposition 的示例进行 swift 2 转换时遇到了问题。如果您尝试可视化您的 AVComposition 以查看引擎盖下可能发生的情况,这是一个非常有用的项目。


更新:与 Obj-C 项目相比,我向每个函数添加了打印语句,以查看它们被调用的顺序以及调用它们的人。

我看到的两个问题似乎非常重要:

  1. synchronizePlayerWithEditor() 在 buildTransitionComposition(_:andVideoComposition:andAudioMix:) 之后没有被调用

  2. observeValueForKeyPath(_:...) 的调用顺序与 Obj-C 项目不同

在此处发布 sn-p 以获取调用函数,因为它很有用

Obj-C

NSLog(@"%d %s %@", __LINE__, __PRETTY_FUNCTION__, [[NSThread callStackSymbols] objectAtIndex:1]);

斯威夫特

func functionnYouWantToPrintCaller(yourNormalParameters..., function:String = __FUNCTION__){...}
print("\(__LINE__) \(__FUNCTION__) \(function)

这是我正在工作的 Apple 的 AVCompositionDebugViewer 项目:https://developer.apple.com/library/mac/samplecode/AVCompositionDebugViewer

我的 github 仓库: https://github.com/justinlevi/iOSAVCompositionDebugViewerSwift

认为这个问题可能源于 keyValueObservation 代码中的某些内容,尽管我目前并不完全确定。

【问题讨论】:

    标签: ios swift swift2 avfoundation avmutablecomposition


    【解决方案1】:

    问题最终出现在 SimpleEditor.swiftbuildCompositionObjectsForPlayback` 方法中。有一些全局变量的定义不正确。

    现在一切似乎都按预期工作。 https://github.com/justinlevi/iOSAVCompositionDebugViewerSwift

    【讨论】: