使用MPMoviePlayerController播放在线视频

一 MPMoviePlayerController 简介

在iOS中播放视频可以使用MediaPlayer.framework种的MPMoviePlayerController类来完成,它支持本地视频和网络视频播放。这个类实现了MPMediaPlayback协议,因此具备一般的播放器控制功能,例如播放、暂停、停止等。下面列出了MPMoviePlayerController的常用属性和方法:

属性 说明
@property (nonatomic, copy) NSURL *contentURL 播放媒体URL,这个URL可以是本地路径,也可以是网络路径
@property (nonatomic, readonly) UIView *view 播放器视图,如果要显示视频必须将此视图添加到控制器视图中
@property (nonatomic, readonly) UIView *backgroundView 播放器背景视图
@property (nonatomic, readonly) MPMoviePlaybackState playbackState 媒体播放状态,枚举类型:

MPMoviePlaybackStateStopped:停止播放

MPMoviePlaybackStatePlaying:正在播放

MPMoviePlaybackStatePaused:暂停

MPMoviePlaybackStateInterrupted:中断

MPMoviePlaybackStateSeekingForward:向前定位

MPMoviePlaybackStateSeekingBackward:向后定位

@property (nonatomic, readonly) MPMovieLoadState loadState 网络媒体加载状态,枚举类型:

MPMovieLoadStateUnknown:位置类型

MPMovieLoadStatePlayable:

MPMovieLoadStatePlaythroughOK:这种状态如果shouldAutoPlay为YES将自动播放

MPMovieLoadStateStalled:停滞状态

@property (nonatomic) MPMovieControlStyle controlStyle 控制面板风格,枚举类型:

MPMovieControlStyleNone:无控制面板

MPMovieControlStyleEmbedded:嵌入视频风格

MPMovieControlStyleFullscreen:全屏

MPMovieControlStyleDefault:默认风格

@property (nonatomic) MPMovieRepeatMode repeatMode; 重复播放模式,枚举类型:

MPMovieRepeatModeNone:不重复,默认值

MPMovieRepeatModeOne:重复播放

@property (nonatomic) BOOL shouldAutoplay 当网络媒体缓存到一定数据时是否自动播放,默认为YES
@property (nonatomic, getter=isFullscreen) BOOL fullscreen 是否全屏展示,默认为NO,注意如果要通过此属性设置全屏必须在视图显示完成后设置,否则无效
@property (nonatomic) MPMovieScalingMode scalingMode 视频缩放填充模式,枚举类型:

MPMovieScalingModeNone:不进行任何缩放

MPMovieScalingModeAspectFit:固定缩放比例并且尽量全部展示视频,不会裁切视频

MPMovieScalingModeAspectFill:固定缩放比例并填充满整个视图展示,可能会裁切视频

MPMovieScalingModeFill:不固定缩放比例压缩填充整个视图,视频不会被裁切但是比例失衡

@property (nonatomic, readonly) BOOL readyForDisplay 是否有相关媒体被播放
@property (nonatomic, readonly) MPMovieMediaTypeMask movieMediaTypes 媒体类别,枚举类型:

MPMovieMediaTypeMaskNone:未知类型

MPMovieMediaTypeMaskVideo:视频

MPMovieMediaTypeMaskAudio:音频

@property (nonatomic) MPMovieSourceType movieSourceType 媒体源,枚举类型:

MPMovieSourceTypeUnknown:未知来源

MPMovieSourceTypeFile:本地文件

MPMovieSourceTypeStreaming:流媒体(直播或点播)

