效果如下:

ViewController.h

  1. #import <UIKit/UIKit.h>
  2. #import <MediaPlayer/MediaPlayer.h>
  3.  
  4. @interface ViewController : UIViewController
  5. @property (strong, nonatomic) IBOutlet UIButton *btnPlayMovie;
  6. @property (strong, nonatomic) MPMoviePlayerController *moviePlayerController;
  7.  
  8. @end

ViewController.m

  1. #import "ViewController.h"
  2.  
  3. @interface ViewController ()
  4. - (void)layoutUI;
  5. @end
  6.  
  7. @implementation ViewController
  8.  
  9. - (void)viewDidLoad {
  10. [super viewDidLoad];
  11.  
  12. [self layoutUI];
  13. }
  14.  
  15. - (void)didReceiveMemoryWarning {
  16. [super didReceiveMemoryWarning];
  17. // Dispose of any resources that can be recreated.
  18. }
  19.  
  20. - (void)layoutUI {
  21.  
  22. }
  23.  
  24. - (IBAction)playMovie:(id)sender {
  25. NSString *filePath = [[NSBundle mainBundle] pathForResource:@"Big-Buck-Bunny-Clip"
  26. ofType:@"m4v"];
  27. NSURL *fileURL = [NSURL fileURLWithPath:filePath];
  28. //导入<MediaPlayer/MediaPlayer.h>包,必须在头文件声明对应的全局引用的电影播放器控制器对象示例属性,否则会出现黑屏无法播放,因为对象被回收了
  29. //实现电影播放器控制器对象示例_moviePlayerController
  30. _moviePlayerController = [[MPMoviePlayerController alloc] initWithContentURL:fileURL];
  31. _moviePlayerController.view.frame = CGRectMake(,
  32. _btnPlayMovie.frame.origin.y,
  33. self.view.frame.size.width,
  34. _btnPlayMovie.frame.size.height);
  35.  
  36. //从通知中心,添加电影播放器控制器对象示例(播放完成返回状态)的观察者
  37. [[NSNotificationCenter defaultCenter] addObserver:self
  38. selector:@selector(playMovieComplete:)
  39. name:MPMoviePlayerPlaybackDidFinishNotification
  40. object:_moviePlayerController];
  41. [self.view addSubview:_moviePlayerController.view];
  42. [_moviePlayerController play];
  43. }
  44.  
  45. - (void)playMovieComplete:(NSNotification *)notification {
  46. MPMoviePlayerController *moviePlayController = [notification object];
  47. //从通知中心,移除电影播放器控制器对象示例(播放完成返回状态)的观察者
  48. [[NSNotificationCenter defaultCenter] removeObserver:self
  49. name:MPMoviePlayerPlaybackDidFinishNotification
  50. object:moviePlayController];
  51. //从它的父级视图,移除电影播放器控制器对象示例的视图
  52. [moviePlayController.view removeFromSuperview];
  53. }
  54.  
  55. @end

Main.storyboard

  1. <?xml version="1.0" encoding="UTF-8" standalone="no"?>
  2. <document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="7702" systemVersion="14D136" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="vXZ-lx-hvc">
  3. <dependencies>
  4. <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="7701"/>
  5. </dependencies>
  6. <scenes>
  7. <!--View Controller-->
  8. <scene sceneID="ufC-wZ-h7g">
  9. <objects>
  10. <viewController id="vXZ-lx-hvc" customClass="ViewController" sceneMemberID="viewController">
  11. <layoutGuides>
  12. <viewControllerLayoutGuide type="top" id="jyV-Pf-zRb"/>
  13. <viewControllerLayoutGuide type="bottom" id="2fi-mo-0CV"/>
  14. </layoutGuides>
  15. <view key="view" contentMode="scaleToFill" id="kh9-bI-dsS">
  16. <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
  17. <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
  18. <subviews>
  19. <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="POH-zG-xLO">
  20. <rect key="frame" x="140" y="185" width="320" height="230"/>
  21. <state key="normal" image="Big-Buck-Bunny-Clip">
  22. <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
  23. </state>
  24. <connections>
  25. <action selector="playMovie:" destination="vXZ-lx-hvc" eventType="touchUpInside" id="RTL-0Q-0nR"/>
  26. </connections>
  27. </button>
  28. </subviews>
  29. <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
  30. <constraints>
  31. <constraint firstItem="POH-zG-xLO" firstAttribute="centerX" secondItem="kh9-bI-dsS" secondAttribute="centerX" id="DhU-rM-rsz"/>
  32. <constraint firstAttribute="width" secondItem="POH-zG-xLO" secondAttribute="width" id="Mzy-Q3-6CL"/>
  33. <constraint firstItem="POH-zG-xLO" firstAttribute="centerY" secondItem="kh9-bI-dsS" secondAttribute="centerY" id="OPN-No-jC2"/>
  34. </constraints>
  35. <variation key="default">
  36. <mask key="constraints">
  37. <exclude reference="Mzy-Q3-6CL"/>
  38. </mask>
  39. </variation>
  40. </view>
  41. <connections>
  42. <outlet property="btnPlayMovie" destination="POH-zG-xLO" id="kEF-6Y-YOE"/>
  43. </connections>
  44. </viewController>
  45. <placeholder placeholderIdentifier="IBFirstResponder" id="x5A-6p-PRh" sceneMemberID="firstResponder"/>
  46. </objects>
  47. </scene>
  48. </scenes>
  49. <resources>
  50. <image name="Big-Buck-Bunny-Clip" width="320" height="230"/>
  51. </resources>
  52. </document>

