首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用AVQueuePlayer?

如何使用AVQueuePlayer?
EN

Stack Overflow用户
提问于 2018-02-09 21:41:11
回答 2查看 4.7K关注 0票数 0

我想在iOS上播放远程服务器上的一组视频文件。我不想使用HLS播放列表。

我正在尝试使用AVQueuePlayer。下面是我初始化它的方法:

代码语言:javascript
复制
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()数组时,那里什么也没有。

这是预期的行为吗?如何完成我的任务?

EN

回答 2

Stack Overflow用户

发布于 2018-02-10 06:21:11

好吧,让我想一下代码是这样的。

代码语言:javascript
复制
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 request对象来替换,如果你想测试,你可以用Swift创建一个单独的View App项目,并在你的ViewController中替换它,然后构建并运行:)

票数 1
EN

Stack Overflow用户

发布于 2018-03-27 21:59:37

问题可能与您的媒体有关。iOS上的AVPlayer不支持直接播放.ts文件。这些必须包含在HLS播放列表中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48707206

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档