如何在 ViewController 中将 AVPlayer 添加到 UIView
Posted
技术标签:
【中文标题】如何在 ViewController 中将 AVPlayer 添加到 UIView【英文标题】:how to add AVPlayer to UIView in ViewController 【发布时间】:2016-06-24 10:27:35 【问题描述】:我是UIViewController
我有一个到UIView
的出口,我想在那里使用外部链接显示视频。在这种情况下,我尝试创建 AVPlayerLayer
并将其添加到我的 UIView
插座。
我的代码是这样的:
class VievController: UICollectionViewController
@IBOutlet weak var playerView: UIView!
override func viewDidLoad()
let playerItem = AVPlayerItem(URL: NSURL(string: ("https://www.youtube.com/watch?v=_yE_XgoWBso"))!)
let avPlayer = AVPlayer(playerItem: playerItem)
let playerLayer = AVPlayerLayer(player: avPlayer)
playerLayer.frame = playerView.bounds
playerLayer.videoGravity = AVLayerVideoGravityResizeAspectFill
playerView.layer.addSublayer(playerLayer)
avPlayer.play()
//end class
我不知道为什么在我的UIVIew
插座上看不到视频 - 什么也没发生。你有什么建议我应该解决什么?
【问题讨论】:
只需实现 AVPlayerViewControllerDelegate 就可以了 【参考方案1】:Below code help you to solve the issue
Adjust the frame according to your needs
- (void)viewDidLoad
[super viewDidLoad];
NSError *setCategoryError = nil;
[[AVAudiosession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error: &setCategoryError];
NSString *urlString=[NSString stringWithFormat:@"%@",@"http://www.youtube.com/watch?v=zPP6lXaL7KA&feature=youtube_gdata_player"];
AVAsset *asset = [AVAsset assetWithURL:[NSURL urlWithString:urlString]];
avPlayerItem = [[AVPlayerItem alloc]initWithAsset:asset];
self.songPlayer = [AVPlayer playerWithPlayerItem:avPlayerItem];
self.avPlayerLayer = [AVPlayerLayer playerLayerWithPlayer: self.songPlayer];
self.avPlayerLayer.frame = self.view.layer.bounds;
UIView *newView = [[UIView alloc] initWithFrame:self.view.bounds];
[newView.layer addSublayer:avPlayerLayer];
[self.view addSubview:newView];
[ self.songPlayer play];
【讨论】:
您的答案可能是正确的,但该问题专门要求提供 Swift 代码示例,而不是 Objective-C。请编辑。谢谢!【参考方案2】:很遗憾,您无法使用 AVPlayer 播放 YouTube、Vimeo 等。 为此,您必须使用 UIWebView。
【讨论】:
【参考方案3】: let url = NSBundle.mainBundle().URLForResource("ding.mp3", withExtension: nil)
guard let newURL = url else
print("Could not find file:")
return
do
backgroundMusicPlayer = try AVAudioPlayer(contentsOfURL: newURL)
backgroundMusicPlayer.numberOfLoops = 0
backgroundMusicPlayer.prepareToPlay()
backgroundMusicPlayer.play()
catch let error as NSError
//print(error.description)
你只需要导入 avfoundation 框架然后使用上面的代码
【讨论】:
我询问了关于从外部链接而不是从包中加载视频以上是关于如何在 ViewController 中将 AVPlayer 添加到 UIView的主要内容,如果未能解决你的问题,请参考以下文章
如何在 ViewController 中将 AVPlayer 添加到 UIView
如何在 Swift(Cocoa 应用程序)中将数据传递给以前的 ViewController
如何在 iOS Swift 中将数据数组回调到另一个 viewController
如何在 Swift 3.0 中将 TableViewCell 值传递给新的 ViewController?
在 SWIFT 语言的 Storyboard 中将值从一个 ViewController 传递到另一个 ViewController