MPMoviePlayerViewController播放在线视频
2015-07-08 17:29
549 查看
前言:之前介绍过 使用MPMoviePlayerController播放在线视频,本文将介绍MPMoviePlayerViewController,二者的区别就是MPMoviePlayerViewController包含了一个MPMoviePlayerViewController
一 使用方法
1 初始化和展示
2 具体实现
一 使用方法
1 初始化和展示
_playerViewVC = [[MPMoviePlayerViewController alloc] initWithContentURL:[self url]];
<span style="font-size:24px; color: rgb(51, 102, 255);"> </span><pre name="code" class="objc" style="color: rgb(51, 102, 255);">[self presentMoviePlayerViewControllerAnimated:self.playerViewVC];
2 具体实现
import <MediaPlayer/MediaPlayer.h>
@interface SecondVC()
@property (nonatomic,strong) MPMoviePlayerViewController *playerViewVC;
@end
@implementation SecondVC
- (void)viewDidLoad
{
[super viewDidLoad];
}
- (NSURL *)url
{
NSString *urlStr = @"http://7xawdc.com2.z0.glb.qiniucdn.com/o_19p6vdmi9148s16fs1ptehbm1vd59.mp4";
urlStr = [urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *url1 = [NSURL URLWithString:urlStr];
return url1;
}
- (MPMoviePlayerViewController *)playerViewVC
{
if (!_playerViewVC) {
_playerViewVC = [[MPMoviePlayerViewController alloc] initWithContentURL:[self url]];
[self addNofi];
}
return _playerViewVC;
}
/**
* 添加视频播放的通知
*/
- (void)addNofi
{
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(playbackstateDidChange:)
name:MPMoviePlayerPlaybackStateDidChangeNotification //播放状态改变,可配合playbakcState属性获取具体状态
object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(playDidFinish:) //媒体播放完成或用户手动退出,具体完成原因可以通过通知userInfo中的key为MPMoviePlayerPlaybackDidFinishReasonUserInfoKey的对象获取
name:MPMoviePlayerPlaybackDidFinishNotification
object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(thumImageGet:)
name:MPMoviePlayerThumbnailImageRequestDidFinishNotification //视频缩略图截取成功时调用
object:nil];
}
- (void)playbackstateDidChange:(NSNotification *)noti
{
switch (self.playerViewVC.moviePlayer.playbackState) {
case MPMoviePlaybackStateInterrupted:
//中断
NSLog(@"中断");
break;
case MPMoviePlaybackStatePaused:
//暂停
NSLog(@"暂停");
break;
case MPMoviePlaybackStatePlaying:
//播放中
NSLog(@"播放中");
break;
case MPMoviePlaybackStateSeekingBackward:
//后退
NSLog(@"后退");
break;
case MPMoviePlaybackStateSeekingForward:
//快进
NSLog(@"快进");
break;
case MPMoviePlaybackStateStopped:
//停止
NSLog(@"停止");
break;
default:
break;
}
}
- (void)playDidFinish:(NSNotification *)noti
{
//播放完成
}
/**
* 截图完成,每截取一张,会调取一次
*
* @param noti <#noti description#>
*/
- (void)thumImageGet:(NSNotification *)noti
{
UIImage *thumImage = [[noti userInfo] objectForKey:MPMoviePlayerThumbnailImageKey];
UIImageWriteToSavedPhotosAlbum(thumImage, nil, nil, nil);
}
#pragma mark -
#pragma mark - action
- (IBAction)showMoviePlayerView:(id)sender {
self.playerViewVC = nil;
// [self presentViewController:self.playerViewVC animated:YES completion:nil];
[self presentMoviePlayerViewControllerAnimated:self.playerViewVC]; //注意,在MPMoviePlayerViewController.h中对UIViewController扩展两个用于模态展示和关闭MPMoviePlayerViewController的方法,增加了一种下拉展示动画效果
}
相关文章推荐
- 使用MPMoviePlayerController播放在线视频
- 你以为你以为的产品经理就是真实的产品经理吗?
- SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM之间
- 产品经理常用工具
- 如何在Meteor中使用npm模块?
- 为什么设计师设计不出产品经理满意的作品?
- 专业级服务器监控产品 OneAPM Servers 上线
- 自己制作rpm软件包(1)
- 自己制作rpm软件包(2)
- 一步步制作RPM包
- 实战RPM包制作
- rpm
- BPM与OA,选择好烦恼!
- npm的使用
- 产品经理学习总结之技术和设计篇
- 统计过程控制与评价 Cpk、SPC、PPM
- warning: rpmts_HdrFromFdno: Header V4 DSA/SHA1 Signature, key ID 192a7d7d: NOKEY
- warning: rpmts_HdrFromFdno: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
- 解决RPM包相互依赖的有效方法
- FusionInsight 安装依赖 rpm 包神器,现网SUSE11 SP1/SP3都验证过