@property (nonatomic, readonly) NSTimeInterval duration 媒体时长,如果未知则返回0
@property (nonatomic, readonly) NSTimeInterval playableDuration 媒体可播放时长,主要用于表示网络媒体已下载视频时长
@property (nonatomic, readonly) CGSize naturalSize 视频实际尺寸,如果未知则返回CGSizeZero
@property (nonatomic) NSTimeInterval initialPlaybackTime 起始播放时间
@property (nonatomic) NSTimeInterval endPlaybackTime 终止播放时间
@property (nonatomic) BOOL allowsAirPlay 是否允许无线播放,默认为YES
@property (nonatomic, readonly, getter=isAirPlayVideoActive) BOOL airPlayVideoActive 当前媒体是否正在通过AirPlay播放
@property(nonatomic, readonly) BOOL isPreparedToPlay 是否准备好播放
@property(nonatomic) NSTimeInterval currentPlaybackTime 当前播放时间,单位:秒
@property(nonatomic) float currentPlaybackRate 当前播放速度,如果暂停则为0,正常速度为1.0,非0数据表示倍率
对象方法 说明
- (instancetype)initWithContentURL:(NSURL *)url 使用指定的URL初始化媒体播放控制器对象
- (void)setFullscreen:(BOOL)fullscreen animated:(BOOL)animated 设置视频全屏,注意如果要通过此方法设置全屏则必须在其视图显示之后设置,否则无效
- (void)requestThumbnailImagesAtTimes:(NSArray *)playbackTimes timeOption:(MPMovieTimeOption)option 获取在指定播放时间的视频缩略图,第一个参数是获取缩略图的时间点数组;第二个参数代表时间点精度,枚举类型:

MPMovieTimeOptionNearestKeyFrame:时间点附近

MPMovieTimeOptionExact:准确时间

- (void)cancelAllThumbnailImageRequests 取消所有缩略图获取请求
- (void)prepareToPlay 准备播放,加载视频数据到缓存,当调用play方法时如果没有准备好会自动调用此方法
- (void)play 开始播放
- (void)pause 暂停播放
- (void)stop 停止播放
- (void)beginSeekingForward 向前定位
- (void)beginSeekingBackward 向后定位
- (void)endSeeking 停止快进/快退
通知 说明
MPMoviePlayerScalingModeDidChangeNotification 视频缩放填充模式发生改变
MPMoviePlayerPlaybackDidFinishNotification 媒体播放完成或用户手动退出,具体完成原因可以通过通知userInfo中的key为MPMoviePlayerPlaybackDidFinishReasonUserInfoKey的对象获取
MPMoviePlayerPlaybackStateDidChangeNotification 播放状态改变,可配合playbakcState属性获取具体状态
MPMoviePlayerLoadStateDidChangeNotification 媒体网络加载状态改变
MPMoviePlayerNowPlayingMovieDidChangeNotification 当前播放的媒体内容发生改变
MPMoviePlayerWillEnterFullscreenNotification 将要进入全屏
MPMoviePlayerDidEnterFullscreenNotification 进入全屏后
MPMoviePlayerWillExitFullscreenNotification 将要退出全屏
MPMoviePlayerDidExitFullscreenNotification 退出全屏后
MPMoviePlayerIsAirPlayVideoActiveDidChangeNotification 当媒体开始通过AirPlay播放或者结束AirPlay播放
MPMoviePlayerReadyForDisplayDidChangeNotification 视频显示状态改变
MPMovieMediaTypesAvailableNotification 确定了媒体可用类型后
MPMovieSourceTypeAvailableNotification 确定了媒体来源后
MPMovieDurationAvailableNotification 确定了媒体播放时长后
MPMovieNaturalSizeAvailableNotification 确定了媒体的实际尺寸后
MPMoviePlayerThumbnailImageRequestDidFinishNotification 缩略图请求完成之后
MPMediaPlaybackIsPreparedToPlayDidChangeNotification 做好播放准备后

二 使用方法:设置contentUrl ,view的frame,屏幕模式

#import "ViewController.h"
#import <MediaPlayer/MediaPlayer.h>

@interface ViewController ()

@property (nonatomic,strong) MPMoviePlayerController *moviePlayer;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    [self.moviePlayer play];
    [self addNofi];
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

/**
 *  视频播放url
 *
 *  @return 返回视频url
 */
- (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;
}

/**
 *  初始化MPMoviePlayerController
 *
 *  @return 返回一个MPMoviePlayerController的实例
 */
- (MPMoviePlayerController *)moviePlayer
{
    if (!_moviePlayer) {
        _moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:[self url]];
        _moviePlayer.view.frame = self.view.frame;
        _moviePlayer.scalingMode = MPMovieScalingModeAspectFit; //固定缩放比例并且尽量全部
        [self.view addSubview:_moviePlayer.view];
    }
    return _moviePlayer;
}

