iOS AVPlayerLayer 不播放本地视频

标签 ios video avplayerlayer

我一直在尝试让 AVPlayerLayer 在我的应用程序中播放从互联网上下载的视频。然而,尽管有所有在线帮助,我似乎无法让它工作。这是代码:

import UIKit
import CoreGraphics
import AVFoundation
import XCPlayground
XCPExecutionShouldContinueIndefinitely()

var url = NSURL(string: "/Users/MyUsername/Desktop/Video.mp4")
//var url = NSURL(string: "http://download.wavetlan.com/SVV/Media/HTTP/MP4/ConvertedFiles/MediaCoder/MediaCoder_test2_1m10s_XVID_VBR_131kbps_480x320_25fps_AACLCv4_VBR_32kbps_Stereo_24000Hz.mp4")
println(url.absoluteString)

var exists = NSFileManager.defaultManager().fileExistsAtPath(url.absoluteString)
println(exists ? "true" : "false")

var playerAsset = AVURLAsset(URL: url, options: nil)
playerAsset.loadValuesAsynchronouslyForKeys(
    ["duration"],
    completionHandler: {
        var error: NSError?
        switch playerAsset.statusOfValueForKey("duration", error: &error) {
        case AVKeyValueStatus.Loaded:
            println("Duration: \(playerAsset.duration)")
        default:
            println("Failed duration")
        }
    })

var playerItem = AVPlayerItem(asset: playerAsset)

var player =  AVPlayer(playerItem: playerItem)

var movieLayer = AVPlayerLayer(player: player)

movieLayer.backgroundColor = UIColor.redColor().CGColor
movieLayer.frame = CGRect(x: 25, y: 25, width: 100, height: 100)
movieLayer.opacity = 1.0

player.play()

var view = UIView(frame: CGRect(x: 0, y: 0, width: 150, height: 150))
view.layer.addSublayer(movieLayer)

XCPShowView("Movie View", view)

这是输出:

enter image description here

文件存在(第 12 行证明),但它似乎没有正确加载视频(如第 15 行所示)。

奇怪的是,如果你给它一个远程 URL,它就能完美地工作。 (要看到这一点,请注释掉第一行并取消注释第二行。)

如果有人能帮助我,那就太好了。

谢谢!

编辑:抱歉,如果您尝试运行视频,则无法在 playground 中播放视频。您必须将其放入应用程序并在模拟器中运行。

最佳答案

确保 URL 的文件版本前面有“file://”。试试下面的代码:

var url = NSURL(string: "file://Users/MyUsername/Desktop/Video.mp4")

关于iOS AVPlayerLayer 不播放本地视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25110329/

相关文章:

ios - 如何向 AVPlayerLooper 添加平滑的淡入/淡出过渡?

ios - AVPlayerController - 按钮无法全屏工作

ios - 除了使用 Core Animation 感知渲染缓冲区之外,还有其他显示 OpenGL 内容的方法吗?

ios - 如何从 App Store 下载的 ipa 文件中获取团队 ID?

ios - 无法显示 AVCaptureVideoPreviewLayer

html - Safari 9.0 无法播放存储服务器上的mp4视频

ios - html5视频标签: mp4 video not supported on iOS

使用ffmpeg将视频连接在一起时视频不清晰

ios - 在 iOS 中的自定义 View 中播放视频

ios - Swift 3 集合运算减法