在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.
}
AZRootViewController:
关键代码
//取出模型
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];