/**
 *  添加视频播放的通知
 */
- (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];
}

- (void)playbackstateDidChange:(NSNotification *)noti
{
    switch (self.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
{
    //播放完成
}

@end

附上demo下载地址

MPMoviePlayerController使用.zip

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-22 15:15:08

使用MPMoviePlayerController播放在线视频的相关文章

MPMoviePlayerViewController播放在线视频

前言:之前介绍过 使用MPMoviePlayerController播放在线视频,本文将介绍MPMoviePlayerViewController,二者的区别就是MPMoviePlayerViewController包含了一个MPMoviePlayerViewController 一 使用方法 1 初始化和展示 _playerViewVC = [[MPMoviePlayerViewController alloc] initWithContentURL:[self url]]; <span st

android webview 通过html5播放在线视频 切换大屏

1.添加网络访问权限 <uses-permission android:name="android.permission.INTERNET" /> 2.webview添加全屏支持 developer官方文档关于html5支持视频播放描述如下:In order to support inline HTML5 video in your application, you need to have hardware acceleration turned on, and set

Android 播放在线视频

首先开启电脑上的tomcat,将视频文件放在Tomcat 7.0\webapps\ROOT中 不用修改代码,直接输入地址即可,运行如下: 播放在线视频,必须要求手机支持当前的格式,才可以播放 播放的原理:分段的下载服务器上的资源进入缓存 2.3版本的android对流媒体的协议支持不是很完善,4.0以后的对绝大多数的流媒体协议的支持

surface初步学习,播放在线视频和本地视频

这里只基本介绍如何播放视频:surfaceview是利用双缓冲区的原理来使得用户可以流畅的观看视频的: 比如A.B缓冲区,先由A缓冲区填满推送到设备播放,然后再A播放的时候填满B缓冲区,等A播放完了就播放B缓冲区的内容,如此交换执行. public class MainActivity extends ActionBarActivity { private SurfaceHolder holder; private SurfaceView sf; private MediaPlayer medi

Swift - 使用Media Player播放本地视频,在线视频

Media Player框架用于播放本地视频.音频,也可以在线播放视频和音频. 1,播放器MPMovieControlStyle样式有如下几种: (1)None: 没有播放控制控件 (2)Embedded:嵌入式播放控件.没有Done按钮 (3)FullScreen:全屏播放,有播放进度.Done按钮和快进等控件    2,播放本地视频 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 im

MPMoviePlayerController播放视频

基本的视频播放,应该都是用MPMoviePlayerController吧,SDK文档里给出的例子也是这样的. 一般的步骤: 1. 准备好视频路径,创建MPMoviePlayerController,即使是本地视频文件,也要生成NSURL路径. [cpp] view plaincopy NSString *file = [[NSBundle mainBundle] pathForResource:@"test_movie" ofType:@"mp4"]; NSURL

照相、从相册上取照片、播放音频、播放本地视频、播放网络视频、MPMoviePlayerController

一.照相.从相册上去照片 1. 先判断是否支持照相功能 *判断当前设备是否支持照相功能,支持返回YES 否则返回NO 注意:模拟器不支持照相功能 把握一个原则只要是物理硬件相关的功能模拟器都不支持 例如: UIImagePickerController 专门处理与照片相关的功能类 是一个控制器 继承于导航视图控制器 if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]

如何在asp.net中如何在线播放各类视频文件

一.后台拼字符串动态加载写法 前台调用代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> < html xmlns="http://www.w3.org/1999/xhtml" > < head id="Head

超碰在线视频

超碰在线视频在哪能看?超碰的最新地址是什么? 请认真看完本文,你就知道不需要超碰网站就能在线看成年人的片了!!!!! 以前超碰很火爆的,只要是想看哪种片子,直接到超碰网站上面就能看了.相信只要是前几年上网的人群,都知道超碰视频的网站吧,那个时候打开超碰视频网站就可以看了,很爽的.不过超碰视频网站现在已经被关掉了,真正的超碰网站已经打不开了. 目前网上搜到的超碰网站,都是假的,不能观看,全部都是广告,大家不要相信.所以大家也不要到处去找超碰在线视频网站,或者超碰的最新地址.因为真正的超碰网站已经不