[英]How to use AVQueuePlayer?
我想從 iOS 上的遠程服務器播放一組視頻文件。 我不想使用 HLS 播放列表。
我正在嘗試使用 AVQueuePlayer。 這是我初始化它的方法:
let url = URL(string: "https://example.com/video.ts")! // 10 second video
let item = AVPlayerItem(url: url)
let player = AVQueuePlayer(items: [item])
player.play()
當我在屏幕上顯示此播放器時,使用 AVPlayerLayer 和自定義視圖或使用 AVPlayerViewController,它只顯示加載圖標而沒有內容。 當我幾秒鍾后檢查player.items()
數組時,那里什么也沒有。
這是預期的行為嗎? 如何完成我的任務?
好吧,讓我認為代碼是這樣的。
import UIKit
import AVFoundation
class ViewController: UIViewController {
private var player: AVQueuePlayer?
private var playerLayer: AVPlayerLayer?
override func viewDidLoad() {
super.viewDidLoad()
super.view.backgroundColor = UIColor.lightGray
// Video file for demo
let mediaPath = URL(fileURLWithPath:Bundle.main.path(forResource: "ChoppedBipBop", ofType: "m4v")!)
startDemoVideo(videoURL: mediaPath)
}
public func startDemoVideo(videoURL: URL) {
player = AVQueuePlayer()
playerLayer = AVPlayerLayer(player: player)
guard let playerLayer = playerLayer else { fatalError("Error creating player layer") }
playerLayer.frame = view.layer.bounds
view.layer.addSublayer(playerLayer)
let videoAsset = AVURLAsset(url: videoURL)
videoAsset.loadValuesAsynchronously(forKeys: ["duration", "playable"]) {
DispatchQueue.main.async {
let loopItem = AVPlayerItem(asset: videoAsset)
self.player?.insert(loopItem, after: nil)
self.player?.play()
}
}
}
}
編輯:我把我所有用於演示的代碼都放在我有一個本地文件視頻,所以你需要用一個 URL 請求對象替換,如果你想測試你可以用 Swift 創建一個單視圖應用程序項目並在你的 ViewController 中替換它然后構建並運行:)
問題可能出在您的媒體上。 iOS 上的AVPlayer
不支持直接播放.ts
文件。 這些必須包含在 HLS 播放列表中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.