iOS中的视频播放



摘要  本文介绍iOS开发中如何播放视频。

iOS中的视频播放

    iOS提供了MPMoviePlayerController 和 MPMoviePlayerViewController两个类,可以用来轻松播放视频和网络流媒体\网络音频。这两个类都定义在MediaPlayer框架中。

    YouTobe就是用MPMoviePlayerController实现的。

    MPMoviePlayerViewController只能全屏播放视频。

    网络音频同样可以使用此控制器播放。

MPMoviePlayerController:

    1> 继承自NSObject;

    2> 内部有个view可以展示视频内容;

    3> 将该视图添加到其他控制器的view上,即可显示视频内容。

MPMoviePlayerController可以播放的视频格式包括:H.264 、MPEG-4等。

     支持的文件扩展名包括:avi、mkv、mov、m4v、mp4等。

提示:

    MPMoviePlayerController并不支持所有的视频格式,如果要播放不支持的视频格式,需要借助第三方框架进行解码,如VLC,下载地址: https://github.com/videolan/vlc

    可以从苹果官网:http://support.apple.com/kb/HT1425  下载一些用来测试的视频文件,文件都比较小 。

MPMoviePlayerController的使用:

    1> 加载视频资源(如果url为nil同样可以加载);

?
1
2
NSAssert(self.url, @ "URL不能为空" );
[[MPMoviePlayerController alloc] initWithContentURL:self.url];

    2> 显示:通过设置AutoresizingMask属性可以在横竖屏转换时自动调整视图大小 ;

?
1
[self.view addSubview:self.moviePlayer.view];

    3> 播放

?
1
[self.moviePlayer play];

    4> 全屏

?
1
[self.moviePlayer setFullscreen:YES animated:YES];

    MPMoviePlayerController的播放状态是通过通知中心监听的。

常用监听通知事件:

?
1
2
3
4
5
6
7
8
9
10
  // 添加播放状态的监听
     NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
  // 1.监听状态变化
     [nc addObserver:self selector:@selector(stateChanged) name:MPMoviePlayerPlaybackStateDidChangeNotification object:nil];
  // 2. 播放完成
     [nc addObserver:self selector:@selector(finished) name:MPMoviePlayerPlaybackDidFinishNotification object:nil];
  // 3. 全屏
     [nc addObserver:self selector:@selector(finished) name:MPMoviePlayerDidExitFullscreenNotification object:nil];
  // 4. 截屏完成通知
     [nc addObserver:self selector:@selector(captureFinished:) name:MPMoviePlayerThumbnailImageRequestDidFinishNotification object:nil];

截屏方法

?
1
2
3
4
     // 数组中有多少时间,就通知几次
     // MPMovieTimeOptionExact 精确
     // MPMovieTimeOptionNearestKeyFrame 大概齐
     [self.moviePlayer requestThumbnailImagesAtTimes:@[@(5.0), @(20.0)] timeOption:MPMovieTimeOptionNearestKeyFrame];

NSAssert(断言)在程序开发中的意义:

    1> 断言NSAssert仅在debug版本起作用,用于检查“不应该”发生的情况;

    2> 可以把NSAssert看成一个在任何系统状态下都可以安全使用的无害测试手段。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值