java视频ios无法播放_iOS视频播放的基本方法

本文总结了iOS中最常见的视频播放方法,不同的方法都各具特点,我希望能够总结它们的不同,方便在开发中选择合适的技术方案。

Apple为我们提供了多种方法来实现视频播放,包括MPMoviePlayerController,MPMoviePlayerViewController,AVPlayer,AVPlayerViewController等。而值得注意的是,上述的MPMoviePlayerController与MPMoviePlayerViewController在iOS9.0之后被弃用。虽说如此,这还是将它们的用法总结了一下,下面我们简单来了解一下四种播放方式的区别:

b304694af77a

iOS播放视频.png

一、MPMoviePlayerController

1.播放视频

MPMoviewPlayerController继承于NSObject,使用它播放视频需要将其自带的视频View添加到视图控制器的View上才能显示视频,使用步骤如下:

第一步:引用MediaPlayer框架,声明视图控制器属性PlayerController

#import

@property(nonatomic,strong)MPMoviePlayerController *playerController;

//第二步:获取视频路径,创建播放器

//本地视频路径

NSString* localFilePath=[[NSBundle mainBundle]pathForResource:@"不能说的秘密" ofType:@"mp4"];

NSURL *localVideoUrl = [NSURL fileURLWithPath:localFilePath];

//网络视频路径

NSString *webVideoPath = @"http://api.junqingguanchashi.net/yunpan/bd/c.php?vid=/junqing/1115.mp4";

NSURL *webVideoUrl = [NSURL URLWithString:webVideoPath];

self.playerController =[[MPMoviePlayerController alloc]initWithContentURL:webVideoUrl];

//第三步:设置Frame将播放器View添加到视图控制器View上

self.playerController.view.frame = CGRectMake(0, 10, kDeviceWidth, 300);

[self.view addSubview: self.playerController.view];

//第四步:设置播放器属性

//设置控制面板风格:无,嵌入,全屏,默认

self.playerController.controlStyle = MPMovieControlStyleDefault;

//设置是否自动播放(默认为YES)

self.playerController.shouldAutoplay = NO;

//设置播放器显示模式,类似于图片的处理,设置Fill有可能造成部分区域被裁剪

self.playerController.scalingMode = MPMovieScalingModeAspectFit;

//设置重复模式

self.playerController.repeatMode = MPMovieRepeatModeOne;

//第五步:播放视频

//播放前的准备,会中断当前正在活跃的音频会话

[ self.playerController prepareToPlay];

//播放视频,设置了自动播放之后可以不调用此方法

//[ self.playerController play];

//第六步:在退出界面的时候,关闭播放器,移除通知

- (void)dealloc{

//当前视图控制器pop之后并不会关闭播放,需要手动关闭

[self.playerController stop];

self.playerController = nil;

//移除播放器相关的通知

[[NSNotificationCenter defaultCenter] removeObserver:self];

}

2.视频播放相关的通知

MPMoviePlayerController有关视频播放的很多状态控制都是通过通知完成的,尤其是播放在线视频的时候,我们不仅监控视频加载是否成功,也会监控是视频缓存进度等。这里演示一些常用的通知如下:

//关于通知的使用(还有很多通知可以监听,可查看SDK)

NSNotificationCenter *notificaionCenter = [NSNotificationCenter defaultCenter];

//监听播放器状态的变化

[notificaionCenter addObserver:self

selector:@selector(playerStateChanged:)

name:MPMoviePlayerPlaybackStateDidChangeNotification

object:nil];

//监听播放完成

[notificaionCenter addObserver:self

selector:@selector(playerFinished) name:MPMoviePlayerPlaybackDidFinishNotification

object:nil];

//监听切换到全屏

[notificaionCenter addObserver:self

selector:@selector(palyerChangeFullScreen) name:MPMoviePlayerDidEnterFullscreenNotification

object:nil];

//监听截屏操作完成

[notificaionCenter addObserver:self

selector:@selector(playerCaptureFinished:) name:MPMoviePlayerThumbnailImageRequestDidFinishNotification

object:nil];

#pragma mark - 监听通知的响应方法

//播放状态变化,注意播放完成时的状态是暂停

- (void)playerStateChanged:(NSNotification *)notificaion{

switch (self.playerController.pl

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值