【问题标题】:Strange AQDefaultDevice logging奇怪的 AQDefaultDevice 日志记录
【发布时间】:2017-03-16 07:37:59
【问题描述】:

我正在从这样的控制器播放视频:

func playMovie() {
    let path = Bundle.main.path(forResource: "xyz", ofType:"mov")
    let url = URL(fileURLWithPath: path!)

    self.player = AVPlayer(url: url)
    let layer: AVPlayerLayer = AVPlayerLayer(player: self.player)

    layer.frame = self.view.frame
    layer.videoGravity = AVLayerVideoGravityResizeAspectFill
    self.view.layer.addSublayer(layer)

    self.player.play()
}

即使在控制器被销毁并且不再使用之后,我也会每隔一秒左右收到此日志消息:

AQDefaultDevice (173): skipping input stream 0 0 0x0

我不是在问如何隐藏这些日志。我知道如何通过将OS_ACTIVITY_MODE 设置为disable (See this for how to hide these logs) 来做到这一点。我担心的是,即使控制器被销毁,电影可能仍在以某种方式播放。我播放电影的方式有什么问题吗?还是我需要执行任何额外的清理工作?

【问题讨论】:

  • 我想这个答案会适合你。它解释了一种删除日志的方法,其中包含更多详细信息。 stackoverflow.com/a/40336926/4602597
  • 我的问题不是关于如何隐藏不需要的日志。我在最后一段中已经说明了这一点。我的问题是该特定日志是否指向与 AVPlayer 相关的未发布资源。
  • 我发现这个问题(以及在 cmets 中链接到它的解决方案)的唯一原因是禁用日志的这个烦人的方面重新成为多媒体播放器对象,因为它会干扰读取其他日志; FWIW。但是,是的,显然你做的事情是正确的,而日志的行为却不尽如人意。
  • 这太烦人了。我花了几个小时试图确定播放器为什么没有停止,而现在——据我所知——这是一个 XCode 错误。你有没有找到任何其他答案@RajV?

标签: ios xcode


【解决方案1】:

不,你没有做错任何事。这是 Xcode8 + iOS10 的日志错误。


我们可以这样绕过它(设备和模拟器需要不同的值):

添加名称 OS_ACTIVITY_MODE 和值 ${DEBUG_ACTIVITY_MODE} 并检查它(在产品 -> 方案 -> 编辑方案 -> 运行 -> 参数 -> 环境中)。

添加用户定义设置DEBUG_ACTIVITY_MODE,然后为Debug 添加Any iOS Simulator SDK,并将其值设置为disable(在项目-> 构建设置-> + -> 用户定义设置中)

【讨论】:

  • 您阅读我的问题了吗?我已经说过我可以使用 OS_ACTIVITY_MODE 禁用日志记录。这不是这个问题的重点。
  • 这是 Xcode8 + iOS10 中的日志错误。 - 这是您问题的答案。
  • 我问的问题不是关于如何隐藏这些日志消息。是的,我引用,“我播放电影的方式有什么问题吗?或者我需要进行任何清理吗?”
  • 每次我从在模拟器中运行切换到在设备上运行时,需要我手动更改环境变量的“解决方案”根本不是解决方案。
  • 如果您能找到更好的解决方案,请告诉我们。
【解决方案2】:

我在 iOS 模拟器 (xcode 8.1) 上使用 AVPlayer Foundation 时遇到了这个问题。但是它不再在 iOS 设备上登录。在我看来这是一个日志错误。播放器或图层被破坏。


更新

我给你这个fix unwanted log messages

【讨论】:

  • 有相同的日志,不使用AVPlayer Foundation。
  • 我不确定,当我使用 Xcode 7 时,日志消息消失了
  • 我使用AVPlayer后也遇到同样的问题
  • 大家好,我给你买了这个fix unwanted log messages
【解决方案3】:

不是真正的答案,而是更多可能帮助某人调试此问题的线索...

从我的 Xcode 9/iOS 11 项目中删除 AVFoundation 框架后,我就开始收到此警告。我正在使用 AVFoundation(特别是 AVPlayer 和 AVPlayerLayer),但在从目标的 Linked Frameworks and Libraries 编辑器中删除框架,然后将其从 Frameworks 文件夹中删除后,它仍然可以正常运行和编译(我试图消除不同的运行时警告) .

通过链接框架和库编辑器重新添加它消除了控制台中的运行时警告。

【讨论】:

    猜你喜欢
    • 2010-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-12
    • 2011-04-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多