0

I have tvOS app and i try to show video from internet. But i have problem with buffering. I simulate situation when my internet connection was lost or slow. In this case time keeps going but video freeze. I have next code:

guard let urlToVideo = stream?.urls.first else { return }
guard let videoUrl = URL(string: urlToVideo) else { return }

let composition = AVMutableComposition()
let videoAsset = AVURLAsset(url: videoUrl)

let videoTrack = composition.addMutableTrack(withMediaType: .video, preferredTrackID: kCMPersistentTrackID_Invalid)
let audioTrack = composition.addMutableTrack(withMediaType: .audio, preferredTrackID: kCMPersistentTrackID_Invalid)
do{
    guard videoAsset.tracks(withMediaType: .video).count > 0 else {
        return
    }

    try? videoTrack?.insertTimeRange(CMTimeRangeMake(start: CMTime.zero, duration: videoAsset.duration),
                                        of: videoAsset.tracks(withMediaType: .video)[0],
                                        at: CMTime.zero)

    guard videoAsset.tracks(withMediaType: .audio).count > 0 else {
        return
    }
    try? audioTrack?.insertTimeRange(CMTimeRangeMake(start: CMTime.zero, duration: videoAsset.duration),
                                        of: videoAsset.tracks(withMediaType: .audio)[0],
                                        at: CMTime.zero)
}

let item = AVPlayerItem(asset: composition)
player = AVPlayer(playerItem: item)
player?.automaticallyWaitsToMinimizeStalling = true
player?.play()

in this case automaticallyWaitsToMinimizeStalling dont work, video freeze but time keeps going.
But if i change
let item = AVPlayerItem(asset: composition)
to
let item = AVPlayerItem(asset: videoAsset)
all great, player enable pause, download data, after that continue to play

But i need use AVMutableComposition because i add external sub next. please help me, why automaticallyWaitsToMinimizeStalling dont work in my case with AVMutableComposition?

WizaXxX
  • 1
  • 1

0 Answers0