【问题标题】:Issue with AVPlayer in Swift applicationSwift 应用程序中的 AVPlayer 问题
【发布时间】:2018-02-07 17:36:34
【问题描述】:

我得到一个带有 AVCaptureMovieFileOutput 类的 mp4 视频并将其保存在应用程序的 Documents 文件夹下,但是当我尝试使用 AVPlayer 类播放视频时,我在自定义 UIView 中什么也看不到。代码下方:

player = AVPlayer(url: videoURL)
let playerLayer = AVPlayerLayer(player: player)
playerLayer.frame = videoView.bounds
videoView.layer.addSublayer(playerLayer)
player.play()

我尝试将视频保存在相机胶卷中,我可以正确看到图库下的视频。

编辑:

let path = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]
let url = NSURL(fileURLWithPath: path.absoluteString)
if let pathComponent = url.appendingPathComponent("video.mp4") {
  let filePath = pathComponent.path
  let fileManager = FileManager.default
  if fileManager.fileExists(atPath: filePath) {
     print("FILE AVAILABLE")
  } else {
     print("FILE NOT AVAILABLE")
  }
} else {
  print("FILE PATH NOT AVAILABLE")
}

我尝试了上面的代码,输出是“FILE AVAILABLE”。该文件存储在此路径下:/var/mobile/Containers/Data/Application/27BDD2E1-815B-422B-96A9-E166BE154950/Documents/video.mp4

有人可以帮我找到解决这个问题的方法吗?

【问题讨论】:

  • 你如何构造你传递给AVPlayerURL
  • 我从 'AVCaptureMovieFileOutput' 对象中获得了 'URL'。
  • 我遇到了这个问题,一个hacky的解决方案是将"file://"(如果没有)添加到url的开头(类似于let url = URL(string: "file://\(pathComponent.path)"))。不知道解决它的“正确”方法是什么,但它对我有用
  • @LëshaTurkowski 我尝试了两种模式,但结果是一样的:黑色视图(作为背景颜色就座)。

标签: ios swift video avplayer


【解决方案1】:

尝试使用 Apple 自己的示例 - 使用以下 PlayerView 类:

import AVFoundation
import UIKit

class PlayerView: UIView {
    var player: AVPlayer? {
        get {
            return playerLayer.player
        }
        set {
            playerLayer.player = newValue
        }
    }

    var playerLayer: AVPlayerLayer {
        return layer as! AVPlayerLayer
    }

    // Override UIView property
    override static var layerClass: AnyClass {
        return AVPlayerLayer.self
    }
}

然后将其设置为videoView 属性:

let videoView = PlayerView()

然后使用它:

videoView.player = AVPlayer(url: videoURL)
videoView.player?.play()

【讨论】:

  • @LuigiMargheritti 很好,它适用于其他所有人 - 这一定意味着问题出在您创建 URL 的方式上 - 使用与此相关的代码更新问题
  • 我添加了检查文件可用性的代码。我尝试下载 MP4 文件并将其添加为项目的资源。它没有启动。
猜你喜欢
  • 2016-11-23
  • 1970-01-01
  • 2015-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多