2

我正在使用AVPlayer从 url 播放视频。

func playVideoFromUrl(urlString: String){

        let videoURL = URL(string: urlString)
        let player = AVPlayer(url: videoURL!)
        let playerViewController = AVPlayerViewController()
        playerViewController.player = player

        let delegate : AppDelegate = UIApplication.shared.delegate as! AppDelegate
        delegate.window?.rootViewController?.present(playerViewController, animated: true) {
            playerViewController.player!.play()
        }
    }

: url of video-“ http://gsn-input-dev.s3.amazonaws.com/public/video/00229/9229d4ad2a0c547e7bfa51e3fbef806f.mp4

我在控制台没有收到任何警告。下面是模拟器的截图。我做错了什么?

在此处输入图像描述

4

3 回答 3

5

我已经完成了你想做的事情。这是我的方法:首先导入 AVFoundation、AVKit(我相信你有)然后我已经像这样配置了我的视图控制器

   @IBOutlet weak var avPlayerView: UIView! // drag a UIView to view controller
   var videoPlayer = AVPlayer()
   var avPlayerViewController = AVPlayerViewController()

   override func viewDidLoad() {
     super.viewDidLoad()

     let videoURL = URL(string: "http://gsn-input-dev.s3.amazonaws.com/public/video/00229/9229d4ad2a0c547e7bfa51e3fbef806f.mp4")

    self.playVideo(url: videoURL!)

}

playVideo 功能配置如下

  func playVideo(url: URL) {
       self.videoPlayer = AVPlayer(url: url)
       self.avPlayerViewController = AVPlayerViewController()
       self.avPlayerViewController.player = self.videoPlayer
       avPlayerViewController.view.frame = avPlayerView.frame
       self.addChildViewController(avPlayerViewController)
       self.view.addSubview((avPlayerViewController.view)!)

   }

打开 info.plist 作为源代码在此处输入图像描述

然后将其添加到 info.plist

   <key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

屏幕截图如下

在此处输入图像描述

于 2017-10-09T06:43:07.597 回答
4

您是否尝试在 info.plist 文件中添加任意加载标志,因为我看到 url 是HTTP url 并且为了使HTTP url 工作,我们需要通过 info.plist 在应用程序传输安全中指定它,如下所示

在此处输入图像描述

请尝试这样做,因为视频与您的代码完美配合。

阅读以下文档以获取有关应用程序传输安全性的更多信息

我希望这能帮到您 :)

于 2017-09-11T05:45:55.517 回答
0

我最近发现运行 iOS 14 的设备AVPlayer无法播放.mp4文件。适用的兼容视频格式AVPlayer.mov.

于 2020-12-16T15:54:36.830 回答