MPMoviePlayer 视频播放

前言

  • Objective-C

    1
    2
    3
    4
    5
    MP_EXTERN_CLASS_AVAILABLE(3_2) NS_DEPRECATED_IOS(3_2, 9_0, "Use AVPlayerViewController in AVKit.")
    @interface MPMoviePlayerViewController : UIViewController

    MP_EXTERN_CLASS_AVAILABLE(2_0) NS_DEPRECATED_IOS(2_0, 9_0, "Use AVPlayerViewController in AVKit.")
    @interface MPMoviePlayerController : NSObject <MPMediaPlayback>
  • Swift

    1
    2
    3
    4
    5
    @available(iOS, introduced=3.2, deprecated=9.0, message="Use AVPlayerViewController in AVKit.")
    public class MPMoviePlayerViewController : UIViewController

    @available(iOS, introduced=2.0, deprecated=9.0, message="Use AVPlayerViewController in AVKit.")
    public class MPMoviePlayerController : NSObject, MPMediaPlayback
  • 视频播放:

    • 添加库文件:MediaPlayer.framework
    • 包含头文件:#import <MediaPlayer/MediaPlayer.h>

1、本地/网络视频播放

1.1 使用 MPMoviePlayerViewController 播放

  • Objective-C

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    // 添加库文件:MediaPlayer.framework
    // 包含头文件:#import <MediaPlayer/MediaPlayer.h>

    // 声明媒体播放控件
    @property(nonatomic, retain)MPMoviePlayerViewController *mpMoviePlayerVC;

    // 加载文件路径,加载本地视频
    NSURL *mediaUrl = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"步步高手机" ofType:@"mp4"]];

    // 加载文件路径,加载网络视频
    NSURL *mediaUrl = [NSURL URLWithString:@"http://w2.dwstatic.com/1/5/1525/127352-100-1434554639.mp4"];

    // 实例化媒体播放控件
    mpMoviePlayerVC = [[MPMoviePlayerViewController alloc] initWithContentURL:mediaUrl];

    // 弹出播放页面,开始播放
    [self presentMoviePlayerViewControllerAnimated: mpMoviePlayerVC];
  • Swift

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    // 添加库文件:MediaPlayer.framework
    // 包含头文件:import MediaPlayer

    // 声明媒体播放控件
    var mpMoviePlayerVC:MPMoviePlayerViewController!

    // 加载文件路径,加载本地视频
    let mediaUrl:NSURL = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("步步高手机", ofType: "mp4")!)

    // 加载文件路径,加载网络视频
    let mediaUrl:NSURL = NSURL(string: "http://w2.dwstatic.com/1/5/1525/127352-100-1434554639.mp4")!

    // 实例化媒体播放控件
    mpMoviePlayerVC = MPMoviePlayerViewController(contentURL: mediaUrl)

    // 弹出播放页面,开始播放
    self.presentMoviePlayerViewControllerAnimated(mpMoviePlayerVC)

1.2 使用 MPMoviePlayerController 播放

  • Objective-C

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    // 添加库文件:MediaPlayer.framework
    // 包含头文件:#import <MediaPlayer/MediaPlayer.h>

    // 声明媒体播放控件
    @property(nonatomic, retain)MPMoviePlayerController *mpMoviePlayer;

    // 加载文件路径,加载本地视频
    NSURL *mediaUrl = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"步步高手机" ofType:@"mp4"]];

    // 加载文件路径,加载网络视频
    NSURL *mediaUrl = [NSURL URLWithString:@"http://w2.dwstatic.com/1/5/1525/127352-100-1434554639.mp4"];

    // 实例化媒体播放控件
    mpMoviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:mediaUrl];

    // 添加播放页面,开始播放
    [self.view addSubview:mpMoviePlayer.view];

    // 设置是否全屏播放,必须设置,必须放在添加页面之后设置,为 NO 时,必须设置 mpMoviePlayer.view.frame
    mpMoviePlayer.fullscreen = YES;
  • Swift

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    // 添加库文件:MediaPlayer.framework
    // 包含头文件:import MediaPlayer

    // 声明媒体播放控件
    var mpMoviePlayer:MPMoviePlayerController!

    // 加载文件路径,加载本地视频
    let mediaUrl:NSURL = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("步步高手机", ofType: "mp4")!)

    // 加载文件路径,加载网络视频
    let mediaUrl:NSURL = NSURL(string: "http://w2.dwstatic.com/1/5/1525/127352-100-1434554639.mp4")!

    // 实例化媒体播放控件
    mpMoviePlayer = MPMoviePlayerController(contentURL: mediaUrl)

    // 添加播放页面,开始播放
    self.view.addSubview(mpMoviePlayer.view)

    // 设置是否全屏播放,必须设置,必须放在添加页面之后设置,为 NO 时,必须设置 mpMoviePlayer.view.frame
    mpMoviePlayer.fullscreen = true

