【发布时间】:2014-08-04 00:26:54
【问题描述】:
我一直在尝试让 AVPlayerLayer 在我的应用中播放从 Internet 下载的视频。但是,尽管在线提供了所有帮助,但我似乎无法使其正常工作。代码如下:
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)
这是输出:
文件存在(已在第 12 行证明),但它似乎无法正确加载视频(如第 15 行所示)。
奇怪的是,如果你给它一个远程 URL,它就可以完美地工作。 (要看到这一点,请注释掉第一行并取消注释第二行。)
如果有人可以帮助我,那就太好了。
谢谢!
编辑:抱歉,如果您尝试运行视频,则无法在 Playground 中流式传输视频。您必须将其放入应用程序并在模拟器中运行。
【问题讨论】:
标签: ios video avplayerlayer