如何添加点击手势来播放视频播放器
Posted
技术标签:
【中文标题】如何添加点击手势来播放视频播放器【英文标题】:how add tap gesture to play a video player 【发布时间】:2018-05-15 14:29:43 【问题描述】:videoPlayer = (AVPlayer.init(url: url as URL) as AVPlayer?)!
videoPlayer.actionAtItemEnd = .none
var videoLayer = AVPlayerLayer(player: videoPlayer)
videoLayer.frame = CGRect(x: 0, y: 0, width: (pickVideo?.frame.width)!, height: (pickVideo?.frame.height)!)
pickVideo?.layer.addSublayer(videoLayer)
videoLayer.addSublayer((closeImage?.layer)!)
let tapGueturePlayVideo = UITapGestureRecognizer(target: self, action: #selector(playVideo(sender:)))
tapGueturePlayVideo.delegate = self
tapGueturePlayVideo.numberOfTapsRequired = 1
pickVideo?.addGestureRecognizer(tapGueturePlayVideo)
pickVideo?.isUserInteractionEnabled = true
我在这里为 Tapgesture 创建了函数:
func playVideo(sender: UITapGestureRecognizer)
self.videoPlayer.play()
如果长按并点按视频播放流畅..如果我点按屏幕侧面并尝试再次播放它不播放.. 点按时断点调用但玩家不玩
【问题讨论】:
【参考方案1】:您必须使用 prepareToPlay 将 AVPlayer 设置回流的开头并将 currentPlaybackTime 设置为 0。
AVPlayer doesn't play more than one time
videoPlayer.currentPlaybackTime = 0
videoPlayer.prepareToPlay()
【讨论】:
【参考方案2】:最好的方法是使用AVPlayerViewController
和contentOverlayView
像这样:
override func viewDidLoad()
super.viewDidLoad()
let videoURL = URL(string: "https://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4")!
videoPlayer = AVPlayer(url: videoURL)
let avPlayerController = AVPlayerViewController()
avPlayerController.player = videoPlayer
avPlayerController.view.frame = CGRect(x: 100, y: 50, width:200, height: 300)
avPlayerController.showsPlaybackControls = false
self.view.addSubview(avPlayerController.view)
let tapGesture:UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(ViewController.playVideo(sender:)))
tapGesture.numberOfTapsRequired = 1
avPlayerController.contentOverlayView?.addGestureRecognizer(tapGesture)
@objc func playVideo(sender: UITapGestureRecognizer)
self.videoPlayer?.play()
【讨论】:
使用未解决的标识符“AVPlayerViewController”面临此问题 只需添加import AVKit
我在一个示例项目中尝试了代码,单击播放视频...但是当我再次点击时,视频无法播放!如何解决此问题以上是关于如何添加点击手势来播放视频播放器的主要内容,如果未能解决你的问题,请参考以下文章