2、本地/网络视频播放设置

2.1 使用 MPMoviePlayerViewController 播放

  • Objective-C

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    // 显示播放页面
    /*
    弹出播放页面,开始播放
    */
    [self presentMoviePlayerViewControllerAnimated: mpMoviePlayerVC];

    // 开始播放
    [mpMoviePlayerVC.moviePlayer play];

    // 暂停播放
    [mpMoviePlayerVC.moviePlayer pause];

    // 停止播放
    /*
    停止播放会自动退出播放界面
    */
    [mpMoviePlayerVC.moviePlayer stop];

    // 退出播放
    /*
    退出播放界面,停止播放
    */
    [self dismissMoviePlayerViewControllerAnimated];
  • Swift

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    // 显示播放页面
    /*
    弹出播放页面,开始播放
    */
    self.presentMoviePlayerViewControllerAnimated(mpMoviePlayerVC)

    // 开始播放
    mpMoviePlayerVC.moviePlayer.play()

    // 暂停播放
    mpMoviePlayerVC.moviePlayer.pause()

    // 停止播放
    /*
    停止播放会自动退出播放界面
    */
    mpMoviePlayerVC.moviePlayer.stop()

    // 退出播放
    /*
    退出播放界面,停止播放
    */
    self.dismissMoviePlayerViewControllerAnimated()

