2015-10-31 3 views
1

Я беру онлайн-курс, и они используют устаревший код с помощью MPMoviePlayerController, и мне нужны конкретные инструкции о том, как его изменить, чтобы он работал. Приложение, которое я создаю, имеет контроллер табличного представления с почтовым ящиком с сообщениями в нем. Короткие видеофайлы могут быть отправлены, а когда вы нажимаете на строку с видеосообщением, мне нужен видеофайл для воспроизведения. Бесплатная пробная версия скоро истекает, поэтому мне нужна помощь.Изменение кода с помощью MPMoviePlayerController на AVPlayer

Это то, что должно быть изменено в моем файле заголовка:

@property (nonatomic, strong) MPMoviePlayerController *moviePlayer; 

Это то, что должно быть изменено в моем методе viewDidLoad в моем файле реализации:

self.moviePlayer = [[MPMoviePlayerController alloc] init]; 

Это также то, что необходимо изменить в файле реализации. Я получаю видео через бэкэндом через Parse.com, так это то, что PFFile о:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 

    PFFile *videoFile = [self.selectedMessage objectForKey:@"file"]; 
    NSURL *fileUrl = [NSURL URLWithString:videoFile.url]; 
    self.moviePlayer.contentURL = fileUrl; 
    [self.moviePlayer prepareToPlay]; 

    [self.view addSubview:self.moviePlayer.view]; 
    [self.moviePlayer setFullscreen:YES animated:YES]; 
} 
+0

Используйте эту (https://github.com/piemonte/Player/) простую в использовании библиотеку, которая обертывает AVPlayer. – Vishal

+0

Я попытался использовать PBJVideoPlayer для моего объектного проекта c и подключил строки в разделе «Использование», но «установочный носитель» и 3 «настоящие» строки показывают ошибки: свойство «видеопат» не найден на объекте типа «PBJVideoPlayerController» и «Неизвестный метод класса для селектора» didMoveToParentViewController: «Что я могу сделать или изменить, чтобы эти строки работали? – Mattj33

ответ

0

В заголовочном файле:

@property(nonatomic,strong)AVPlayer *avPlayer; 

В методе viewDidLoad в файле реализации

self.avPlayer = [[AVPlayer alloc] init]; 

В реализации UITableView Метод:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 

    PFFile *videoFile = [self.selectedMessage objectForKey:@"file"]; 

    NSURL *fileURL = [NSURL fileURLWithPath:videoFile.url]; 
    self.avPlayer = [AVPlayer playerWithURL:fileURL]; 

    AVPlayerLayer *layer = [AVPlayerLayer playerLayerWithPlayer:self.avPlayer]; 
    self.avPlayer.actionAtItemEnd = AVPlayerActionAtItemEndNone; 
    layer.frame = CGRectMake(0, 0, width, height); 
    [self.view.layer addSublayer: layer]; 

    [self.avPlayer play]; 

} 

Надеюсь, это вам поможет :)

+0

Это определенно лучше, чем раньше! Теперь, когда я нажимаю на строку видеофайла, видео воспроизводится прямо на контроллере табличного представления ниже строки, на которую я нажимал, и над панелью навигации навигации внизу. Когда видео заканчивается, он просто остается там и не увольняется, несмотря на навигацию и обратно. Я добавил эти 2 строки кода выше строки «layer.frame», потому что я получал ошибку, оставляя неопределенными «width» и «height». > CGFloat width = [UIScreen mainScreen] .bounds.size.width; > CGFloat height = [UIScreen mainScreen] .bounds.size.height; – Mattj33

+0

Должны ли они определяться по-разному? Я надеюсь, что видео будет воспроизводиться на собственном экране в полноэкранном режиме, как плеер, на котором вы смотрите фильмы и прочее. – Mattj33

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