如何在Swift中使用AV Kit Player View Controller播放视频?
override func viewDidLoad() {
super.viewDidLoad()
let videoURLWithPath = "http://****/5.m3u8"
let videoURL = NSURL(string: videoURLWithPath)
playerViewController = AVPlayerViewController()
dispatch_async(dispatch_get_main_queue()) {
self.playerViewController?.player = AVPlayer.playerWithURL(videoURL) as AVPlayer
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个简短的mp4视频文件,我已添加到我当前的Xcode6 Beta项目中.
我想在我的应用中播放视频.
经过几个小时的搜索,我找不到任何远程帮助.有没有办法用Swift完成这个或你必须使用Objective-C?我可以指出正确的方向吗?我不能成为唯一想知道这一点的人.
我环顾四周,但我找不到代表协议AVPlayer class.是什么赋予了?
我正在使用它的子类,AVQueuePlayer来播放一个数组AVPlayerItems,每个数组都从一个URL加载.有什么方法可以在歌曲播放完毕后调用方法吗?特别是在队列的最后?
如果那是不可能的,那么在缓冲之后,当歌曲STARTS播放时,我有什么方法可以调用方法吗?我正试图在那里获得一个加载图标,但它会在音乐实际开始之前关闭图标,即使它是在[audioPlayer play]动作之后.
I'm trying to set up an AVPlayerViewController completely through storyboards by embedding in a separate View Controller.
Steps:
我正在尝试从捆绑目录播放视频,但我收到此错误:
视频[29054:2968406] [MediaRemote] [AVOutputContext]警告:AVF上下文不可用于sharedAudioPresentationContex
这是我的实施:
import UIKit
import AVKit
import AVFoundation
class ViewController: UIViewController {
var playerVC = AVPlayerViewController()
var playerView = AVPlayer()
override func viewDidLoad() {
super.viewDidLoad()
self.playVideo()
}
func playVideo() {
let documentsDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).last! as NSURL
guard let fileURL = documentsDirectory.appendingPathComponent("video.mp4") else{ return }
self.playerView = AVPlayer(url:fileURL as URL)
self.playerVC.player = playerView
self.view.addSubview(self.playerVC.view)
self.addChildViewController(self.playerVC)
playerView.play()
}
Run Code Online (Sandbox Code Playgroud)
你们中的任何人都知道我做错了什么?我真的很感激你的帮助.
当应用程序退出全屏并且屏幕用户界面滑到顶部时,我在控制台中收到错误.
错误:
- [AVPlayerViewController exitFullScreenAnimated:completionHandler:]失败并显示错误视图需要先加载才能调用 - [AVPlayerViewController(0x1028b5000)exitFullScreenAnimated:completionHandler:]!
应用程序在UIWebView中以嵌入式HTML格式播放youtube视频.
码:
var webView = UIWebView(frame: self.view.frame)
webView.allowsInlineMediaPlayback = true
webView.mediaPlaybackRequiresUserAction = false
embededHTML = "<html><body style='margin:0px;padding:0px;'><script type='text/javascript' src='http://www.youtube.com/iframe_api'></script><script type='text/javascript'>function onYouTubeIframeAPIReady(){ytplayer=new YT.Player('playerId',{events:{onReady:onPlayerReady}})}function onPlayerReady(a){a.target.playVideo();}</script><iframe id='playerId' type='text/html' width='\(self.view.frame.size.width)' height=\(frameHeight) src='http://www.youtube.com/embed/\(youtube_code)?enablejsapi=1&rel=0&playsinline=1&autoplay=1&showinfo=0&modestbranding=0' frameborder='0'></body></html>"
@IBAction func playVideo(_ sender: Any) {
if let webView = webView {
self.view.bringSubview(toFront: webView)
webView.scrollView.isScrollEnabled = false;
webView.scrollView.bounces = false;
// Load your webView with the HTML we just set up
webView.loadHTMLString(embededHTML, baseURL: Bundle.main.bundleURL)
}
}
Run Code Online (Sandbox Code Playgroud)
任何帮助高度赞赏.谢谢.
我将n avplayer放在视图控制器中以自定义视图控制器的其他一些元素,但我仍然想要AVPlayerViewController中使用的播放和清理控件.当我不使用AvPlayerViewcontroller时,有没有办法为Avplayer启用这些控件?
我有一个UIViewcontroller,它包含一个带AVPlayer的AVPlayerViewController.我想为AVPlayerViewController启用旋转(当视频在全屏时)并禁用UIViewController的任何旋转.如何在我的应用中为视频(全屏)启用旋转?
我想在AVPlayerViewController中播放本地视频,但没有找到完成按钮的点击事件.
我的视频可以在AVPlayerViewController中播放但我没有找到下一个按钮,上一个按钮和完成按钮点击事件.
我在一个应用程序上编码,用户可以观看各种各样的视频.我在按钮点击时全屏打开视频,用户可以使用播放控件来调整窗口大小.我遇到的问题是当用户通过热点共享他的互联网时,应用程序顶部有一个蓝色条.此时调整窗口大小会导致AVKit框架崩溃(我相信).使用Swift 2.3,Xcode 7.3.1.我的手机,iPhone 6s,使用iOS 10,我也尝试过iOS 9 iPhone 6 Plus,同样的问题.
碰撞:
Terminating app due to uncaught exception 'UIViewControllerHierarchyInconsistency', reason: 'child view controller:<AVFullScreenPlaybackControlsViewController: 0x102933000> should have parent view controller:<AVPlayerViewController: 0x10212d800> but actual parent is:<AVFullScreenViewController: 0x10884d900>'
Run Code Online (Sandbox Code Playgroud)
我的代码:
private let playerController = AVPlayerViewController()
private var player: AVPlayer!
private func playVideo(media: Media) {
player = AVPlayer(URL: NSURL(string: media.url)!)
playerController.player = player
presentViewController(playerController, animated: true, completion: {
self.playerController.player?.play()
self.playerController.delegate = self
})
}
Run Code Online (Sandbox Code Playgroud)
如果我不在我的手机上共享我的互联网(因此没有蓝色条),那么它工作正常,没有任何问题.有人设法隐藏这个蓝色条,或遇到类似的问题?
ios ×9
avplayer ×6
swift ×6
objective-c ×4
avfoundation ×2
fullscreen ×2
apple-tv ×1
autolayout ×1
avkit ×1
avplayerview ×1
hotspot ×1
iphone ×1
tvos ×1
xcode ×1