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

wei*_*ran 10 video ios swift tvos

我目前正在尝试使用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)
Run Code Online (Sandbox Code Playgroud)

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

有没有办法一起AVPlayer播放这些单独的视频和音频URL(MP4视频和AAC音频)而无需先下载整个文件?

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

谢谢.

wei*_*ran 0

我从来没有找到一种方法AVPlayer来实现这一目标。相反,我使用了VLCKit,它支持来自不同来源的播放从属设备。