2.2 使用 MPMoviePlayerController 播放

  • Objective-C

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    // 判断媒体是否正在通过 AirPlay 播放
    BOOL airPlayVideoActive = mpMoviePlayer.isAirPlayVideoActive;

    // 判断是否准备好显示
    BOOL readyForDisplay = mpMoviePlayer.readyForDisplay;

    // 获取播放控制器所在的视图
    /*
    The view in which the media and playback controls are displayed
    */
    UIView *playbackView = mpMoviePlayer.view;

    // 获取媒体播放背景视图
    /*
    A view for customization which is always displayed behind movie content
    */
    UIView *backgroundView = mpMoviePlayer.backgroundView;

    // 获取播放状态
    /*
    MPMoviePlaybackStateStopped, 停止
    MPMoviePlaybackStatePlaying, 播放
    MPMoviePlaybackStatePaused, 暂停
    MPMoviePlaybackStateInterrupted, 中断
    MPMoviePlaybackStateSeekingForward, 快进
    MPMoviePlaybackStateSeekingBackward 快退

    Returns the current playback state of the movie player
    */
    MPMoviePlaybackState playbackState = mpMoviePlayer.playbackState;

    // 获取网络加载状态
    /*
    MPMovieLoadStateUnknown = 0, 状态未知
    MPMovieLoadStatePlayable = 1 << 0, 可播放
    MPMovieLoadStatePlaythroughOK = 1 << 1, Playback will be automatically started in this
    state when shouldAutoplay is YES
    MPMovieLoadStateStalled = 1 << 2, Playback will be automatically paused in this
    state, if started

    Returns the network load state of the movie player
    */
    MPMovieLoadState loadState = mpMoviePlayer.loadState;

    // 获取媒体类型
    /*
    MPMovieMediaTypeMaskNone = 0,
    MPMovieMediaTypeMaskVideo = 1 << 0,
    MPMovieMediaTypeMaskAudio = 1 << 1

    The types of media in the movie, or MPMovieMediaTypeNone if not known
    */
    MPMovieMediaTypeMask movieMediaType = mpMoviePlayer.movieMediaTypes;

    // 获取媒体原始尺寸
    /*
    The natural size of the movie, or CGSizeZero if not known/applicable
    */
    CGSize naturalSize = mpMoviePlayer.naturalSize;

    // 获取媒体播放时长
    /*
    The duration of the movie, or 0.0 if not known
    */
    NSTimeInterval duration = mpMoviePlayer.duration;

    // 获取当前可播放的时长
    /*
    for progressively downloaded network content
    */
    NSTimeInterval playableDuration = mpMoviePlayer.playableDuration;

    // 设置播放页面大小
    mpMoviePlayer.view.frame = CGRectMake(10, 30, self.view.bounds.size.width - 20, 200);

    // 缓冲视频
    /*
    即使不写,系统也会自动调用该方法
    */
    [mpMoviePlayer prepareToPlay];

    // 显示播放页面
    /*
    添加播放页面,开始播放
    */
    [self.view addSubview:mpMoviePlayer.view];

    // 开始播放
    [mpMoviePlayer play];

    // 暂停播放
    [mpMoviePlayer pause];

    // 停止播放
    [mpMoviePlayer stop];

    // 设置全屏
    [mpMoviePlayer setFullscreen:YES animated:YES];

    // 快进
    [mpMoviePlayer beginSeekingForward];

    // 快退
    [mpMoviePlayer beginSeekingBackward];

    // 停止快进或快退
    [mpMoviePlayer endSeeking];

    // 设置是否全屏播放
    /*
    必须设置,必须放在添加页面之后设置,设置为 NO 时,必须设置 mpMoviePlayer.view.frame 的大小
    */
    mpMoviePlayer.fullscreen = NO;

    // 设置是否自动开始播放
    /*
    默认为 YES
    */
    mpMoviePlayer.shouldAutoplay = NO;

    // 设置是否允许通过 AirPlay 播放
    /*
    Defaults to YES on iOS 5.0 and later
    */
    mpMoviePlayer.allowsAirPlay = NO;

    // 设置当前播放时间
    mpMoviePlayer.currentPlaybackTime = 10;

    // 设置当前播放速度
    /*
    默认为 1.0 (normal speed),设为 0.0 时暂停播放
    */
    mpMoviePlayer.currentPlaybackRate = 1.0;

    // 设置开始播放时间
    /*
    The start time of movie playback. Defaults to NaN, indicating the natural start time of
    the movie
    */
    mpMoviePlayer.initialPlaybackTime = 10;

    // 设置停止播放时间
    /*
    The end time of movie playback. Defaults to NaN, which indicates natural end time of
    the movie
    */
    mpMoviePlayer.endPlaybackTime = 20;

    // 设置播放控制器类型
    /*
    MPMovieControlStyleNone, 没有控制器, No controls
    MPMovieControlStyleEmbedded, 嵌入式,默认,Controls for an embedded view 可将播放窗口全屏化
    MPMovieControlStyleFullscreen, 全屏式, Controls for fullscreen playback

    MPMovieControlStyleDefault = MPMovieControlStyleEmbedded
    */
    mpMoviePlayer.controlStyle = MPMovieControlStyleEmbedded;

    // 设置重复播放模式
    /*
    MPMovieRepeatModeNone, 不重复,默认
    MPMovieRepeatModeOne 重复播放
    */
    mpMoviePlayer.repeatMode = MPMovieRepeatModeNone;

    // 设置画面缩放模式
    /*
    MPMovieScalingModeNone, 不做任何缩放
    MPMovieScalingModeAspectFit, 适应屏幕大小,保持宽高比,默认
    MPMovieScalingModeAspectFill, 充满屏幕,保持宽高比
    MPMovieScalingModeFill 充满屏幕,不保持宽高比
    */
    mpMoviePlayer.scalingMode = MPMovieScalingModeAspectFit;

    // 设置媒体资源类型
    /*
    The playback type of the movie. Defaults to MPMovieSourceTypeUnknown.
    Specifying a playback type before playing the movie can result in faster load times.

    MPMovieSourceTypeUnknown,
    MPMovieSourceTypeFile, Local or progressively downloaded network content
    MPMovieSourceTypeStreaming Live or on-demand streaming content
    */
    mpMoviePlayer.movieSourceType = MPMovieSourceTypeFile;
  • Swift

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    // 判断媒体是否正在通过 AirPlay 播放
    let airPlayVideoActive:Bool = mpMoviePlayer.airPlayVideoActive

    // 判断是否准备好显示
    let readyForDisplay:Bool = mpMoviePlayer.readyForDisplay

    // 获取播放控制器所在的视图
    /*
    The view in which the media and playback controls are displayed
    */
    let playbackView:UIView = mpMoviePlayer.view

    // 获取媒体播放背景视图
    /*
    A view for customization which is always displayed behind movie content
    */
    let backgroundView:UIView = mpMoviePlayer.backgroundView

    // 获取播放状态
    /*
    Stopped, 停止
    Playing, 播放
    Paused, 暂停
    Interrupted, 中断
    SeekingForward, 快进
    SeekingBackward 快退

    Returns the current playback state of the movie player
    */
    let playbackState:MPMoviePlaybackState = mpMoviePlayer.playbackState

    // 获取网络加载状态
    /*
    Unknown = 0, 状态未知
    Playable = 1 << 0, 可播放
    PlaythroughOK = 1 << 1, Playback will be automatically started in this state when
    shouldAutoplay is YES
    Stalled = 1 << 2, Playback will be automatically paused in this state, if started

    Returns the network load state of the movie player
    */
    let loadState:MPMovieLoadState = mpMoviePlayer.loadState

    // 获取媒体类型
    /*
    MaskNone = 0,
    MaskVideo = 1 << 0,
    MaskAudio = 1 << 1

    The types of media in the movie, or MPMovieMediaTypeNone if not known
    */
    let movieMediaType:MPMovieMediaTypeMask = mpMoviePlayer.movieMediaTypes

    // 获取媒体原始尺寸
    /*
    The natural size of the movie, or CGSizeZero if not known/applicable
    */
    let naturalSize:CGSize = mpMoviePlayer.naturalSize

    // 获取媒体播放时长
    /*
    The duration of the movie, or 0.0 if not known
    */
    let duration:NSTimeInterval = mpMoviePlayer.duration

    // 获取当前可播放的时长
    /*
    for progressively downloaded network content
    */
    let playableDuration:NSTimeInterval = mpMoviePlayer.playableDuration

    // 设置播放页面大小
    mpMoviePlayer.view.frame = CGRectMake(10, 30, self.view.bounds.size.width - 20, 200)

    // 缓冲视频
    /*
    即使不写,系统也会自动调用该方法
    */
    mpMoviePlayer.prepareToPlay()

    // 显示播放页面
    /*
    添加播放页面,开始播放
    */
    self.view.addSubview(mpMoviePlayer.view)

    // 开始播放
    mpMoviePlayer.play()

    // 暂停播放
    mpMoviePlayer.pause()

    // 停止播放
    mpMoviePlayer.stop()

    // 设置全屏
    mpMoviePlayer.setFullscreen(true, animated: true)

    // 快进
    mpMoviePlayer.beginSeekingForward()

    // 快退
    mpMoviePlayer.beginSeekingBackward()

    // 停止快进或快退
    mpMoviePlayer.endSeeking()

    // 设置是否全屏播放
    /*
    必须设置,必须放在添加页面之后设置,设置为 NO 时,必须设置 mpMoviePlayer.view.frame 的大小
    */
    mpMoviePlayer.fullscreen = false

    // 设置是否自动开始播放
    /*
    默认为 YES
    */
    mpMoviePlayer.shouldAutoplay = false

    // 设置是否允许通过 AirPlay 播放
    /*
    Defaults to YES on iOS 5.0 and later
    */
    mpMoviePlayer.allowsAirPlay = false

    // 设置当前播放时间
    mpMoviePlayer.currentPlaybackTime = 10

    // 设置当前播放速度
    /*
    默认为 1.0 (normal speed),设为 0.0 时暂停播放
    */
    mpMoviePlayer.currentPlaybackRate = 1.0

    // 设置开始播放时间
    /*
    The start time of movie playback. Defaults to NaN, indicating the natural start time of
    the movie
    */
    mpMoviePlayer.initialPlaybackTime = 10

    // 设置停止播放时间
    /*
    The end time of movie playback. Defaults to NaN, which indicates natural end time of
    the movie
    */
    mpMoviePlayer.endPlaybackTime = 20

    // 设置播放控制器类型
    /*
    None, 没有控制器, No controls
    Embedded, 嵌入式,默认,Controls for an embedded view 可将播放窗口全屏化
    Fullscreen, 全屏式, Controls for fullscreen playback
    */
    mpMoviePlayer.controlStyle = MPMovieControlStyle.Embedded

    // 设置重复播放模式
    /*
    None, 不重复,默认
    One 重复播放
    */
    mpMoviePlayer.repeatMode = MPMovieRepeatMode.None

    // 设置画面缩放模式
    /*
    None, 不做任何缩放
    AspectFit, 适应屏幕大小,保持宽高比,默认
    AspectFill, 充满屏幕,保持宽高比
    Fill 充满屏幕,不保持宽高比
    */
    mpMoviePlayer.scalingMode = MPMovieScalingMode.AspectFit

    // 设置媒体资源类型
    /*
    The playback type of the movie. Defaults to MPMovieSourceTypeUnknown.
    Specifying a playback type before playing the movie can result in faster load times.

    Unknown,
    File, Local or progressively downloaded network content
    Streaming Live or on-demand streaming content
    */
    mpMoviePlayer.movieSourceType = MPMovieSourceType.File

