MPMoviePlayerViewController视频播放。添加MediaPlayer.framework
示例代码如下:
// // ViewController.h // MoviePlayTest // 视频播放 // Created by Dwen on 13-2-28. // Copyright (c) 2013年 Dwen. All rights reserved. // #import <UIKit/UIKit.h> @interface ViewController : UIViewController //本地视频播放 - (IBAction)playMovie:(id)sender; //远程视频播放 - (IBAction)remote:(id)sender; @end
// // ViewController.m // MoviePlayTest // 视频播放:支持的文件类型包括MOV、MP4、MPV、M4V、3GP、MP3、AIFF和M4A. // Created by Dwen on 13-2-28. // Copyright (c) 2013年 Dwen. All rights reserved. // #import "ViewController.h" #import <MediaPlayer/MediaPlayer.h> #define PATHSTRING @"http://www.archive.org/download/bb_poor_cinderella/bb_poor_cinderella_512kb.mp4" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; NSLog(@"系统名称:%@ ,系统版本: %@",[[UIDevice currentDevice] systemName],[[UIDevice currentDevice] systemVersion]); } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } //本地播放 - (IBAction)playMovie:(id)sender { NSString *path = [[NSBundle mainBundle] pathForResource:@"1" ofType:@"mp4"]; NSURL *URL = [NSURL fileURLWithPath:path]; if (URL) { MPMoviePlayerViewController* tmpMoviePlayViewController=[[MPMoviePlayerViewController alloc] initWithContentURL:URL]; //视频资源类型 tmpMoviePlayViewController.moviePlayer.movieSourceType = MPMovieSourceTypeFile; //播放结束后通知 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playbackDidFinish:) name:MPMoviePlayerPlaybackDidFinishNotification object:tmpMoviePlayViewController]; //播放视频 [tmpMoviePlayViewController.moviePlayer play]; //动画跳转界面 [self presentMoviePlayerViewControllerAnimated:tmpMoviePlayViewController]; NSLog(@"play..."); } } //远程播放 - (IBAction)remote:(id)sender { // NSURL *URL = [[NSURL alloc] initFileURLWithPath:PATHSTRING]; NSURL *URL = [NSURL URLWithString:PATHSTRING]; if (URL) { MPMoviePlayerViewController *tmpMoviePlayViewController=[[MPMoviePlayerViewController alloc] initWithContentURL:URL]; [self presentMoviePlayerViewControllerAnimated:tmpMoviePlayViewController]; tmpMoviePlayViewController.moviePlayer.movieSourceType = MPMovieSourceTypeFile; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playbackDidFinish:) name:MPMoviePlayerPlaybackDidFinishNotification object:tmpMoviePlayViewController]; [tmpMoviePlayViewController.moviePlayer play]; NSLog(@"play..."); }else{ UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示" message:@"文件不存在" delegate:self cancelButtonTitle:@"确定" otherButtonTitles:nil, nil]; [alert show]; } } //播完后关闭视频 -(void)playbackDidFinish:(NSNotification *)noti { MPMoviePlayerViewController * mpv = [noti object]; [mpv dismissMoviePlayerViewControllerAnimated]; } @end
实现过程中的问题:
1、
//保存当前视频播放时间通知(**为解决当正在播放时,用户按home键使程序进入后台并暂停工作,当用户再次点击程序时,需回到开始退出视频的播放点继续播放)
- (void)viewDidLoad{
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(saveCurrentPalyTime) name:@"SaveCurrentPalyBackTime" object:nil];
//继续播放通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(continuePlay) name:@"ContinuePlayBack" object:nil];
}
- (void)viewDidUnload{
//清除通知,不然会报异常
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
应用程序Delegate.m文件中
- (void)applicationDidEnterBackground:(UIApplication *)application
{
//通知方式保存当前视频播放时间
[[NSNotificationCenter defaultCenter] postNotificationName:@"SaveCurrentPalyBackTime" object:self];
}
- (void)applicationWillEnterForeground:(UIApplication *)application
{
//继续播放视频通知
[[NSNotificationCenter defaultCenter] postNotificationName:@"ContinuePlayBack" object:self];
}
相关推荐
本篇文章将详细介绍两种常见的iOS视频压缩方法:使用AVFoundation框架的AVAssetExportSession和利用FFmpeg库。 1. AVFoundation框架的AVAssetExportSession: AVFoundation是Apple提供的一个强大的多媒体处理框架,...
本教程将介绍两种实现iOS视频和图片混合轮播的方案,供开发者根据项目需求选择适合的方法。 首先,我们要了解基本的轮播组件。在iOS中,通常使用`UICollectionView`或`UIPageViewController`来实现轮播效果。对于...
本项目标题“iOS视频图片混合轮播,支持视频播放和图片预览”揭示了一个功能完备的解决方案,它能够无缝地在图片和视频之间切换,为用户提供流畅的浏览体验。 在iOS开发中,我们通常使用Objective-C或Swift来构建...
在iOS开发中,视频播放是常见的功能之一,尤其在移动应用中,用户对多媒体内容的需求日益增长。这个“iOS 视频播放Demo”提供了一个很好的起点,帮助开发者了解如何在iOS应用中集成视频播放功能。以下将详细讲解相关...
在iOS平台上实现视频通话功能,通常涉及到多个技术层面,包括音视频采集、编码、传输以及解码和渲染等。以下是对这些关键知识点的...通过深入理解这些知识点,并结合具体代码,可以构建出完整的iOS视频通话应用程序。
本示例项目“iOS视频播放demo”旨在提供一个基础的视频播放功能,包括进度条控制、播放时间与剩余时间的显示以及快进和选择播放进度的能力。以下是关于这个项目的一些关键知识点和实现细节: 1. **AVFoundation框架...
它包含了众多工具和库,支持多种编码格式和协议,是iOS视频处理的首选库之一。要将FFmpeg集成到iOS项目中,可以采用CocoaPods或者手动导入源码的方式。 视频分割是视频编辑的基础操作,它允许我们选取视频中的特定...
"iOS视频引导页demo"是一个示例项目,它展示了如何在iOS应用程序中集成视频作为启动引导页。这个简易demo可以帮助开发者理解并实现这一功能。 在iOS中创建视频引导页涉及到以下几个关键知识点: 1. **视频资源处理...
在iOS平台上,开发一款视频播放器并实现大小屏切换功能是一项常见的需求,尤其在移动设备与智能电视或者外接显示器的交互场景下。这个“ios-IOS 视频播放器 大小屏切换.zip”文件可能包含了一个示例项目,用于演示...
标题"iOS视频全屏时锁定横竖"所涉及的核心知识点是iOS应用中的屏幕方向管理,以及针对视频播放的特殊处理。描述中提到的“iOS 9.3测试有效”,意味着这是一个适用于至少iOS 9.3及以上版本的解决方案。 首先,了解...
本项目"IOS视频播放器"旨在提供一个替代苹果原生`MPMoviePlayerController`的解决方案,它具备播放本地和远程视频、控制进度、快进、后退、暂停和全屏等功能,从而提升用户的观影体验。 首先,我们要理解`...
以下是对标题“iOS视频播放器”和描述中的关键知识点的详细解释: 1. **本地视频播放**:iOS视频播放器能够支持本地视频的播放,意味着它需要读取并解析存储在设备上的视频文件。这通常通过使用Apple的AVFoundation...
在iOS开发中,视频播放是一个常见的需求,许多开发者会选择使用第三方库来实现这一功能,以提高效率和用户体验。本文将详细介绍“ios 视频播放第三方(KrVideoPlayerPlus-master)”这一开源项目,以及它如何帮助...
本篇文章将深入探讨iOS视频解码的核心概念、使用的技术以及如何在实际项目中应用。 1. 视频解码基本原理 视频解码是将经过编码的视频流还原成原始图像帧的过程。它涉及到了视频编码标准,如H.264、HEVC(High ...
在iOS平台上,开发一款视频在线...通过以上技术,我们可以构建一个功能完备、用户体验良好的iOS视频在线播放器。在实际开发中,还需要结合具体需求,如视频列表展示、播放控制界面设计、广告插播等功能进行扩展和定制。
这篇博客“ios视频和音频的合成”可能提供了实现这一目标的方法和工具。虽然具体的代码没有直接提供,但我们可以根据标签“源码”和“工具”推测文章会讨论一些编程实践和可能用到的库。 在iOS上进行音视频合成,...
"IOS视频监控demo"是一个示例项目,它提供了实现视频监控功能的基础框架,特别适用于集成大华和海康等知名安防设备厂商的设备。这个demo可以作为开发者学习和参考的起点,帮助他们快速理解和构建自己的视频监控解决...
【标题】"IOS视频教程地址 关东升老师主讲"所涵盖的知识点主要集中在iOS开发的基础部分,由知名讲师关东升主讲。这是一套针对初学者的教程,旨在帮助学习者快速掌握iOS应用程序开发的基本技能,尤其关注Objective-C...
总结来说,"iOS视频拍摄&转码mp4"涵盖了AVFoundation框架的使用、摄像头参数设置、视频数据处理、编码与封装、元数据管理和用户体验优化等多个方面。理解并掌握这些知识点,能帮助开发者在iOS平台上实现高效且高质量...
普通模式的播放, ; 列表普通模式的播放,包括手动点击播放、... 列表的亮暗模式播放,类似于微博、UC浏览器视频列表等APP; 列表视频滑出屏幕后停止播放、滑出屏幕后小窗播放; 优雅的全屏,支持横屏和竖屏全屏模式;