2014-10-07 3 views
0

Я пытаюсь воспроизвести простой файл mp4 во весь экран при загрузке представления. Вот код:iOS не может воспроизводить видео

Я НЕ получаю видео вообще, но я знаю, что viewDidLoad вызывается и что есть представление.

// 
// FirstViewController.m 
// WSTR Finale 
// 
// Created by Chris Muench on 10/6/14. 
// Copyright (c) 2014 World Series of Team Roping. All rights reserved. 
// 

#import "WatchLiveViewController.h" 
#import <MediaPlayer/MediaPlayer.h> 

@interface WatchLiveViewController() 

@end 

@implementation WatchLiveViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 
    NSURL *movieURL = [NSURL URLWithString:@"http://download.wavetlan.com/SVV/Media/HTTP/H264/Talkinghead_Media/H264_test1_Talkinghead_mp4_480x360.mp4"]; 
    MPMoviePlayerController *moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:movieURL]; 
    moviePlayer.controlStyle = MPMovieControlStyleFullscreen; 
    moviePlayer.view.transform = CGAffineTransformConcat(moviePlayer.view.transform, CGAffineTransformMakeRotation(M_PI_2)); 
    UIWindow *backgroundWindow = [[UIApplication sharedApplication] keyWindow]; 
    [moviePlayer.view setFrame:backgroundWindow.frame]; 
    [backgroundWindow addSubview:moviePlayer.view]; 
    [moviePlayer play]; 
} 

- (void)didReceiveMemoryWarning { 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 

@end 
+0

ли работать это без преобразования? Вероятно, вам следует рассмотреть использование backgroundWindow.bounds вместо .frame, чтобы избежать дублирования смещений. –

+0

Я уверен, что вы знаете, что свойства «frame» и «bounds» не определены (это может быть даже «CGRectNull») перед тем, как вы поместите фактический контроллер представления в стек навигации, и вызывается метод '-viewDidLoad' определенно _before_. – holex

+0

Я попытался изменить его на viewDidAppear, и теперь я просто получаю большой черный экран без каких-либо видеоконтроллеров или видео –

ответ

1

Попробуйте этот код:

MPMoviePlayerViewController *mpvController = [[MPMoviePlayerViewController alloc] initWithContentURL:movieURL]; 
mpvController.moviePlayer.controlStyle = MPMovieControlStyleFullscreen; 
mpvController.moviePlayer.scalingMode = MPMovieScalingModeFill; 
mpvController.view.transform = CGAffineTransformConcat(mpvController.view.transform, CGAffineTransformMakeRotation(M_PI_2)); 
[self presentViewController:mpvController animated:NO completion:^{ 
    [mpvController.moviePlayer play]; 
}]; 
+0

отлично работает! –

+0

Можете ли вы сделать эту игру на портрете? –

+0

да, закомментируйте строку mpvController.view.transform – gabbler

0

Я думаю, что вам не хватает prepareToPlay. Попробуйте что-то вроде этого:

... 
[moviePlayer prepareToPlay]; 
[moviePlayer play]; 
+0

Я пробовал это, но он все еще не играл ... просто пустой вид –

+0

Я также попытался его изменить для просмотраDidAppear, и теперь я просто получаю большой черный экран без каких-либо видеоконтроллеров или видео –

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