Search code examples
iosvideoavplayerviewcontroller

ios AVPlayerViewController can not play local mp4


I tried to use AVPlayerViewController play mp4 video. I use "http url", it can play, but when I use fileUrl, it does not work...

    NSString *filePath = [[NSBundle mainBundle] pathForResource:@"mp4ForDownloadTest" ofType:@"mp4"];
if ([[NSFileManager defaultManager] fileExistsAtPath:filePath]) {
    NSURL *url = [NSURL fileURLWithPath:filePath isDirectory:NO];

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

    AVAsset *movieAsset = [AVURLAsset URLAssetWithURL:url options:nil];
    AVPlayerItem *playerItem = [AVPlayerItem playerItemWithAsset:movieAsset];
    AVPlayer *player = [AVPlayer playerWithPlayerItem:playerItem];

    playerVC.player = player;

    [self presentViewController:playerVC animated:YES completion:^{
        [player play];
    }];
}

enter image description here


Solution

  • Try this:

            guard let path = NSBundle.mainBundle().pathForResource("drum", ofType:"mp4") else {
                break
            }
    
            let url = NSURL(fileURLWithPath: path)
            self.loadPlayer(url) 
    

    then:

    private func loadPlayer(url: NSURL) {
        // present video window
        let playerItem = AVPlayerItem(URL: url)
        let player = AVPlayer.init(playerItem: playerItem)
        self.playerViewController.player = player
    
        self.view.addSubview(self.playerViewController.view)
        self.videoControlView.alpha = 1.0
        self.setupPlayerObserver()
        self.playPlayer()
        self.setSlider()
    }