2014-09-20 22 views
5

Tôi gặp sự cố khi phát video trong một sân chơi nhanh bằng AVPlayer.Phát video với AVPlayer trong Swift Playground?

Đây là mã của tôi.

import UIKit 
import AVFoundation 

var f=CGRectMake(0, 0, 500, 500) 
var url=NSURL(string: "http://s3.amazonaws.com/vids4project/sample.mp4") 
var playerItem = AVPlayerItem(URL: url) 

var v = UIView(frame:f) 
var player=AVPlayer(playerItem: playerItem) 
var playerLayer=AVPlayerLayer(player: player) 

playerLayer.frame=f 
v.layer.addSublayer(playerLayer) 
player.play() 

Mọi đề xuất? Mã không làm gì cả. Kỳ vọng của tôi là biến 'v' sẽ hiển thị video. Có vẻ như nó hoạt động bên ngoài sân chơi khi tôi kết nối người chơi nhạc để xem từ bảng phân cảnh.

Trả lời

6

Hãy thử thêm này ở cuối để giữ cho sân chơi chạy

import XCPlayground 
XCPSetExecutionShouldContinueIndefinitely(continueIndefinitely: true) 
7

Sau đây nên làm việc nếu bạn thả nó vào một sân chơi. Hãy chắc chắn để trao đổi trên các đường dẫn: (Xcode7 GM)

import UIKit 
import AVFoundation 
import XCPlayground 


var f = CGRectMake(0, 0, 500, 500) 

let path = NSBundle.mainBundle().pathForResource("movie", ofType: "m4v")! 
let url = NSURL(fileURLWithPath: path) 

var playerItem = AVPlayerItem(URL: url) 

var v = UIView(frame: f) 
v.backgroundColor = UIColor.blackColor() 
var player = AVPlayer(playerItem: playerItem) 
var playerLayer = AVPlayerLayer(player: player) 

playerLayer.frame = f 
v.layer.addSublayer(playerLayer) 
player.play() 

XCPShowView("View", view: v) 
XCPSetExecutionShouldContinueIndefinitely(true) 
+0

Cảm ơn vì điều này! làm thế nào bạn có thể làm cho nó để nó tiếp tục chơi? –

0

Cảm ơn câu trả lời @Justin Levi Winter và tôi đã cập nhật mã cho Swift3, thử nghiệm với Xcode 8 (Video này đóng trong thời gian, nhưng không phải trên Quick Look):

import AVFoundation 
import PlaygroundSupport 


URLCache.shared = URLCache(memoryCapacity: 0, diskCapacity: 0, diskPath: nil) 
let width = 568 
let height = 320 

let container = UIView(frame: CGRect(x: 0, y: 0, width: width, height: height)) 

PlaygroundPage.current.liveView = container 

PlaygroundPage.current.needsIndefiniteExecution = true 


func playVideo(_ url: URL){ 
    let f=CGRect(x: 0, y: 0, width: width, height: height) 
    let playerItem = AVPlayerItem(url: url) 

    let player=AVPlayer(playerItem: playerItem) 
    let playerLayer=AVPlayerLayer(player: player) 

    playerLayer.frame=f 
    container.layer.addSublayer(playerLayer) 
    PlaygroundPage.current.liveView = container 

    player.play() 
} 

playVideo(URL(string:"http://s3.amazonaws.com/vids4project/sample.mp4")!) 
Các vấn đề liên quan