나는 현재 비디오와 오디오에 대한 별도의 소스를 가지고 AVPlayer
를 사용하여 비디오를 재생하기 위해 노력하고있어, 그래서 다음과 같이 하나의 AVPlayerItem
로 결합 :AVPlayer를 - 먼저 파일을 다운로드하지 않고 별도의 오디오 URL과 함께 플레이 네트워크 비디오
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와 같은 것을 사용하지 않으면 재생이 즉시 시작될 수 있습니다.
감사합니다.
불행히도 내 스트림이 아니지만 별도의 비디오 및 오디오가있는 YouTube의 DASH 스트리밍 형식입니다. – weiran