为什么不播放视频或者我的网址无法正常工作?

问题描述:

我想通过按下单元格内的按钮来播放视频。在我的代码中没有错误,所以我认为每一件事情都是正确设置的,但是当我运行模拟器时视频不能播放。它是URL还是我需要在某处添加更多代码?播放托管在网站上的视频的最佳方式是什么?请提供它的网址?如果是这样,这对我没有效果。为什么不播放视频或者我的网址无法正常工作?

这里的是代码:

import UIKit 
import AVFoundation 
import AVKit 

class VideoPlayerView: UIView { 

override init(frame: CGRect) { 
    super.init(frame: frame) 

    backgroundColor = UIColor.black 


    let urlString = "www.dailymotion.com./video/x1prji_scott-hall-vs-hollywood-hulk-hogan-sport" 

    if let url = URL(string: urlString) { 
    let player = AVPlayer(url: url) 

     let playerLayer = AVPlayerLayer(player: player) 
     self.layer.addSublayer(playerLayer) 
     playerLayer.frame = self.bounds 


     player.play() 
    } 
} 
required init?(coder aDecoder: NSCoder) { 
    fatalError("init(coder:) has not been implemented") 
} 


} 

class DrillsTableViewCell: UITableViewCell { 

@IBOutlet weak var logoImage: UIImageView! 

@IBOutlet weak var drillTitle: UILabel! 


@IBOutlet weak var playButton: UIButton! 
@IBAction func watchButton(_ sender: Any) { 
    print(123) 



     if let keyWindow = UIApplication.shared.keyWindow { 
      let view = UIView(frame: keyWindow.frame) 
      view.backgroundColor = UIColor.white 


      view.frame = CGRect(x: 0.0, y: 0.0, width: keyWindow.frame.width, height: keyWindow.frame.height) 

      let videoPlayerFrame = CGRect(x: 0, y: 0, width: keyWindow.frame.width, height: keyWindow.frame.width * 9/16) 
      let videoPlayerView = VideoPlayerView(frame: videoPlayerFrame) 
      view.addSubview(videoPlayerView) 


      keyWindow.addSubview(view) 
      UIView.animate(withDuration: 0.5, delay: 0, options: .curveEaseOut, animations: { 

        view.frame = keyWindow.frame 

      }, completion: { (completedAnimation) in 
       //possible features implemented later 
       UIApplication.shared.isStatusBarHidden = true 


      }) 



    } 

    } 

} 
+0

我怀疑'AVPlayer'需要一个视频文件(比如'.mp4'或'3gp'),但是你的代码给它一个网页('.html'文件)。您可以使用'webView'来打开网页。 –

由于VC.One说,你正在使用指向一个网页的网址 - 也就是说,一个HTML页面,看起来像这样:

enter image description here

换句话说,您提供了整个HTML5页面,图像,视频,CSS等 - 浏览器需要显示整个页面的信息。

AVPlayer期待到视频资源的URL - 即MP4文件或流式索引文件或清单。

通常情况下,YouTube或DailyMotion等网站希望您在添加视频时加入品牌。 。

对于你的例子,如果你点击分享按钮,你会看到一些嵌入代码,你可以在网页上只是包含这个特定的视频(这是网络而不是本地播放器):

<iframe frameborder="0" width="480" height="270" src="//www.dailymotion.com/embed/video/x1prji" allowfullscreen></iframe><br /><a href="http://www.dailymotion.com/video/x1prji" target="_blank">Scott Hall vs. &quot;Hollywood&quot; Hulk Hogan</a> <i>by <a href="http://www.dailymotion.com/Stinger1981" target="_blank">Stinger1981</a></i> 

还有一个SDK,让你在你的APP-这一个,如果对的ObjectiveC嵌入位DailyMotion视频并没有对斯威夫特也有较新的一个:

+0

因此,为了让我只从网站获取视频文件,而不是整个网站的URL,我怎样才能将代码格式化到播放视频的位置? –

+0

如果它是本机应用程序,您确实想使用SDK。 – Mick