AVPlayer - 播放带有单独音频的网络视频 URL 而无需先下载文件

AVPlayer - play network video with separate audio URL without downloading the files first

我目前正在尝试使用 AVPlayer 播放视频,该视频具有单独的视频和音频源,因此我将它们组合成一个 AVPlayerItem,如下所示:

let videoAsset = AVURLAsset(url: videoURL)
let audioAsset = AVURLAsset(url: audioURL)
let duration = videoAsset.duration
let composition = AVMutableComposition()

let videoTrack = composition.addMutableTrack(withMediaType: AVMediaType.video, preferredTrackID: kCMPersistentTrackID_Invalid)
try? videoTrack?.insertTimeRange(CMTimeRange(start: kCMTimeZero, duration: duration), of: videoAsset.tracks(withMediaType: .video)[0], at: kCMTimeZero)

let audioTrack = composition.addMutableTrack(withMediaType: .audio, preferredTrackID: kCMPersistentTrackID_Invalid)
try? audioTrack?.insertTimeRange(CMTimeRange(start: kCMTimeZero, duration: duration), of: audioAsset.tracks(withMediaType: .audio)[0], at: kCMTimeZero)

let playerItem = AVPlayerItem(asset: composition)

然而,问题在于此代码 在完成之前通过网络获取视频和音频的整个源代码 。调用 'videoAsset.duration' 或 videoTrack.insertTimeRange 都会触发此网络请求。

是否可以使用 AVPlayer 一起播放这些单独的视频和音频 URL(MP4 视频和 AAC 音频)而无需先下载整个文件?

我注意到在我的 Mac 上,Quicktime Player 在开始播放之前也会获取源文件。但是,使用 VLC 或 IINA 之类的东西不会,播放可以立即开始。

谢谢。

这是因为 MP4 格式。您应该考虑使用另一种更稳定的流媒体格式。

我从未找到使用 AVPlayer 来实现此目的的方法。相反,我使用 VLCKit 支持来自不同来源的播放奴隶。