183使用 MediaPlayer Framework 框架播放视频的更多相关文章

  1. [Xcode 实际操作]六、媒体与动画-(17)使用MediaPlayer框架播放视频

    目录:[Swift]Xcode实际操作 本文将演示视频的播放功能. 在项目名称上点击鼠标右键,弹出右键菜单, 选择[Add Files to "DemoApp"],往项目中导入文件 ...

  2. Android MediaPlayer和SurfaceView播放视频

    昨天介绍了VideoView播放视频,今天再介绍一种播放视频的方法MediaPlayer和SurfaceView,MediaPlayer播放音频,SurfaceView来显示图像,具体步骤如下: 1. ...

  3. 使用MediaPlayer和SurfaceView播放视频

    使用VideoView播放视频简单.方便,丹有些早期的开发者更喜欢使用MediaPlayer来播放视频,但由于MediaPlayer主要用于播放音频,因此它没有提供图像输出界面,此时 需要借助于Sur ...

  4. android中使用MediaPlayer和SurfaceView播放视频

    package com.test.video; import java.io.IOException; import android.media.AudioManager; import androi ...

  5. 运用surfaceView与MediaPlayer实现播放视频的功能

    该程序运用了surfaceView与MediaPlayer结合,实现播放视频,surfaceView详情请见 SurfaceView的使用 使用了第三方包Volly里面的方法StringQueue下载 ...

  6. android中使用surfaceview+MediaPlayer播放视频

    Android中播放视频主要有两种方式: 使用其自带的播放器.指定Action为ACTION_VIEW,Data为Uri,Type为其MIME类型 使用android自带的VideoView,这种方法 ...

  7. 使用MediaPlayer类和SurfaceView来播放视频

    MediaPlayer可以播放视频,只需需要SurfaceView的配合,SurfaceView主要用于显示MediaPlayer播放的视频流媒体的画面渲染. SurfaceView是配合MediaP ...

  8. Android开发 MediaPlayer入门_播放本地视频

    前言 MediaPlayer,可以播放视频/音频,并且它支持本地和网络文件的播放.本片博客作为入门教程,先以最通俗的方式解释播放文件本地视频.(如果你嫌MediaPlayer还是太麻烦可以试试选择Vi ...

  9. iOS中 MediaPlayer framework实现视频播放 韩俊强的博客

    iOS开发中播放音乐可以使用MPMusicPlayerController类来实现,播放视频可以使用MPMoviePlayerController和MPMoviePlayerViewControlle ...

随机推荐

  1. 轻量级Modal模态框插件cta.js

    今天给大家分享一款轻量级Modal模态框插件cta.js.这是一款无需使用jQuery插件,纯js编写的模态框弹出特效.效果图如下: 在线预览   源码下载 实现的代码. html代码: <se ...

  2. 【Lua】环境安装与HelloWorld

    emmmm...看了W3C和菜鸟教程的环境安装,感觉还是省略了一些东西的. 记录一下在Windows上怎么开始编写Lua的学习过程. 环境安装 直接在Lua官网上找到最新版的下载地址,根据说明下载Lu ...

  3. MAC版Eclipse的常用快捷键

    一.Command类 Command+1 快速修复 Command+d 删除当前行 Command+Option+↓ 复制当前行到下一行 Command+Option+↑ 复制当前行到上一行 Comm ...

  4. TP v5中Request取值方式变化

    到目前为止的5.0.7版本中,route里相关参数不会再压入$_GET与$_REQUEST变量中,比如 index.php/user/blog/id/123 里我们想用 $_GET['id']是取不到 ...

  5. win10老提示系统错误,要注销

    win10老提示系统错误,要注销? 开启user manager 服务(对我没用) 用administrator账户(成功,不提示了) 或者创建一个新账户(未测)

  6. Nginx+php (十六)

    [教程主题]:Nginx+php [课程录制]: 创E [主要内容] [1] 编译PHP 初始环境: 为了省事把所需要的库文件全都安装上,可以使用rpm包安装,也可以用yum命令安装, yum -y  ...

  7. 莫衷一是——i+++j 该怎样计算?

    这是一个有趣的计算, 3 个加号相连.那么,究竟是怎样结合的呢?是依照: i + (++j)来运算,还是依照(i++) + j 来运算呢? 这个问题在相似于 C / C++中讨论是没有多大意义的,由于 ...

  8. Android训练课程(Android Training) - 使用Volley传输网络数据(Transmitting Network Data Using Volley)

    使用Volley传输网络数据(Transmitting Network Data Using Volley) Volley 是一个 HTTP 库,它使得在Android应用程序中操作网络更容易,是重要 ...

  9. svn 备份脚本

    [root@hm-vpnserver-196 ~]# cat /root/svnback.sh #!/bin/bashtt=$(ls /home/svndata/) for i in $ttdo mk ...

  10. WebRTC 源码分析(三):安卓视频硬编码

    数据怎么送进编码器? 怎么从编码器取数据? 如何做流控? 在开始之前,我们先了解一下 MediaCodec 的基本知识. MediaCodec 基础 Developer 官网 上的描述已经很清楚了,下 ...