2016-04-26 3 views
10

Так что я искал решение сейчас, когда MPMoviePlayerController становится устаревшим. мой текущий код работает отлично:MPMoviePlayerController устарел, что теперь?

moviePlayer = MPMoviePlayerController(contentURL: receivedURL) 
    moviePlayer!.movieSourceType = MPMovieSourceType.Unknown 
    moviePlayer!.view.frame = view.bounds 
    moviePlayer!.scalingMode = MPMovieScalingMode.AspectFill 
    moviePlayer!.controlStyle = MPMovieControlStyle.None 
    moviePlayer!.shouldAutoplay = true 

    view.addSubview((moviePlayer?.view)!) 
    moviePlayer?.setFullscreen(true, animated: true) 
    moviePlayer!.play() 

я записывать видео, и как только я сделал запись, он будет воспроизводиться с указанным кодом в новом виде. Но поскольку я понимаю, что MPMoviePlayerController устарел в iOS9, и я не могу найти какое-либо решение, работающее подобно приведенному выше коду. Я понимаю, что мне нужен пользователь AVPlayer и AVPlayerViewController.

Я пробовал this и многие другие решения, которые похожи на них. Но это просто не будет работать, как будто я хочу его в коде выше.

Я просто хочу записать видео и воспроизвести его в новом виде, точно так же, как snapchat.

Пожалуйста, помогите мне

ДОБАВЛЕНО Дополнительная информация:

Так что, когда я пытаюсь это исправить с this (принятый ответ) или this solution (AVPlayer), вид является пустым. ничего не показано.

var player:AVPlayer! 
    let avPlayerLayer:AVPlayerLayer = AVPlayerLayer(player: player) 
    avPlayerLayer.frame = CGRectMake(50,50,100,100) 
    self.view.layer.addSublayer(avPlayerLayer) 
    player = AVPlayer(URL: receivedURL) 
    player.play() 

И если я попробовать с AVPlayerViewController, который я должен был изменить:

let player = AVPlayer(URL: receivedURL) 
    let playerViewController = AVPlayerViewController() 
    playerViewController.player = player 
    dispatch_async(dispatch_get_main_queue(), { 
     self.presentViewController(playerViewController, animated: true) { 
      playerViewController.player?.play() 
     } 
    }) 

это происходит, когда не показано ничего. enter image description here

+1

Ваш ответ подобен решению. Развернуть дальше «Но это просто не будет работать, как я хочу, в коде выше». в чем именно проблема?: – Curmudgeonlybumbly

+0

Какие проблемы вы испытываете, когда пытаетесь использовать «AVPlayerViewController»? Ваш вопрос не имеет смысла. Что не работает? – JAL

+0

Хорошо, я отредактирую вопрос и добавлю картинку :) , но с ответами, которые я связал, есть две проблемы: Первый заключается в том, что ничего не воспроизводится, вид совершенно пуст Другая проблема заключается в том, что видеопроигрыватель но серый. Я возьму экраны печати и добавлю их с кодом –

ответ

6
var player:AVPlayer! 
let avPlayerLayer:AVPlayerLayer = AVPlayerLayer(player: player) 
avPlayerLayer.frame = CGRect(x:50,y:50,width:100,height:100) 
self.view.layer.addSublayer(avPlayerLayer) 
player = AVPlayer(url: receivedURL) 
player.play() 

здесь инициализировать плеер после добавления его в AVPlayerLayer. попробуйте вот так:

let player = AVPlayer(url: receivedURL) 
let avPlayerLayer:AVPlayerLayer = AVPlayerLayer(player: player) 
avPlayerLayer.frame = CGRect(x:50,y:50,width:100,height:100) 
self.view.layer.addSublayer(avPlayerLayer) 
player.play() 
+0

еще только пустой вид:/ –

+0

что-то может быть неправильным с вашим видеороликом. Я попробовал это - http://clips.vorwaerts-gmbh.de/VfE_html5.mp4 - и все работает как предполагалось. помните, что если ваш URL-адрес видео не https: //, вам необходимо настроить политику безопасности приложений на транспорте. –

+0

немой вопрос, я должен сделать это в моей viewdidload? как: переопределение функ viewDidLoad() { super.viewDidLoad() пусть urlPath: String = "http://clips.vorwaerts-gmbh.de/VfE_html5.mp4" пусть URL: NSURL = NSURL (строка: urlPath)! пусть игрок = AVPlayer (URL: URL) пусть avPlayerLayer: AVPlayerLayer = AVPlayerLayer (игрок: игрок) avPlayerLayer.frame = CGRectMake (50,50,100,100) self.view.layer.addSublayer (avPlayerLayer) player.play () } –

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