2015-11-18 4 views
0

Я видел точно такую ​​же проблему здесь, но ее без ответа так снова задал тот же вопрос. AVPlayer wont play video from url in iOS9 Я пробовал всевозможные способы, чтобы попытаться воспроизвести видео, но, к сожалению, они не работают для меня. Вот код:Невозможно воспроизвести видеофайл на iPad с помощью AVPlayerViewController

AVPlayerViewController *playerViewController = [[AVPlayerViewController alloc] init]; 

NSString *url = [[NSBundle mainBundle] pathForResource:@"Intro" ofType:@"mp4"]; 

_asset = [AVURLAsset assetWithURL: [NSURL URLWithString:url]]; 
_playerItem = [AVPlayerItem playerItemWithAsset: _asset]; 
_player = [[AVPlayer alloc] initWithPlayerItem: _playerItem]; 
[playerViewController.view setFrame:_videoView.frame]; 

playerViewController.showsPlaybackControls = YES; 

[_videoView addSubview:playerViewController.view]; 
playerViewController.player = _player; 
[_player play]; 

и вот снимок экрана, как это выглядит в настоящее время с помощью выше кода. И я использовал другой код Apple, чтобы проверить видео, и он работал нормально, но код Apple слишком сильно для меня, поскольку он слишком сложный для простых вещей. Вот оно: https://developer.apple.com/library/prerelease/ios/samplecode/AVFoundationSimplePlayer-iOS/

enter image description here Благодаря AJ

ответ

0

я, наконец, смог понять это, снова глядя в Пример кода Apple. Добавил файлы AAPLPlayerView к моему проекту. Затем изменил мою UIView в раскадровке выше класс обновляется ниже строк кода в моей точки зрения класса контроллера:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 

} 
-(void)viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 

    self.playerView.playerLayer.player = self.player; 

    NSURL *movieURL = [[NSBundle mainBundle] URLForResource:@"Intro" withExtension:@"mp4"]; 
    self.asset = [AVURLAsset assetWithURL:movieURL]; 

    self.playerItem = [AVPlayerItem playerItemWithAsset: self.asset]; 
    [self.player play]; 
} 

- (AVPlayer *)player { 
    if (!_player) 
     _player = [[AVPlayer alloc] init]; 
    return _player; 
} 
- (AVPlayerLayer *)playerLayer { 
    return self.playerView.playerLayer; 
} 

- (AVPlayerItem *)playerItem { 
    return _playerItem; 
} 
- (void)setPlayerItem:(AVPlayerItem *)newPlayerItem { 
    if (_playerItem != newPlayerItem) { 

     _playerItem = newPlayerItem; 

     // If needed, configure player item here before associating it with a player 
     // (example: adding outputs, setting text style rules, selecting media options) 
     [self.player replaceCurrentItemWithPlayerItem:_playerItem]; 
    } 
} 

И это сработало. Проблема была в том, что PlayerLayer не был установлен правильно, и из-за этого видео не было видно.

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