繁体   English   中英

暂停/播放AVPlayer的问题

[英]Issues pausing / playing an AVPlayer

我有一个AVPlayer,想在点击时暂停并继续。

我决定进行此操作的方法是在AVPlayer所连接的视图上利用tapGestureRecognizer。

轻触布尔值时,变量didSelect变为true。 当第二次点击时,didSelect变为false。

有趣的是,当我使用

    if didSelect == false {
        player.play()
    }

    if didSelect == true {
        player.pause()
    }

在AVPlayerItemDidPlayToEndTime通知中,它可以正常工作,但只有视频播放完成才能正常工作。 这使我想知道是否有一些通知沿AVPlayerItemIsPlaying行,但是我什么都没找到。

代码如下所示。

    playerView.layer.cornerRadius = playerView.bounds.width * 0.025

    guard let path = Bundle.main.path(forResource: "video", ofType:"mp4") else {
        debugPrint("video.m4v not found")
        return
    }

    let player = AVPlayer(url: URL(fileURLWithPath: path))

    let playerLayer = AVPlayerLayer(player: player)
    playerLayer.frame = playerView.frame
    playerLayer.frame = self.frame

    playerLayer.frame = playerView.bounds
    playerLayer.masksToBounds = true
    playerLayer.cornerRadius = playerView.bounds.width * 0.025

    playerLayer.videoGravity = AVLayerVideoGravityResizeAspectFill


    self.playerView.layer.addSublayer(playerLayer)

        player.isMuted = true
        player.play()




    if didSelect == false {
        player.play()
    }

    if didSelect == true {
        player.pause()
    }

    //looper
    NotificationCenter.default.addObserver(forName: NSNotification.Name.AVPlayerItemDidPlayToEndTime, object: player.currentItem, queue: nil)
    { notification in
        let t1 = CMTimeMake(5, 100)
        player.seek(to: t1)

        player.play()
    }

我遇到了同样的问题,最终创建了一个AVPLayerViewController,将playblack控件嵌入到视频中。

这是修改后的代码,希望对您有所帮助。

import AVKit
import AVFoundation

let avController = AVPlayerViewController()
avController.showsPlaybackControls = true

let player = AVPlayer(url: URL(fileURLWithPath: path))

let playerLayer = AVPlayerLayer(player: player)
playerLayer.frame = playerView.frame


playerLayer.frame = playerView.bounds
playerLayer.masksToBounds = true
playerLayer.cornerRadius = playerView.bounds.width * 0.025

playerLayer.videoGravity = AVLayerVideoGravityResizeAspectFill

avController.player = playerLayer

avController.view.frame = playerView.bounds

self.playerView.addSubview(avController.view)

我创建了对玩家的全球参考

var player: AVPlayer?

并在UITapGestureRecognizer函数中进行了引用,并从那里控制暂停/播放。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM