简体   繁体   English

带有 avplayerviewcontroller 播放控件的 AVPlayer

[英]AVPlayer with playback controls of avplayerviewcontroller

I am putting n avplayer inside of a view controller to customize some other elements of the view controller but I still want the playback and scrubbing controls used in AVPlayerViewController.我将 n avplayer 放在视图控制器中以自定义视图控制器的其他一些元素,但我仍然希望在 AVPlayerViewController 中使用播放和擦洗控件。 Is there a way to enable these controls for the Avplayer when I am not using AvPlayerViewcontroller?当我不使用 AvPlayerViewcontroller 时,有没有办法为 Avplayer 启用这些控件?

No. The usual solution (explicitly advised by Apple) is to use the AVPlayerViewController as an embedded view controller - ie, make your view controller a custom parent view controller and the AVPlayerViewController its child, and now you can place its view (the movie and the controls) inside your view as a subview in good order.不。通常的解决方案(Apple 明确建议)是使用 AVPlayerViewController 作为嵌入式视图控制器 - 即,使您的视图控制器成为自定义父视图控制器,而 AVPlayerViewController 作为其子视图控制器,现在您可以放置​​它的视图(电影和控件)在您的视图中作为一个有序的子视图。 Example ( self is your view controller):示例( self是您的视图控制器):

let url = // whatever
let player = AVPlayer(URL:url)
let avPlayerViewController = AVPlayerViewController()
avPlayerViewController.player = player
avPlayerViewController.view.frame = // whatever
self.addChild(avPlayerViewController)
self.view.addSubview(avPlayerViewController.view)
avPlayerViewController.didMove(toParent: self)

To update this post with Swift 5 you can try this code:要使用 Swift 5 更新这篇文章,您可以尝试以下代码:

let videoURL = URL(string: "https://your_video_in_internet.mp4")
let player = AVPlayer(url: videoUrl)
let playerViewController: AVPlayerViewController!
playerViewController = AVPlayerViewController()
playerViewController.view.frame = YOUR_FRAME_OR_EMBED_IN_STORYBOARD
playerViewController.player = player
playerViewController.showsPlaybackControls = true
playerViewController.videoGravity = .resizeAspectFill
YOUR_FRAME_OR_EMBED_IN_STORYBOARD.addSubview(playerViewController.view)
playerViewController.player!.play()  
let player = AVPlayer(url: url)    
let playerViewController = AVPlayerViewController()
playerViewController.view.frame = self.videoPlayerView.bounds
playerViewController.player = player
self.addChild(playerViewController)
self.videoPlayerView.addSubview(playerViewController.view)
playerViewController.didMove(toParent: self)

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

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