3、监听播放进度

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
30
31
32
33
34
// Movie Property Notifications:媒体属性观察者

MPMovieMediaTypesAvailableNotification // 媒体属性可获取
MPMovieSourceTypeAvailableNotification // 媒体类型是 MPMovieSourceTypeUnknown

MPMovieDurationAvailableNotification // 媒体播放时长可获取
MPMovieNaturalSizeAvailableNotification // 媒体原始尺寸可获取

// Movie Player Notifications:媒体播放观察者

MPMediaPlaybackIsPreparedToPlayDidChangeNotification // 准备播放

MPMoviePlayerPlaybackDidFinishNotification // 播放完成或退出播放

MPMoviePlayerPlaybackDidFinishReasonUserInfoKey // NSNumber (MPMovieFinishReason)

MPMoviePlayerPlaybackStateDidChangeNotification // 播放状态改变,通过程序或者用户操作改变

MPMoviePlayerScalingModeDidChangeNotification // 画面缩放模式改变

MPMoviePlayerLoadStateDidChangeNotification // 网络加载状态改变

MPMoviePlayerNowPlayingMovieDidChangeNotification // 当前播放媒体改变

MPMoviePlayerWillEnterFullscreenNotification // 将要进入全屏播放状态
MPMoviePlayerDidEnterFullscreenNotification // 已经进入全屏播放状态
MPMoviePlayerWillExitFullscreenNotification // 将要退出全屏播放状态
MPMoviePlayerDidExitFullscreenNotification // 已经退出全屏播放状态
MPMoviePlayerFullscreenAnimationDurationUserInfoKey // NSNumber of double (NSTimeInterval)
MPMoviePlayerFullscreenAnimationCurveUserInfoKey // NSNumber of NSUInteger (UIViewAnimationCurve)

