音频
AVAudioPlayer 需要添加AVFoundation.frame
currentTime 播放的当前时间
duration 总时间
sider 添加一个值改变的监听,去设置音乐的播放位置
KVO 监听 KVC模式导致的值改变
视频
MPMoviePlayerViewController 需要导入MediaPlayer框架
通过moviePlayer调用play函数
播放本地视频通过fileURLWithPath:```方式加载视频
播放互联网视频通过URLWithString:```方式加载视频
后台播放音乐
通常,一般应用在进入后台时,任何声音就将会停止。这也许不是我们所想要的。要想让自己的应用支持后台播放,首先要修改应用的Info.plist 文件,你需要在Info.plist文件中添加UIBackgroundModes字段,该字段的值是应用支持的所有后台模式,是一个数值类型。目前此数 组可以包含“audio”、“location”和“voip”这三个字符串常量,如果要支持后台音乐播放,你就需要包含“audio”,其余两个会将在 后面讲到。
同时,你也应该设置一下应用程序的Audio Sesstion。这个是必需的,如果不设置Audio Sesstion,应用就可能进入后台时Audio Sesstion失活而停止播放。一般需要这么设置就可以了:
在VC类中设置音乐下方设置即可
AVAudioSession *session = [AVAudioSession sharedInstance];
[session setActive:YES error:nil];
[session setCategory:AVAudioSessionCategoryPlayback error:nil];
例子: 制作音乐播放器和视频播放器
#import "ViewController.h"//播放音频的头文件#import//播放视频的头文件#import@interface ViewController ()@end
@implementation ViewController
{
// 定义播放的对象
AVAudioPlayer *_audioplay;
// 定时器
NSTimer * _time;
}
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
// 1.找一个资源路径 参数1:文件名 参数2:格式
NSString *musicPath=[[NSBundle mainBundle]pathForResource:@"song1" ofType:@"mp3"];
// 2.创建播放对象
_audioplay =[[AVAudioPlayer alloc ]initWithContentsOfURL:[NSURL URLWithString:musicPath] error:nil];
// 3.准备播放歌曲
[_audioplay prepareToPlay];
// 指定代理类
_audioplay.delegate=self;
// 访问slider
self.slider.value=0;
[self.slider addTarget:self action:@selector(sliderValueChange:) forControlEvents:UIControlEventValueChanged];
}
//slider 添加的事件响应 改变slider的值来改变歌曲的状态
-(void)sliderValueChange:(UISlider *)slider
{
[_audioplay pause];
//根据slider值 计算应该播放的进度
_audioplay.currentTime=slider.value *_audioplay.duration;
[_audioplay play];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (IBAction)play:(id)sender {
// 播放音乐
[_audioplay play];
// 启动计时器
_time= [NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(vlaueChange) userInfo:nil repeats:YES];
}
- (IBAction)pause:(id)sender {
// 暂停音乐
[_audioplay pause];
// 销毁计时器
[_time invalidate];
_time=nil;
}
//视频播放
- (IBAction)playMovie:(id)sender {
// 视频播放
NSString*moviePath=[[NSBundle mainBundle]pathForResource:@"1" ofType:@"mp4"];
// URLWithstring :会检测网络协议(http协议)(无法播放本地,只能播放互联网视频)
// NSURL *url=[NSURL URLWithString:moviePath];
// 此方法可以直接加载本地资源
NSURL *url=[NSURL fileURLWithPath:moviePath];
MPMoviePlayerViewController *moviePlayer=[[MPMoviePlayerViewController alloc]initWithContentURL:url];
[self presentMoviePlayerViewControllerAnimated:moviePlayer];
[moviePlayer.moviePlayer play];
}
-(void)vlaueChange
{
// _audioplay.currentTime/_audioplay.duration 音乐播放器当前时间除总时间
self.slider.value=_audioplay.currentTime/_audioplay.duration;
}
//AVAudioPlayerDelegate 代理方法
-(void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag
{
NSLog(@"%f",player.currentTime);
}
-(void)dealloc
{
}
@end