在iOS中有两种方式可以播放音频视频。
一:AVAudioPlayer。它只能播放本地的音频,不能网络音频(即不能在线播放)MP3
1:首先要手动导入音频的框架 AVFoundation.framework。(iOS7.0以后,不用在手动导入了,它自动已经包含了此框架)
2:包含头文件 #import<AVFoundation/AVFoundation.h>
参考上几篇文章中的 http://blog.csdn.net/u010165653/article/details/41750771
二:MPMoviePlayerViewController(带VIEW,有视图)和MPMoviePlayerController(无视图,默认VIEW的大小为0)它不仅能播放本地音频又可以播放网络音频和视频 注意:它支持的格式并不是很多,所以有些常用的rmvb等格式不支持。
1:手动导入类库:MediaPlayer.framework 。
2:包含头文件 #import<MediaPlayer/MediaPlayer.h>
/* 注意MPMoviePlayerViewController,只支持MP4,MP3 1.问题:系统自带的MPMoviePlayerViewController,当程序进入后台的时候就会自动销毁。如何让其保持状态进入后台前的状态? 原因:当系统进入后台的时候会发出通知:UIApplicationDidEnterBackgroundNotification,而系统的MPMoviePlayerViewController会自动监听该通知,当监听到进入后台的这个通知后,MPMoviePlayerViewController会调用方法销毁。 解决方法:移除通知 [[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationDidEnterBackgroundNotification object:nil]; //说明:移除self监听的名称为UIApplicationDidEnterBackgroundNotification的通知,object参数为空。 */
AZMyMoviePlayViewController:
#import <MediaPlayer/MediaPlayer.h> @interface AZMyMoviePlayViewController : MPMoviePlayerViewController @end
#import "AZMyMoviePlayViewController.h" @interface AZMyMoviePlayViewController () @end @implementation AZMyMoviePlayViewController - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { // Custom initialization } return self; } - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. <span style="color:#ff0000;">//移除程序进入后台的通知</span> [[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationDidEnterBackgroundNotification object:nil]; } #pragma mark -- 播放界面只支持横屏 -(NSUInteger)supportedInterfaceOrientations { return UIInterfaceOrientationMaskLandscape; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. }
关键代码
//取出模型 AZMyVideoModel *video=self.voideListArray[indexPath.row]; NSString *videoUrlStr=[NSString stringWithFormat:@"%@%@",WEBPATH,video.url]; NSLog(@"%@",videoUrlStr); NSURL *url=[NSURL URLWithString:videoUrlStr]; //创建播放视图控制器 AZMyMoviePlayViewController *playVC=[[AZMyMoviePlayViewController alloc] initWithContentURL:url]; playVC.navigationItem.title=@"播放界面"; [self.navigationController pushViewController:playVC animated:YES];