2015-03-18 2 views
0

hi Я играю с MPMoviePlayerController в swift У меня есть 2 MPMoviePlayerControllers Я предварительно загружаю видео в каждый из них, загрузил второй, который воспроизводится с кнопки в порядке, первый будет воспроизводиться после того, как второй сыграл? если я загружу первый, я получаю звук без картинки, но если сыграю второй, тогда первый будет играть нормально? вот ссылка на мой тестированиеswift multiple MPMoviePlayerController

https://dl.dropboxusercontent.com/u/22927/videotest.zip

спасибо за вашу помощь

import UIKit 
import MediaPlayer 


class ViewController: UIViewController 
{ 
    var moviePlayer : MPMoviePlayerController! 
     var moviePlayer2 : MPMoviePlayerController! 

    @IBOutlet weak var movieview: UIView! 
    @IBOutlet weak var movieview2: UIView! 
    override func viewDidLoad() 
    { 
     super.viewDidLoad() 


     loadMovie() 
     loadMovie2() 

     // Do any additional setup after loading the view, typically from a nib. 
    } 
    @IBAction func play2(sender: AnyObject) 
    { 
     moviePlayer2.play() 
    } 

    @IBAction func playbtn(sender: AnyObject) 
    { 
     moviePlayer.play() 
    } 
    func loadMovie() 
    { 

    let path = NSBundle.mainBundle().pathForResource("video1", ofType:"mp4") 
    let url = NSURL.fileURLWithPath(path!) 
    moviePlayer = MPMoviePlayerController(contentURL: url) 
    moviePlayer.view.frame = CGRect(x: 0, y: 0, width: movieview.frame.size.width, height: movieview.frame.size.height) 
    moviePlayer.view.sizeToFit() 
    moviePlayer.scalingMode = MPMovieScalingMode.Fill 
    moviePlayer.fullscreen = false 
    moviePlayer.controlStyle = MPMovieControlStyle.None 
    moviePlayer.movieSourceType = MPMovieSourceType.File 
    moviePlayer.repeatMode = MPMovieRepeatMode.None 
    moviePlayer.prepareToPlay() 
    moviePlayer.pause() 
    movieview.addSubview(moviePlayer.view) 
    } 
    func loadMovie2() 
    { 


     let path = NSBundle.mainBundle().pathForResource("video2", ofType:"mp4") 
     let url = NSURL.fileURLWithPath(path!) 
     moviePlayer2 = MPMoviePlayerController(contentURL: url) 
     moviePlayer2.view.frame = CGRect(x: 0, y: 0, width: movieview2.frame.size.width, height: movieview2.frame.size.height) 
     moviePlayer2.view.sizeToFit() 
     moviePlayer2.scalingMode = MPMovieScalingMode.Fill 
     moviePlayer2.fullscreen = false 
     moviePlayer2.controlStyle = MPMovieControlStyle.None 
     moviePlayer2.movieSourceType = MPMovieSourceType.File 
     moviePlayer2.repeatMode = MPMovieRepeatMode.None 
     moviePlayer2.prepareToPlay() 
     moviePlayer2.pause() 
     movieview2.addSubview(moviePlayer2.view) 
    } 






} 

ответ

0
import UIKit 
import AVFoundation 
import AssetsLibrary 
import MediaPlayer 
import CoreMedia 

var player : AVPlayer? = nil 
var playerLayer : AVPlayerLayer? = nil 
var asset : AVAsset? = nil 
var playerItem: AVPlayerItem? = nil 

var loadingAssetOne = false 

@IBOutlet weak var movieview: UIView! 

override func viewDidLoad() 
{ 
    super.viewDidLoad() 

    // Do any additional setup after loading the view, typically from a nib. 
} 
@IBAction func play2(sender: AnyObject) 
{ 
    loadingAssetOne = false 
    loadMovie() 
} 

@IBAction func playbtn(sender: AnyObject) 
{ 
    loadingAssetOne = true 
    loadMovie() 
} 
func loadMovie() 
{ 

    if loadingAssetOne 
    { 
    let path = NSBundle.mainBundle().pathForResource("video1", ofType:"mp4") 
    let url = NSURL.fileURLWithPath(path!) 
    asset = AVAsset(URL: url) as AVAsset 

    playerItem = AVPlayerItem(asset: asset!) 
    player = AVPlayer (playerItem: self.playerItem!) 
    playerLayer = AVPlayerLayer(player: self.player) 
    movieview.frame = CGRectMake(38, 57, 220, 106) 
    playerLayer?.frame = movieview.frame 
    movieview.layer.addSublayer(self.playerLayer!) 

    player!.play() 
} 
else 
{ 
    let path = NSBundle.mainBundle().pathForResource("video1", ofType:"mp4") 
    let url = NSURL.fileURLWithPath(path!) 
    asset = AVAsset(URL: url) as AVAsset 

    playerItem = AVPlayerItem(asset: asset!) 
    player = AVPlayer (playerItem: self.playerItem!) 
    playerLayer = AVPlayerLayer(player: self.player) 
    movieview.frame = CGRectMake(38, 206, 220, 106) 
    playerLayer?.frame = movieview.frame 
    movieview.layer.addSublayer(self.playerLayer!) 

    player!.play() 
} 
} 

Для получения более подробной информации, пожалуйста, перейдите по ниже источника

Need to show multiple video using MPMoviePlayerController swift

Смежные вопросы