MPMoviePlayerIsAirPlayVideoActiveDidChangeNotification // 开始或停止通过 AirPlay 播放

MPMoviePlayerReadyForDisplayDidChangeNotification // 准备好显示
  • Objective-C

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    // 添加系统通知观察者
    /*
    观察的状态发生改变时将会调用添加的相应方法进行处理
    */
    [[NSNotificationCenter defaultCenter] addObserver:self
    selector:@selector(playFinished)
    name:MPMoviePlayerPlaybackDidFinishNotification
    object:mpMoviePlayer];

    // 观察者响应事件
    - (void)playFinished {

    }

    // 取消监听
    [[NSNotificationCenter defaultCenter] removeObserver:self
    name:MPMoviePlayerPlaybackDidFinishNotification
    object:mpMoviePlayer];
  • Swift

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    // 添加系统通知观察者
    /*
    观察的状态发生改变时将会调用添加的相应方法进行处理
    */
    NSNotificationCenter.defaultCenter().addObserver(self,
    selector: #selector(MpMoviePlayerController.playFinished),
    name: MPMoviePlayerPlaybackDidFinishNotification,
    object: mpMoviePlayer)

    // 观察者响应事件
    func playFinished() {

    }

    // 取消监听
    NSNotificationCenter.defaultCenter().removeObserver(self,
    name: MPMoviePlayerPlaybackDidFinishNotification,
    object: mpMoviePlayer)
文章目录
  1. 1. 前言
  2. 2. 1、本地/网络视频播放
    1. 2.1. 1.1 使用 MPMoviePlayerViewController 播放
    2. 2.2. 1.2 使用 MPMoviePlayerController 播放
  3. 3. 2、本地/网络视频播放设置
    1. 3.1. 2.1 使用 MPMoviePlayerViewController 播放
    2. 3.2. 2.2 使用 MPMoviePlayerController 播放
  4. 4. 3、监听播放进度
隐藏目录