2014-08-27 5 views
1

Я видел много тем и всегда та же проблема: она вообще не отображается.MPMoviePlayerController не отображает видео

Так, потому что я немного упрямый, я хочу это более

Это мой код:

let moviePath = NSBundle.mainBundle().pathForResource("back", ofType:"mp4"); 
println(moviePath!) 
let movieURL = NSURL.fileURLWithPath(moviePath!) 
let theMoviePlayer = MPMoviePlayerController(contentURL: movieURL!) 
self.view.addSubview(theMoviePlayer.view) 
theMoviePlayer.prepareToPlay() 
theMoviePlayer.shouldAutoplay = true 
theMoviePlayer.fullscreen = true 
theMoviePlayer.play() 

Я проверил и у меня есть файл фильма в пачке ресурсов приложения. Размер видео: 640 × 360 пикселей

Итак, где это может быть?

Я забыл что-то важное?

Редактировать

Этого новый код работает, но всегда некоторые проблемы:

let url = NSBundle.mainBundle().URLForResource("back", withExtension: ".mp4") 
let player = MPMoviePlayerViewController(contentURL: url) 
presentMoviePlayerViewControllerAnimated(player) 
player.moviePlayer.prepareToPlay() 
player.moviePlayer.repeatMode = MPMovieRepeatMode.One 
player.moviePlayer.shouldAutoplay = true 
player.moviePlayer.play() 

Это показывает мне видео в альбомной ориентации, а не на весь экран.

ответ

1

Так я сделал это в одном из своих приложений. Вам может потребоваться вызвать presentMoviePlayerViewControllerAnimated() и передать в MPMoviePlayerViewController вместо того, чтобы делать addSubview.

let url = NSBundle.mainBundle().URLForResource("back", withExtension: ".mp4") 
let player = MPMoviePlayerViewController(contentURL: url) 
presentMoviePlayerViewControllerAnimated(player) 
player.prepareToPlay() 
player.shouldAutoplay = true 
player.fullscreen = true 
player.moviePlayer.play() 
+0

Спасибо. Но это не в полноэкранном режиме, а в ландшафтном режиме. У вас есть какие-либо решения по этому поводу? – Aymenworks

+0

Я считаю, что это потому, что вы устанавливаете 'player.fullscreen = true'. Это делает воспроизведение видео в ландшафтном режиме по умолчанию. – Shan

+0

Nop это не проблема: s – Aymenworks

0

** Решено **

Я решил слагаемого строку:

player.moviePlayer.view.transform = CGAffineTransformMakeRotation(CGFloat(M_PI/2)) 

Конечно, это сделать поворот видео. Итак, если это простой фон, анимированный как облака или что-то простое, все в порядке.

0

Если нет проблем с типом контента, вызовите функцию ниже. Это просто работает. :)

частные функ presentVideoVC() {

var url: NSURL = NSURL(string: "http://jplayer.org/video/m4v/Big_Buck_Bunny_Trailer.m4v")! 
    var moviePlayerVC: MPMoviePlayerViewController! = MPMoviePlayerViewController(contentURL: url) 
    self.presentMoviePlayerViewControllerAnimated(moviePlayerVC) 

} 
0

мои два цента:

в случае ios9 использовать протокол HTTPS .. (или добавить исключения ... не хорошо.) Dont позвонить напрямую на viewDidload, он не работает, звоните в асинхронном подождать некоторое время, позволяя контроллеру быть установлены:

dispatch_async(dispatch_get_main_queue()){ 
    self.playIt()   
} 


func playIt() { 
    let urlString = "https://www.ingconti.com/softysit/Spinelli_short.mp4" 
    let url: NSURL = NSURL(string: urlString)! 
    let moviePlayerVC: MPMoviePlayerViewController! = MPMoviePlayerViewController(contentURL: url) 
    moviePlayerVC.moviePlayer.shouldAutoplay = true 
    self.presentMoviePlayerViewControllerAnimated(moviePlayerVC) 
} 

к сведению, что в настоящее время MPMoviePlayerViewController является устаревшим.

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