使用 AVAssetReader 读取远程音频文件中止

问题描述 投票:0回答:1

我有一个 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'
  }
}

有什么想法吗?

ios swift avfoundation avurlasset avassetreader
1个回答
0
投票

AVAssetReader 文档这么说

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
只能读取基于文件或基于文件的资产的组合,而不能读取远程资产。

© www.soinside.com 2019 - 2024. All rights reserved.