iOS 获取本地视频播放路径

今天在做一个视频播放器,做好了之后发给别人,但是别人那里却播放不了。找了下原因,我用的是绝对路径,发给别人之后,别人在打开,肯定路径就不对了罗。
之前,我的路径是直接从左边把视频文件拖到代码区域得到的路径,如下图:

这里写图片描述

这样,我可以播放,但是发给别人,别人那里就播放不了,因为在别人那里路径就改变了。所以,那就要换一种获取路径的方法。我们工程里面的图片和视频文件都放在应用程序包里面,所以我们获取应用程序包的路径,然后在拼上我们视频文件的名字,就可以得到视频相对于工程的路径了。

把视频文件拷贝到你的项目中时,一定要添加到应用程序包中,记得把下面这个勾选中,否则视频就算添加到你的工程中了,但是没有拷贝到应用程序包中,一样还是播放不了的。

这里写图片描述

然后添加如下代码:

- (void)viewDidLoad {
    [super viewDidLoad];

    //获取视频播放路径
    NSString *str = [[NSBundle mainBundle] resourcePath];
    NSString *filePath = [NSString stringWithFormat:@"%@%@",str,@"/123.mp4"];

    NSLog(@"%@",filePath);

    NSURL *sourceMovieURL = [NSURL fileURLWithPath:filePath];
    AVAsset *movieAsset = [AVURLAsset URLAssetWithURL:sourceMovieURL options:nil];
    AVPlayerItem *playerItem = [AVPlayerItem playerItemWithAsset:movieAsset];
    AVPlayer *player = [AVPlayer playerWithPlayerItem:playerItem];
    AVPlayerLayer *playerLayer = [AVPlayerLayer playerLayerWithPlayer:player];
    playerLayer.frame = CGRectMake(0, 20, 300, 300);

    playerLayer.videoGravity = AVLayerVideoGravityResizeAspect;
    [self.view.layer addSublayer:playerLayer];

    [player play];

    UIView *videoMaskView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 250)];
    videoMaskView.backgroundColor = [UIColor colorWithRed:0/255.0f green:0/255.0f blue:0/255.0f alpha:0.3];
    [self.view addSubview:videoMaskView];

}

输出来的路径是这样的:

/Users/yuancan/Library/Developer/CoreSimulator/Devices/9E147531-EAE4-447E-9246-F36D5D476972/data/Containers/Bundle/Application/811A4649-D753-47E2-8D86-E07D24CC9F06/TestVideoPlay.app/123.mp4

打开路径看,我们可以看到视频在应用程序包文件中:

这里写图片描述

猜你喜欢

转载自blog.csdn.net/u010545480/article/details/49780989