视频未在 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 请求,因为它们可以使用中间人攻击对用户的设备发起攻击。
我正在尝试使用 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 请求,因为它们可以使用中间人攻击对用户的设备发起攻击。