iOS开发之视频音频

音频

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

你可能感兴趣的:(iOS开发之视频音频)