我参与了两天多 . 我无法得到任何解决方案 .
我有要求是视频应该播放肖像内联,全屏,风景 . 我的问题是如何识别视频正在播放全屏风景或人像 . 我已经实现了 viewWillTransitionToSize
方法 . 但 AVPlayer
有全屏箭头按钮 . 我如何识别用户点击该选项 .
第二个要求,一旦视频完成,就可以在视频节目重放或下一个或上一个选项之上创建视图 .
这是我的代码;
if videoCellVal == nil {
videoCellVal = videoCell
comPlayerControl = AVPlayerViewController()
if let player = comPlayerControl {
let videoURL: String = "http://cdnapi.kaltura.com/p/11/sp/11/playManifest/entryId/"+selectedSubmission.transcodeRefId+"/format/applehttp/protocol/http/a.m3u8"
let playerItem = AVPlayerItem(URL: NSURL(string: videoURL)! )
commmentPlayer = AVPlayer(playerItem: playerItem)
player.player = commmentPlayer
player.view.frame = videoCell.frame
player.view.sizeToFit()
player.showsPlaybackControls = true
NSNotificationCenter.defaultCenter().addObserver(self, selector: "playerDidFinishPlaying:",
name: AVPlayerItemDidPlayToEndTimeNotification, object: playerItem)
videoCell.addSubview(player.view)
}
}
func playerDidFinishPlaying(note: NSNotification) {
print("Video Finished")
let DynamicView=UIView(frame: CGRectMake(100, 200, 100, 100))
DynamicView.backgroundColor=UIColor.greenColor()
DynamicView.layer.cornerRadius=25
DynamicView.layer.borderWidth=2
DynamicView.bringSubviewToFront(self.view)
self.view.addSubview(DynamicView)
}
2 回答
对于检测全屏或视频大小更改,您可以使用KVO作为AVPlayerViewController,代码可以是这样的:
在
change
字典中,您可以检查视频帧/边界更改的更改对于您提到的轮换,您可能必须使用
viewWillTransitionToSize
或UIDeviceOrientationDidChangeNotification
通知,或者您可以使用UIDevice.currentDevice().orientation
检查当前方向,因为我找不到任何可以检查正在进行的视频中的更改的方法如果您需要检测视频方向,您可以查看此链接:https://stackoverflow.com/a/25833399/4557505,以及该链接中的其他答案
要重复播放视频,您可以在代码中将时间设置为零:
在项目结尾处播放队列中的项目,您可以尝试使用
commmentQueuePlayer.advanceToNextItem()
您可以尝试在
contentOverlayView
中放置重播,下一个,上一个按钮Update
对于
observeValueForKeyPath
,您可以尝试这样的事情如果您查看
AVPlayer
的AVPlayerItem
,那么它的videoComposition
设置为renderSize
- 您可以检查renderSize
width
和height
以确定您是横向还是纵向 .