iOS - AVPlayer 不播放 mov 文件
iOS - AVPlayer doesn't play mov file
我有以下代码,它不适用于 mov 文件,但它适用于我使用 MP4 文件。
关于 mov 文件的重要一点是因为它有一个 alpha 通道。
我乐于寻找像 mov 文件一样为我提供 alpha 通道的解决方案。
class MovViewController: UIViewController {
var avPlayer: AVPlayer!
override func viewDidLoad() {
super.viewDidLoad()
let filepath: String? = Bundle.main.path(forResource: "animacion_logo", ofType: "mov")
let fileURL = URL.init(fileURLWithPath: filepath!)
let player = AVPlayer(url: fileURL)
let playerLayer = AVPlayerLayer(player: player)
playerLayer.frame = self.view.bounds
// self.view.layer.addSublayer(playerLayer)
self.view.layer.insertSublayer(playerLayer, at: 0)
player.play()
}
}
这是原始的 mov 文件:https://ufile.io/jcbfn
AVPlayer 不支持带 alpha 的 ProRes 格式:
Using AVPlayer to view transparent video
但是有一些选择。看看这个 Medium post:
https://medium.com/@quentinfasquel/ios-transparent-video-with-coreimage-52cfb2544d54
您可以在 iOS 上播放 H.264 或 H.265(在较新的 iOS 硬件上),但这些格式不支持 alpha 通道。没有对 alpha 通道的内置支持,您需要使用第 3 方库,另一个选项是一系列 PNG 图像或解码 WebM,但这两个选项都会消耗大量 CPU 资源。
我有以下代码,它不适用于 mov 文件,但它适用于我使用 MP4 文件。 关于 mov 文件的重要一点是因为它有一个 alpha 通道。 我乐于寻找像 mov 文件一样为我提供 alpha 通道的解决方案。
class MovViewController: UIViewController {
var avPlayer: AVPlayer!
override func viewDidLoad() {
super.viewDidLoad()
let filepath: String? = Bundle.main.path(forResource: "animacion_logo", ofType: "mov")
let fileURL = URL.init(fileURLWithPath: filepath!)
let player = AVPlayer(url: fileURL)
let playerLayer = AVPlayerLayer(player: player)
playerLayer.frame = self.view.bounds
// self.view.layer.addSublayer(playerLayer)
self.view.layer.insertSublayer(playerLayer, at: 0)
player.play()
}
}
这是原始的 mov 文件:https://ufile.io/jcbfn
AVPlayer 不支持带 alpha 的 ProRes 格式: Using AVPlayer to view transparent video
但是有一些选择。看看这个 Medium post: https://medium.com/@quentinfasquel/ios-transparent-video-with-coreimage-52cfb2544d54
您可以在 iOS 上播放 H.264 或 H.265(在较新的 iOS 硬件上),但这些格式不支持 alpha 通道。没有对 alpha 通道的内置支持,您需要使用第 3 方库,另一个选项是一系列 PNG 图像或解码 WebM,但这两个选项都会消耗大量 CPU 资源。