无法使用AVPlayer播放视频

时间:2015-11-12 22:40:56

标签: objective-c ios9 avplayer avplayerviewcontroller

我已经浏览过StackOverflow中的所有帖子,但我无法获得如何从捆绑中获取视频并在控制器中重现视频的完整示例。

我尝试了很多东西,但我的屏幕显得空白或黑色。

在上次修改中,我的视频仍然是这样的:

enter image description here

日志上没有抛出任何错误。这是我的代码:

.h (请忽略控制器的名称,最后是相机)

#import <UIKit/UIKit.h>
#import <AVFoundation/AVFoundation.h>
#import <AVKit/AVKit.h>

@interface NativeCameraViewController : UIViewController
@end

的.m

#import "NativeCameraViewController.h"

@interface NativeCameraViewController ()

@property (nonatomic, retain) AVPlayerViewController *avPlayerViewcontroller;

@end

@implementation NativeCameraViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    UIView *view = self.view;

    NSString *stringPath = [[NSBundle mainBundle]pathForResource:@"video" ofType:@"mov"];


    NSURL *fileURL = [NSURL fileURLWithPath:stringPath];

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


    playerViewController.player = [AVPlayer playerWithURL:fileURL];

    self.avPlayerViewcontroller = playerViewController;

    [self resizePlayerToViewSize];

    [view addSubview:playerViewController.view];

    view.autoresizesSubviews = TRUE;
}

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


- (void) resizePlayerToViewSize
{
    CGRect frame = self.view.frame;

    NSLog(@"frame size %d, %d", (int)frame.size.width, (int)frame.size.height);

    self.avPlayerViewcontroller.view.frame = frame;
}


@end

这就是我到目前为止所得到的。 我的视频在Bundle上正确显示,名为 video.mov

enter image description here

我尝试过链接和复制。结果相同。

我做错了什么?

非常感谢你。

我希望避免使用MPMoviePlayerController,因为它已在iOS9中弃用

2 个答案:

答案 0 :(得分:0)

实际上是我的错...

我试图重现别名

当你有20.000个视频和30.000个资源时,就会发生这种情况。

答案 1 :(得分:-1)

使用MPMoviePlayerController类:

而不是使用AVPlayer
NSString *path = [[NSBundle mainBundle] pathForResource:@"video" ofType:@"mov"]; 

NSURL *url = [NSURL fileURLWithPath:path];

MPMoviePlayerController *player = [[MPMoviePlayerController alloc] initWithContentURL:url];

[player play];