我有一个 iOS 应用程序,尝试使用 AVAssetReader 从远程服务器读取音频文件。但是 AVAssetReader 永远不会被创建,在创建过程中它会抛出错误“进程中止”。该代码有什么问题?
顺便说一句:URL/资源可访问且有效。我可以使用 SwiftUI 的 VideoPlayPlayer 在同一个应用程序中播放该文件!
if let url = URL(string: "https://my-server.com/audio.m4a") {
let asset = AVURLAsset(url: url, options: nil)
print(asset) // looks OK
do {
let assetReader = try AVAssetReader(asset: asset)
print(#fileID, #function, assetReader) // never reached
} catch {
print(#fileID, #function, error.localizedDescription) // instead I get error 'Vorgang gestoppt'
}
}
有什么想法吗?
The assets you read may represent file-based media like QuickTime movies or MPEG-4 files, or media that you compose from multiple sources using AVComposition.
和
AVComposition
的头文件文档说
An AVComposition combines media data from multiple local file-based sources in a custom temporal arrangement
所以看起来
AVAssetReader
只能读取基于文件或基于文件的资产的组合,而不能读取远程资产。