iosmpmovieplayer视频播放

yjand615 贡献于2016-11-25

作者 杨十郎  创建于2016-11-08 09:30:00   修改者杨十郎  修改于2016-11-08 09:30:00字数13012

文档摘要:
关键词:

iOS - MPMoviePlayer 视频播放 本文目录 · 前言 · 1、本地/网络视频播放 · 2、本地/网络视频播放设置 · 3、监听播放进度 回到顶部 前言 MP_EXTERN_CLASS_AVAILABLE(3_2) NS_DEPRECATED_IOS(3_2, 9_0, "Use AVPlayerViewController in AVKit.") @interface MPMoviePlayerViewController : UIViewController @available(iOS, introduced=3.2, deprecated=9.0, message="Use AVPlayerViewController in AVKit.") public class MPMoviePlayerViewController : UIViewController MP_EXTERN_CLASS_AVAILABLE(2_0) NS_DEPRECATED_IOS(2_0, 9_0, "Use AVPlayerViewController in AVKit.") @interface MPMoviePlayerController : NSObject @available(iOS, introduced=2.0, deprecated=9.0, message="Use AVPlayerViewController in AVKit.") public class MPMoviePlayerController : NSObject, MPMediaPlayback · 视频播放: · 添加库文件:MediaPlayer.framework · 包含头文件:#import 回到顶部 1、本地/网络视频播放 1.1 使用 MPMoviePlayerViewController 播放 · Objective-C · // 添加库文件:MediaPlayer.framework · // 包含头文件:#import · · // 声明媒体播放控件 · @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 · // 添加库文件: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 · // 添加库文件:MediaPlayer.framework · // 包含头文件:#import · · // 声明媒体播放控件 · @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 · // 添加库文件: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 · // 显示播放页面 · /* · 弹出播放页面,开始播放 · */ · [self presentMoviePlayerViewControllerAnimated: mpMoviePlayerVC]; · · // 开始播放 · [mpMoviePlayerVC.moviePlayer play]; · · // 暂停播放 · [mpMoviePlayerVC.moviePlayer pause]; · · // 停止播放 · /* · 停止播放会自动退出播放界面 · */ · [mpMoviePlayerVC.moviePlayer stop]; · · // 退出播放 · /* · 退出播放界面,停止播放 · */ [self dismissMoviePlayerViewControllerAnimated]; · Swift · // 显示播放页面 · /* · 弹出播放页面,开始播放 · */ · self.presentMoviePlayerViewControllerAnimated(mpMoviePlayerVC) · · // 开始播放 · mpMoviePlayerVC.moviePlayer.play() · · // 暂停播放 · mpMoviePlayerVC.moviePlayer.pause() · · // 停止播放 · /* · 停止播放会自动退出播放界面 · */ · mpMoviePlayerVC.moviePlayer.stop() · · // 退出播放 · /* · 退出播放界面,停止播放 · */ self.dismissMoviePlayerViewControllerAnimated() 2.2 使用 MPMoviePlayerController 播放 · Objective-C · // 判断媒体是否正在通过 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 · // 判断媒体是否正在通过 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、监听播放进度 // 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 · // 添加系统通知观察者 · /* · 观察的状态发生改变时将会调用添加的相应方法进行处理 · */ · [[NSNotificationCenter defaultCenter] addObserver:self · selector:@selector(playFinished) · name:MPMoviePlayerPlaybackDidFinishNotification · object:mpMoviePlayer]; · · // 观察者响应事件 · - (void)playFinished { · · } · · // 取消监听 · [[NSNotificationCenter defaultCenter] removeObserver:self · name:MPMoviePlayerPlaybackDidFinishNotification object:mpMoviePlayer]; · Swift · // 添加系统通知观察者 · /* · 观察的状态发生改变时将会调用添加的相应方法进行处理 · */ · NSNotificationCenter.defaultCenter().addObserver(self, · selector: #selector(MpMoviePlayerController.playFinished), · name: MPMoviePlayerPlaybackDidFinishNotification, · object: mpMoviePlayer) · · // 观察者响应事件 · func playFinished() { · · } · · // 取消监听 · NSNotificationCenter.defaultCenter().removeObserver(self, · name: MPMoviePlayerPlaybackDidFinishNotification, object: mpMoviePlayer)

下载文档到电脑,查找使用更方便

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 10 金币 [ 分享文档获得金币 ] 0 人已下载

下载文档