我试图播放本地视频文件并继续获取以下日志:
[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时。
我对编程很新,任何帮助都会非常感激,因为我无法在线找到有效的解决方案。
答案 0 :(得分:0)
播放从AWS S3下载的文件时,我遇到了同样的问题。
对于错误消息的含义,我没有任何解释。
但就我而言,这是因为文件实际上无法播放。
我没有使用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
为此,我想检查文件在设备上存储后的实际状态。
原来,该文件已“损坏”(例如,复制/下载中断),因此它确实无法播放。
AVPlayer
要查看受支持的AVPlayer格式,请使用print(AVURLAsset.audiovisualTypes())
。
参考:
https://developer.apple.com/documentation/avfoundation/avurlasset/1386800-audiovisualtypes
路径,文件和格式都正常后,我就可以使用AVPlayer
和AVPlayerViewController
正常播放了。
let player = AVPlayer(url: localFileUrl)
let playerViewController = AVPlayerViewController()
playerViewController.player = player
self.present(playerViewController, animated: true) {
playerViewController.player!.play()
}