Swift 4:CUICatalog:提供的资产名称无效:'(null)'仅使用AVPlayerViewController时

时间:2018-03-08 21:33:52

标签: swift debugging avplayer avplayerviewcontroller

我试图播放本地视频文件并继续获取以下日志:

[framework] CUICatalog:提供的资产名称无效:'(null)'

我的视频文件位于项目目录中,也位于主要捆绑资源中。我尝试过多种版本的语法来播放视频。这是我在测试项目中现在拥有的代码:

public static void main(String[] args) throws Exception {
    System.out.println(Logger.getLogger(""));
    System.out.println(Logger.getGlobal());
    System.out.println(Logger.getGlobal().getParent());
}

当我使用AV播放器和播放器层时,我没有得到“空白”。消息。它只发生在我使用AVPlayerViewController时。

我对编程很新,任何帮助都会非常感激,因为我无法在线找到有效的解决方案。

1 个答案:

答案 0 :(得分:0)

播放从AWS S3下载的文件时,我遇到了同样的问题。

对于错误消息的含义,我没有任何解释。
但就我而言,这是因为文件实际上无法播放。


1。确保路径正确。

我没有使用Bundle
我将文件放在 Documents 目录下,并使用FileManager设置路径:

let documentsUrl: URL =  FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
let localFileName: String = "recording.mp4" 
let localFileUrl = documentsUrl.appendingPathComponent(localFileName)

print("Playing \(localFileUrl.absoluteString)")

那会打印出这样的内容:

file:///var/mobile/Containers/Data/Application/D8AF92BD-D736-4B86-9FF4-C60ABA6C741B/Documents/recording.mp4

2。确保文件实际可播放。

为此,我想检查文件在设备上存储后的实际状态。
原来,该文件已“损坏”(例如,复制/下载中断),因此它确实无法播放。

  • 将iOS设备连接到Mac。
  • 从Xcode转到 Window > 设备和模拟器
  • 从左侧的已连接列表中查找您的设备。
  • 已安装的应用列表中查找您的应用。
  • 单击列表底部的齿轮。
  • 选择下载容器。

download container

  • 将* .xcappdata下载到本地目录
  • 在Finder中打开目录
  • 右键单击* .xcappdata,然后选择显示软件包内容
  • 它应该显示类似下图的图像
  • 检查文件的属性并尝试播放

appdata

3。确保AVPlayer

实际上支持该文件格式

要查看受支持的AVPlayer格式,请使用print(AVURLAsset.audiovisualTypes())

参考:
https://developer.apple.com/documentation/avfoundation/avurlasset/1386800-audiovisualtypes


路径,文件和格式都正常后,我就可以使用AVPlayerAVPlayerViewController正常播放了。

let player = AVPlayer(url: localFileUrl)
let playerViewController = AVPlayerViewController()
playerViewController.player = player
self.present(playerViewController, animated: true) {
    playerViewController.player!.play()
}