URL 为什么不能在真实设备上播放视频?
Why doesn't play video in real device by URL?
我正在通过图像选择器控制器选择一个视频,然后将其保存在文档目录中。我已经保存了文件名。然后,当我尝试通过 url 播放此视频时,设备无法播放,但在模拟器中播放效果非常好。
let fm = FileManager.default
let docsurl = try! fm.url(for:.documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false)
let path = docsurl.appendingPathComponent(contentName[indexPath.row]+extFull)
这里,path=file:///var/mobile/Containers/Data/Application/D9878CE7-0EE5-4F67-8F3F-48772E8BBCCC/Documents/2017-11-28_18:57:25.3620.MOV
那我试试玩这个。代码如下:
playVideo(filePath: path)
var videoPlayer: AVPlayer?
var avPlayerViewController: AVPlayerViewController?
var videoView: UIView!
func playVideo(filePath: URL) {
self.videoPlayer = AVPlayer(url: filePath)
self.avPlayerViewController = AVPlayerViewController()
self.avPlayerViewController?.player = self.videoPlayer
videoView = UIView(frame: CGRect(x: 0, y: 0, width: self.view.frame.width, height: self.view.frame.height-53))
self.view.addSubview(videoView)
avPlayerViewController?.view.frame = videoView.frame
self.addChildViewController(avPlayerViewController!)
self.view.addSubview((avPlayerViewController?.view)!)
}
avPlayerViewController 出现了,但为什么视频无法在设备中播放?
您必须在播放视频前检查文件是否存在于路径,
func playVideo(filePath: URL) {
let fileManager = FileManager.default
if fileManager.fileExists(atPath: URL) {
print("FILE AVAILABLE")
self.videoPlayer = AVPlayer(url: filePath)
self.avPlayerViewController = AVPlayerViewController()
self.avPlayerViewController?.player = self.videoPlayer
videoView = UIView(frame: CGRect(x: 0, y: 0, width: self.view.frame.width, height: self.view.frame.height-53))
self.view.addSubview(videoView)
avPlayerViewController?.view.frame = videoView.frame
self.addChildViewController(avPlayerViewController!)
self.view.addSubview((avPlayerViewController?.view)!)
} else {
print("FILE NOT AVAILABLE")
}
我正在通过图像选择器控制器选择一个视频,然后将其保存在文档目录中。我已经保存了文件名。然后,当我尝试通过 url 播放此视频时,设备无法播放,但在模拟器中播放效果非常好。
let fm = FileManager.default
let docsurl = try! fm.url(for:.documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false)
let path = docsurl.appendingPathComponent(contentName[indexPath.row]+extFull)
这里,path=file:///var/mobile/Containers/Data/Application/D9878CE7-0EE5-4F67-8F3F-48772E8BBCCC/Documents/2017-11-28_18:57:25.3620.MOV
那我试试玩这个。代码如下:
playVideo(filePath: path)
var videoPlayer: AVPlayer?
var avPlayerViewController: AVPlayerViewController?
var videoView: UIView!
func playVideo(filePath: URL) {
self.videoPlayer = AVPlayer(url: filePath)
self.avPlayerViewController = AVPlayerViewController()
self.avPlayerViewController?.player = self.videoPlayer
videoView = UIView(frame: CGRect(x: 0, y: 0, width: self.view.frame.width, height: self.view.frame.height-53))
self.view.addSubview(videoView)
avPlayerViewController?.view.frame = videoView.frame
self.addChildViewController(avPlayerViewController!)
self.view.addSubview((avPlayerViewController?.view)!)
}
avPlayerViewController 出现了,但为什么视频无法在设备中播放?
您必须在播放视频前检查文件是否存在于路径,
func playVideo(filePath: URL) {
let fileManager = FileManager.default
if fileManager.fileExists(atPath: URL) {
print("FILE AVAILABLE")
self.videoPlayer = AVPlayer(url: filePath)
self.avPlayerViewController = AVPlayerViewController()
self.avPlayerViewController?.player = self.videoPlayer
videoView = UIView(frame: CGRect(x: 0, y: 0, width: self.view.frame.width, height: self.view.frame.height-53))
self.view.addSubview(videoView)
avPlayerViewController?.view.frame = videoView.frame
self.addChildViewController(avPlayerViewController!)
self.view.addSubview((avPlayerViewController?.view)!)
} else {
print("FILE NOT AVAILABLE")
}