播放来自 url 的视频并验证是否观看了整个视频
Play a video from url and validate if whole video was watched
我有这个json,我必须播放视频
播放视频并验证或检查用户是否观看了整个视频的最佳方式是什么?
视频可能是(Tiktok - Vimeo - Dayli Motion)视频但不是 Youtube 视频
我尝试使用 AVPlayer 但它不起作用:
let videoURL = NSURL(string: "https://vimeo.com/601097657")
let player = AVPlayer(url: videoURL! as URL)
let playerViewController = AVPlayerViewController()
playerViewController.player = player
self.present(playerViewController, animated: true) {
playerViewController.player!.play()
}
我认为可能的解决方案是 webView,但我不确定是否可以验证用户是否观看了整个视频
这对我有用。
class Player: AVPlayerViewController {
init(url: URL) {
super.init(nibName: nil, bundle: nil)
player = AVPlayer(url: url)
player?.addPeriodicTimeObserver(forInterval: CMTimeMakeWithSeconds(1, preferredTimescale: 1), queue: DispatchQueue.main, using: { time in
if self.player?.currentItem?.status == .readyToPlay {
let currenTime = CMTimeGetSeconds((self.player?.currentTime())!)
let secs = Int(currenTime)
print(NSString(format: "%02d:%02d", secs/60, secs%60) as String)
}
})
}
这将打印出他们在几秒钟内观看了多少视频,然后您可以检查这是否等于视频的总时间。
显然你必须实现方法来检查他们是否跳过了部分视频,但这是另一个问题。
查看更多信息Time watched. and
AVPlayer 会在这种情况下发送通知。
只需订阅您需要的通知即可。在你的情况下你需要
NSNotification.Name.AVPlayerItemDidPlayToEndTime
实现这个看起来像这样:
NotificationCenter.default.addObserver(self,
selector: #selector(itemDidPlayToEnd),
name: NSNotification.Name.AVPlayerItemDidPlayToEndTime,
object: nil)
并实现一个用于处理通知的选择器:
@objc private func itemDidPlayToEnd() {
// do smth
}
我有这个json,我必须播放视频
播放视频并验证或检查用户是否观看了整个视频的最佳方式是什么?
视频可能是(Tiktok - Vimeo - Dayli Motion)视频但不是 Youtube 视频
我尝试使用 AVPlayer 但它不起作用:
let videoURL = NSURL(string: "https://vimeo.com/601097657")
let player = AVPlayer(url: videoURL! as URL)
let playerViewController = AVPlayerViewController()
playerViewController.player = player
self.present(playerViewController, animated: true) {
playerViewController.player!.play()
}
我认为可能的解决方案是 webView,但我不确定是否可以验证用户是否观看了整个视频
这对我有用。
class Player: AVPlayerViewController {
init(url: URL) {
super.init(nibName: nil, bundle: nil)
player = AVPlayer(url: url)
player?.addPeriodicTimeObserver(forInterval: CMTimeMakeWithSeconds(1, preferredTimescale: 1), queue: DispatchQueue.main, using: { time in
if self.player?.currentItem?.status == .readyToPlay {
let currenTime = CMTimeGetSeconds((self.player?.currentTime())!)
let secs = Int(currenTime)
print(NSString(format: "%02d:%02d", secs/60, secs%60) as String)
}
})
}
这将打印出他们在几秒钟内观看了多少视频,然后您可以检查这是否等于视频的总时间。
显然你必须实现方法来检查他们是否跳过了部分视频,但这是另一个问题。
查看更多信息Time watched. and
AVPlayer 会在这种情况下发送通知。
只需订阅您需要的通知即可。在你的情况下你需要
NSNotification.Name.AVPlayerItemDidPlayToEndTime
实现这个看起来像这样:
NotificationCenter.default.addObserver(self,
selector: #selector(itemDidPlayToEnd),
name: NSNotification.Name.AVPlayerItemDidPlayToEndTime,
object: nil)
并实现一个用于处理通知的选择器:
@objc private func itemDidPlayToEnd() {
// do smth
}