【问题标题】:how to add AVPlayer to UIView in ViewController如何在 ViewController 中将 AVPlayer 添加到 UIView
【发布时间】: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 就可以了

标签: ios swift uiview avplayer avplayerlayer


【解决方案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 框架然后使用上面的代码

    【讨论】:

    • 我询问了关于从外部链接而不是从包中加载视频
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-23
    • 2023-03-21
    相关资源
    最近更新 更多