0

ここでまったく同じ問題を見ましたが、回答がないため、同じ質問をもう一度尋ねます。 AVPlayer が iOS9 で URL からビデオを再生しない ビデオ を再生するためにさまざまな方法を試しましたが、残念ながらうまくいきません。コードは次のとおりです。

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/

ここに画像の説明を入力 ありがとうAJ

4

1 に答える 1

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 が適切に設定されておらず、そのためにビデオが表示されないことでした。

于 2015-11-19T19:18:56.570 に答える