视频未在 AVPlayer 上播放

Video is not playing on AVPlayer

我正在尝试使用 AVPlayer 播放来自 url 的视频。

但是视频没有播放。 因为视频 url 是“不安全的”(Not Secure)。 但我已经允许 NSAppTransportSecurity

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

此处viewController代码

  import AVKit
  import AVFoundation

  let playerViewController = AVPlayerViewController()


  let url =  Constants.API.imageURL + (GlobalVariables.sharedManager.userDetailObj.UserDetail?.intro_video_path)! //which is "http://23.97.79.216:8000/api/media/intro-video/video_file_2rg3tio.mp4"

  //let videoURL = URL(string: "http://jplayer.org/video/m4v/Finding_Nemo_Teaser.m4v") //testing unsecure(Not Secure) url which is working.
  let videoURL = URL(string: url)
  let player = AVPlayer(url: videoURL!)
  playerViewController.player = player
  self.present(playerViewController, animated: true) {
     self.playerViewController.player!.play()
  }

正如我在代码中提到的那样 "http://jplayer.org/video/m4v/Finding_Nemo_Teaser.m4v" 是不安全的(不安全)但它工作正常。

但是我的 url "http://23.97.79.216:8000/api/media/intro-video/video_file_2rg3tio.mp4" 不工作。

有什么方法可以播放不安全(不安全)的视频url?

您的问题似乎是 link 无法升级到 https。

为什么:

出于安全原因,

iOS 不允许 http url 请求。 (https://developer.apple.com/documentation/security/preventing_insecure_network_connections)

这意味着如果您尝试访问使用 http 而不是 https 的资源,iOS 将尝试升级它自动到 https。如果您转到浏览器中的第二个 link,并添加 https 传输协议,link 仍然有效。该服务器可以处理 SSL 连接(这是安全的)。但是,您的第一个 link 无法升级到 https,并且总是会失败。

解决方案

如果此服务器(第一个已损坏,link)是您自己的,请添加 SSL 安全性。这很容易解决。如果您无权访问它,则需要下载视频并将其托管在具有 SSL 安全性的地方。

解决方法

遗憾的是,除了自己托管之外,没有任何解决方法。 Apple 根本不允许 http 请求,因为它们可以使用中间人攻击对用户的设备发起攻击。