为什么此Objective-C代码无法播放AVPlayerViewController视频? [英] Why this Objective-C code won't play an AVPlayerViewController video?

查看:89
本文介绍了为什么此Objective-C代码无法播放AVPlayerViewController视频?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

两者都在viewDidLoad()中. 这个objective-c源文件怎么了? 迅捷的版本就像一个魅力... Xcode版本8.2 iOS 10

Both are in viewDidLoad(). What's wrong with this objective-c source file? The swift version works like a charm... Xcode ver. 8.2 iOS 10

快速(确定):

        let path : String = Bundle.main.path(forResource: "charlie", ofType: "mp4")!
        let movieurl : URL = URL(fileURLWithPath: path)
        let movie : AVPlayerViewController = AVPlayerViewController()
        movie.view.frame = self.view.bounds

        let player : AVPlayer = AVPlayer(url: movieurl)
        movie.player = player

        self.view.addSubview(movie.view)
        player.play()

Objective-C(不会显示/播放视频):

Objective-C (Won't show/play the video):

        AVPlayerViewController* movie;
        AVPlayer* player;

        NSString *path = [[NSBundle mainBundle]
            pathForResource:@"charlie" ofType:@"mp4"];

        NSURL *url = [NSURL URLWithString:path] ;

        movie = [[AVPlayerViewController alloc] init];
        movie.view.frame = self.view.bounds;
        player = [[AVPlayer alloc] initWithURL:url];

        [movie setPlayer:player];
        [self.view addSubview:movie.view];

        [player play];

推荐答案

@import AVKit;
@import AVFoundation;
@property (nonatomic) AVPlayer *avPlayer; 
@property (nonatomic) AVPlayerViewController* avPlayerView;


NSString *path = [[NSBundle mainBundle] pathForResource:@"Video1" ofType:@"mp4"];

NSURL *url = [[NSURL alloc] initFileURLWithPath: path];

AVAsset *asset = [AVURLAsset URLAssetWithURL:url options:nil];
AVPlayerItem *anItem = [AVPlayerItem playerItemWithAsset:asset];

avPlayer = [AVPlayer playerWithPlayerItem:anItem];
[avPlayer addObserver:self forKeyPath:@"status" options:0 context:nil];
self.avPlayerView = [[AVPlayerViewController alloc] init];
self.avPlayerView.view.frame = self.view.bounds; 
[self.avPlayerView setPlayer:_avPlayer]; 
[self.view addSubview:_avPlayerView.view]; 

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {

    if (object == avPlayer && [keyPath isEqualToString:@"status"]) {
        if (avPlayer.status == AVPlayerStatusFailed) {
            NSLog(@"AVPlayer Failed");
        } else if (avPlayer.status == AVPlayerStatusReadyToPlay) {
            NSLog(@"AVPlayer Ready to Play");
        } else if (avPlayer.status == AVPlayerItemStatusUnknown) {
            NSLog(@"AVPlayer Unknown");
        }
    }
}

-(IBAction) BtnPlay:(id)sender {
    [avPlayer play];
}

-(IBAction) BtnPause:(id)sender {
    [avPlayer pause];
}

尝试输入我的代码.如果我的代码有任何问题,请置评. 谢谢你. 编码愉快.

Try my code . if any issue with my code put comment . Thank You. Happy Coding.

这篇关于为什么此Objective-C代码无法播放AVPlayerViewController视频?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