《课件第十五节课音频和视频常用处理》由会员分享,可在线阅读,更多相关《课件第十五节课音频和视频常用处理(23页珍藏版)》请在金锄头文库上搜索。
1、 无限互联是国内唯一一家专注于iPhone和iPad软件开发培训机构,到目前为 止为各大公司输送了一大批优秀的iOS高级软件研发人才。随着iOS6系统的发布, 我们也在当天陆续发布国内首套完整的iOS开发的视频教程,手把手教您写代码, 从入门到熟练再到精通。 高薪就业是检验一家培训机构质量的唯一标准,我们的学员高薪就业是对我们 最好的肯定,也是我们前进的最强烈的动力,我们感谢同学们的努力,感谢你们对 我们的支持!我们也将免费为你们提供最好的就业后的技术支持! 亲爱的同学们,你们的高薪就业才是我们最大的成功! 版权所有:无限互联3G学院 13年1月9日星期三 第十五课 音频与视频的常用处理 主讲
2、:陈 为 版权所有:无限互联3G学院 13年1月9日星期三 版权所有:无限互联3G学院 本节目标 使用AVAudioPlayer类播放音 频 掌握后台播放音乐 自定义后台任务 使用MPMoviePlayer播放视频 13年1月9日星期三 版权所有:无限互联3G学院 1、IOS音频播放概述 iOS系统中的音频播放方式 AVAudioPlayer、AVPlayer、系统声音、音频队列 AVAudioPlayer 使用简单方便,但只能播放本地音频,不支持流媒体播放 AVPlayer iOS4.0以后,可以使用AVPlayer播放本地音频和支持流媒体播放,但提供接口较 少,处理音频不够灵活 音频队列
3、音频队列主要处理流媒体播放,提供了强大且灵活的API接口(C函数的接口),但 处理起来也较为复杂 13年1月9日星期三 版权所有:无限互联3G学院 2、AVAUDIOPLAYER的使用 引用框架 使用AVAudioPlayer或AVPlayer需要引用AVFoundation类库 处理音频示例: NSBundle *bundle = NSBundle mainBundle; / 音频文件路径 NSString *urlString = bundle pathForResource:“第一夫人“ ofType:“mp3“; / 初始化本地的url NSURL *url = NSURL alloc
4、 initFileURLWithPath:urlString; / 初始化音频对象 AVAudioPlayer *player = AVAudioPlayer alloc initWithContentsOfURL:url error:nil; / 分配播放所需的资源,并将其加入内部播放队列 player prepareToPlay; / 播放 if (player play) NSLog(“正在播放“); 13年1月9日星期三 版权所有:无限互联3G学院 常用属性 AVAudioPlayer常用属性 1. 音量 player.volume=0.8; / 0.01.0之间 2.循环次数 pla
5、yer.numberOfLoops = 3; / 默认只播放一次 player.duration / 总时长 3.播放位置 player.currentTime = 15.0; / 以指定从任意位置开始播放 4.声道数 NSUInteger channels = player.numberOfChannels; /只读属性 5.常用方法 player play; / 播放 player stop; / 停止 player pause; / 暂停 13年1月9日星期三 版权所有:无限互联3G学院 代理方法 AVAudioPlayer代理方法 - (void)audioPlayerDidFinis
6、hPlaying:(AVAudioPlayer*)player successfully:(BOOL)flag / 播放结束时执行的动作 - (void)audioPlayerDecodeErrorDidOccur:(AVAudioPlayer*)player error: (NSError *)error / 解码错误执行的动作 - (void)audioPlayerBeginInterruption:(AVAudioPlayer*)player / 处理中断的代码 - (void)audioPlayerEndInterruption:(AVAudioPlayer*)player / 处理中
7、断结束的代码 13年1月9日星期三 版权所有:无限互联3G学院 AVPLAYER的使用 AVPlayer使用示例: NSString *urlString = “ 1736524/1736524.mp3? xcode=4c984fdae3c1bad69e17a9d95288ce1e / 初始化远程url NSURL *url = NSURL URLWithString:urlString; / 初始化播放器 AVPlayer *player = AVPlayer alloc initWithURL:url; / 播放 player play; 13年1月9日星期三 版权所有:无限互联3G学院
8、3、播放系统声音 播放系统声音 音频数据文件可分为压缩和非压缩的存储类型。压缩的音频文件虽然文件体积较小 (相对于非压缩的),但需要耗费处理器的性能进行解压和解码。 如果音频文件体积较小,压缩后的音频文件,也不会节省较大的磁盘空间。像这一 类小型非压缩的文件可以注册成为系统声音 格式为:caf/wav/aiff格式,且时长小于30s 13年1月9日星期三 版权所有:无限互联3G学院 播放系统声音 注册系统播放声音示例: 系统震动 NSBundle *bundle = NSBundle mainBundle; NSString *path = bundle pathForResource:“44
9、th Street Medium“ ofType:“caf“; / 初始化本地文件url NSURL *url = NSURL fileURLWithPath:path; UInt32 soundID; / 将URL所在的音频文件注册为系统声音,soundID音频ID标示该音频 AudioServicesCreateSystemSoundID(CFURLRef)url, / 播放音频 AudioServicesPlaySystemSound(soundID); / 播放系统震动 AudioServicesPlaySystemSound(kSystemSoundID_Vibrate); 13年1
10、月9日星期三 版权所有:无限互联3G学院 课堂练习1 课堂实例1: 播放一段音频文件 添加两个UISlider实例 分别用于控制器声音和控制进度 添加一个Label标签和一个UIButton实例 分别用于显示进度和控制音频的播放 13年1月9日星期三 版权所有:无限互联3G学院 4、后台播放任务 iOS系统的后台任务 当你的应用程序在后台时(被挂起), 在iOS系统(4.0之后)允许你做三件事:播 放音频(audio),位置信息以及voip(网络电话) 播放音频 在plist文件中添加“UIBackgroundMode”属性,值为“audio” 设置AVAudioSession模式,播放音频时
11、,通常将属性设置为 AVAudioSessionCategoryPlayback(音频播放之前设置) 示例: NSError *error; AVAudioSession *audionSession = AVAudioSession sharedInstance; audionSession setCategory:AVAudioSessionCategoryPlayback error: 13年1月9日星期三 版权所有:无限互联3G学院 其他后台任务 其他的后台任务 通过上一小节的学习,我们知道iOS系统可以支持三种标准的后台任务,需要在plist 文件设置,你的应用程序就支持对应的模式
12、除去这三种标准的后台模式,我们也可以添加自定义的后台任务。比如,视频、音 频的下载等等 但通过情况下,你的应用程序只能活跃600s 自定义后台任务示例1: 13年1月9日星期三 版权所有:无限互联3G学院 自定义后台任务 - (void)applicationDidEnterBackground:(UIApplication *)application UIApplication *application = UIApplication sharedApplication; /启动一个后台任务 bgTask = application beginBackgroundTaskWithExpira
13、tionHandler:(void) /当该任务超时回调该block块 /结束该任务 application endBackgroundTask:bgTask; bgTask = UIBackgroundTaskInvalid; ; 13年1月9日星期三 版权所有:无限互联3G学院 自定义后台任务 自定义后台任务示例2: / 程序进入后台调用 - (void)applicationDidEnterBackground:(UIApplication *)application / 开启一个后台任务,避免程序被挂起 bgTask = application beginBackgroundTaskW
14、ithExpirationHandler: application endBackgroundTask:bgTask; bgTask = UIBackgroundTaskInvalid; ; / 开启新的线程 NSOperationQueue alloc init addOperationWithBlock: / 开启定时器监听后台运行时间 NSTimer scheduledTimerWithTimeInterval:1 target:self selector:selector(timerAction) userInfo:self repeats:YES; NSRunLoop current
15、RunLoop run; ; 13年1月9日星期三 版权所有:无限互联3G学院 自定义后台任务 - (void)timerAction _count+; NSLog(“%d“,_count); /因为一个任务只能保持600秒,所以当500秒的时,新开一个新的任务 if (_count % 500 = 0) UIApplication *application = UIApplication sharedApplication; bgTask = application beginBackgroundTaskWithExpirationHandler:(void) application endBackgroundTask:bgTask; bgTask = UIBackgroundTaskInvalid; ; 13年1月9日星期三 版权所有:无限互联3G学院 5、视频播放 iOS视频播放 iOS内置了视频播放器,我们可以通过使用MPMoviePlayerController或者 MPMoviePlayerViewController类(视图控制器)来播放视频(含流媒体视频播 放),两者使用也较为简单 需引入“MediaPlayer.fram