您的位置:首页 > 产品设计 > 产品经理

MPMoviePlayerViewController播放在线视频

2015-07-08 17:29 549 查看
前言:之前介绍过 使用MPMoviePlayerController播放在线视频,本文将介绍MPMoviePlayerViewController,二者的区别就是MPMoviePlayerViewController包含了一个MPMoviePlayerViewController

一 使用方法

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的方法,增加了一种下拉展示动画效果

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: