ios播放视频文件一般使用 MPMoviePlayerViewController 和 MPMoviePlayerController。前者是一个view,后者是个Controller。区别就是 MPMoviePlayerViewController里面包含了一个MPMoviePlayerController

注意:MPMoviePlayerViewController 必须   presentMoviePlayerViewControllerAnimated方式添加,否则Done按钮是不会响应通知MPMoviePlayerPlaybackDidFinishNotification事件的;

首先要包含  #import  <MediaPlayer/MediaPlayer.h>头文件和MediaPlayer.framework。

MPMovieControlModeDefault             显示播放 / 暂停、音量和时间控制

MPMovieControlModeVolumeOnly          只显示音量控制

MPMovieControlModeHidden              没有控制器

你可以使用下列宽高比值:

MPMovieScallingModeNone             不做任何缩放

MPMovieScallingModeAspectFit        适应屏幕大小,保持宽高比

MPMovieScallingModeAspectFill       适应屏幕大小,保持宽高比,可裁剪

MPMovieScallingModeFill             充满屏幕,不保持宽高比

//通知

MPMoviePlayerContentPreloadDidFinishNotification  当电影播放器结束对内容的预加载后发出。因为内容可以在仅加载了一部分的情况下播放,所以这个通知可能在已经播放后才发出。

MPMoviePlayerScallingModeDidChangedNotification  当用户改变了电影的缩放模式后发出。用户可以点触缩放图标,在全屏播放和窗口播放之间切换。

MPMoviePlayerPlaybackDidFinishNotification  当电影播放完毕或者用户按下了 Done 按钮后发出

===============================================================================

需要引进的框架:MediaPlayer.framework

第一步:引进框架设置属性

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

@interface RootViewController ()

@property (nonatomic, strong) MPMoviePlayerController *moviePlayer;

@end

@implementation RootViewController

调用:

- (void)viewDidLoad {
    [super viewDidLoad];

    // 5.调用播放器

    //播放网络视频
    NSString *urlString = @"http://video.szzhangchu.com/qiaokeliruanxinbudingA.mp4";
    //播放本地视图,找到文件的路径

//    NSString *urlStr = [[NSBundle mainBundle] pathForResource:@"优酷网-唐豆豆微信摇一摇惨被骗.mp4" ofType:nil];

    [self createMPPlayerController:urlString];

}

第二步:创建播放器

- (void)createMPPlayerController:(NSString *)string
{
   // 1.初始化播放器

    //准备网址
//     NSURL *urlString = [NSURL fileURLWithPath:fileNamePath];
     NSURL *urlString = [NSURL URLWithString:string];

    //初始化播放器
   self.moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:urlString];

    //准备播放
//    [_moviePlayer prepareToPlay];
    //设置moviePlayer的frame
    _moviePlayer.view.frame = self.view.frame;
    //添加到父视图
    [self.view addSubview:_moviePlayer.view];

    // 2.配置属性

    //是否自动播放,默认是NO
    _moviePlayer.shouldAutoplay = YES;
    //设置播放器的样式
    [_moviePlayer setControlStyle:(MPMovieControlStyleFullscreen)];
    //开始播放
    [_moviePlayer play];

    // 3.注册通知
    //注册通知
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(movieFinshed:) name:MPMoviePlayerPlaybackDidFinishNotification object:nil];

}

第三步:实现通知方法

// 4.实现通知中的方法
- (void)movieFinshed:(NSNotification *)sender
{
    //取出通知中心的moviePlayer
    MPMoviePlayerController *movie = [sender object];

    //移除观察者
    [[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerPlaybackDidFinishNotification object:nil];
    //将movie移出父视图
    [movie.view removeFromSuperview];

}

最终效果:

关注博主微博每日更新技术:http://weibo.com/hanjunqiang

iOS中 MPMoviePlayer 实现视频音频播放 作者:韩俊强的更多相关文章

  1. iOS中 CoreGraphics快速绘图(详解) 韩俊强的博客

    每日更新关注:http://weibo.com/hanjunqiang  新浪微博 第一步:先科普一下基础知识: Core Graphics是基于C的API,可以用于一切绘图操作 Core Graph ...

  2. iOS中 Realm的学习与使用 韩俊强的博客

    每日更新关注:http://weibo.com/hanjunqiang  新浪微博! 有问题或技术交流可以咨询!欢迎加入! 这篇直接搬了一份官方文档过来看的 由于之前没用markdown搞的乱七八糟的 ...

  3. iOS中 自定义cell分割线/分割线偏移 韩俊强的博客

    在项目开发中我们会常常遇到tableView 的cell分割线显示不全,左边会空出一截像素,更有甚者想改变系统的分割线,并且只要上下分割线的一个等等需求,今天重点解决以上需求,仅供参考: 每日更新关注 ...

  4. iOS中 UITableViewCell cell划线那些事 韩俊强的博客

    每日更新关注:http://weibo.com/hanjunqiang 在开发中经常遇到cell分割线显示不全或者想自定义线的宽高等; 最近总结了一下,希望帮到大家: 1.不想划线怎么办? Table ...

  5. iOS中 图文混排/自定义图文混排 作者:韩俊强

    指示根视图:(准备几张图片,把label加载在window上) CustomLable *label = [[CustomLable alloc]initWithFrame:CGRectMake(0, ...

  6. iOS中 自定义系统相机 作者:韩俊强

    需要框架: #import <AVFoundation/AVFoundation.h> #import <AssetsLibrary/AssetsLibrary.h> 布局如下 ...

  7. iOS 南京互联网大会分享及个人见解 韩俊强的博客

    首先分两大块: 1.如何打造高效/稳定的App (重点): 2.软件自动化测试: 每日更新关注:http://weibo.com/hanjunqiang  新浪微博! 每日更新关注:http://we ...

  8. iOS中 扫描二维码/生成二维码详解 韩俊强的博客

    最近大家总是问我有没有关于二维码的demo,为了满足大家的需求,特此研究了一番,希望能帮到大家! 每日更新关注:http://weibo.com/hanjunqiang  新浪微博 指示根视图: se ...

  9. iOS中 扫描二维码/生成二维码具体解释 韩俊强的博客

    近期大家总是问我有没有关于二维码的demo,为了满足大家的需求,特此研究了一番,希望能帮到大家! 每日更新关注:http://weibo.com/hanjunqiang  新浪微博 指示根视图: se ...

随机推荐

  1. Android开发Java基础之Java语言基础(1)

    Java中的基本数据类型 整数类型 整数类型用来存储整数数值,既没有小数部分的数值.可以是正数,也可以是负数.整数类型在Java程序中有三种表现形式,分别是十进制,八进制,十六进制. 整型数据根据它所 ...

  2. idea Library XXXXXXXX has broken classes paths

    点fix 然后全部 全部按- 删掉 一开始以为会影响很大 后来发现他地址错了都导不进 要是真要用到的时候也没用 还是要maven单独导进来

  3. LeetCode 2

    No1 Given a sorted array and a target value, return the index if the target is found. If not, return ...

  4. Zookeeper和Chubby【分布式协调系统】

    前言(对于协调系统来说其客户端往往是分布式集群) 大规模分布式系统需要解决各种类型的协调需求: 当集群中有新的进程或服务器加入时,如何探测到它的加入?如何能够自动获取配置参数? 当配置信息被某个进程或 ...

  5. Vue 波纹按钮组件

    代码链接:https://github.com/zhangKunUserGit/vue-component 效果图: 大家可以在线运行: https://zhangkunusergit.github. ...

  6. Linux常见目录及命令介绍

    一.Linux中常用的目录介绍:     /        -根目录     /bin    -命令保存目录(普通用户亦可读取的命令)     /boot    -启动目录,启动相关文件     /d ...

  7. Java常用集合学习总结

    一  数组 数组可以存储基本数据类型和对象的一种容器,长度固定,所以不适合在对象数量未知的情况下使用. Arrays : 用于操作数组对象的工具类,里面都是静态方法. Arrays.asList:把A ...

  8. 自定义一个仿Spinner

    两个布局文件: adpter_list.xml <?xml version="1.0" encoding="utf-8"?> <LinearL ...

  9. self关键字

    self关键字 self:当前类/对象的指针(指向当前对象/方法调用者) 作用1 当类里有变量名和成员变量名一样的时候,可以使用self区分 例: 我们写一个人的类,有一个年龄属性,在get方法里,我 ...

  10. MT8127:改变安卓系统权限问题

    找到对应的文件: system/extras/su/su.c 在main函数中,开头我们可以看下以下代码: uid_t current_uid = getuid(); if (current_uid ...