gpt4 book ai didi

ios - AVPlayer 在 CI 服务器上的单元测试期间无法加载文件

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:29:23 26 4
gpt4 key购买 nike

我有一些单元测试会导致 AVPlayer 加载本地文件。该文件是测试包中的一个很小 (~2KB) m4a 音频文件。这些测试对我来说都是本地工作。

在 Travis 上设置我的项目时,我注意到导致 AVPlayer 加载文件的测试失败。我尝试了其他几个 CI 服务并遇到了同样的问题。我增加了测试超时但没有运气。所有其他测试均通过。

我加载的文件类似于以下内容(已简化):

let path = Bundle(for: type(of: self)).path(forResource: "Pop", ofType: "m4a")!
let url = URL(fileURLWithPath: url)

self.player.replaceCurrentItem(with: AVPlayerItem(url: url))

我的代码观察 AVPlayer.currentItem.status。在 CI 上运行时,观察者以状态 .failed 触发。 player.errornilplayer.currentItem.error 为:

Error Domain=AVFoundationErrorDomain Code=-11800 "The operation could not be completed" UserInfo={NSUnderlyingError=0x7f86e1cd8070 {Error Domain=NSOSStatusErrorDomain Code=-101 "(null)"}, NSLocalizedFailureReason=An unknown error occurred (-101), NSLocalizedDescription=The operation could not be completed}

有趣的是,在另一个测试中,我故意尝试加载一个损坏的文件(断言它无法播放并且我的代码返回相关错误),我得到以下错误,这是预期的并表明没有问题读取文件系统:

Error Domain=AVFoundationErrorDomain Code=-11829 "Cannot Open" UserInfo={NSUnderlyingError=0x7f86e1cd7ba0 {Error Domain=NSOSStatusErrorDomain Code=-12848 "(null)"}, NSLocalizedFailureReason=This media may be damaged., NSLocalizedDescription=Cannot Open}

更新

我发现在本地测试时我偶尔会(可能一天工作一次)遇到类似的失败。似乎是在我打开 Xcode 和项目新鲜的时候,然后开始工作。也许 AVFoundation 中的某些东西需要一段时间才能初始化?我很想能够模拟 AVPlayer,也许我会着手为此添加一个协议(protocol)和 AVPlayerItem...

最佳答案

我有完全相同的问题和相同的错误。我最初尝试使用视频和音频文件都没有运气。然后,我解决了创建没有音频的视频的问题。我怀疑问题是由于 Travis-CI 的虚拟机没有声卡并导致操作系统遗漏了一些能够重现文件的内容。

不过,我不能 100% 确定是缺少音频还是导出视频的方式解决了问题。

videoOnlyTest.mp4

关于ios - AVPlayer 在 CI 服务器上的单元测试期间无法加载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40172431/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com