音频录制文件传输01播放与_第1页
音频录制文件传输01播放与_第2页
音频录制文件传输01播放与_第3页
音频录制文件传输01播放与_第4页
音频录制文件传输01播放与_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

音频播放与录制讲师:刘凡技术博客:新浪微博:iOS中支持的音频播放类型播放音效(SystemSoundService)播放本地音频(AVFoundataion)播放流媒体音频(AVFoundataion)iOS支持的音频格式音频格式硬件解码软件解码AACYESYESALACYESYESHE-AACYESiLBCYESIMA4YESLinea

PCMYESMP3YESYESμ-law

and

a-lawYESCAFYESYES注意:硬件解码器一次只能对一个音频文件解码关于音效的使用音效又称短音频,是一个声音文件,在应用程序中起到点缀效果,用于提升应用程序的整体用户体验通常短音效在程序中的播放时长为1~2秒,对于某些特殊动画效果的点缀音效可以略长由于音效的播放相对比较频繁,为了不影响应用程序的性能,在实际应用中通常使用非压缩的音频格式(AIFF)或者CAF音频格式,从而减低系统在音频解码上的消耗,达到省电的目的使用系统声音服务播放音效,需要导入AudioToolbox框架系统声音服务通过SystemSoundID来播放声音文件,对于同一个声音文件,可以创建多个SystemSoundID系统声音服务是一套C语言的框架为了提高应用程序性能,避免声音文件被重复加载,通常采用单例模式处理系统声音的播放加载和播放音效代码//加载音效SystemSoundIDsoundID;NSString*path=[_soundBundlepathForResource:nameofType:nil];NSURL*url=[NSURLfileURLWithPath:path];AudioServicesCreateSystemSoundID((__bridgeCFURLRef)(url),&soundID);returnsoundID;//播放音效AudioServicesPlaySystemSound(soundID);//播放音效同时振动(当用户静音时,可以通过振动提示用户注意重要操作)AudioServicesPlayAlertSound(soundID);使用AVAudioPlayer播放本地音乐使用AVAudioPlayer可以播放本地音乐,具备以下特点:能够预先缓存,提高播放的流畅性(prepareToPlay)播放起始时间(playAtTime)播放控制(play/pause/stop)循环播放次数(numberOfLoops)播放音量(volume)设置播放速度(enableRate/rate)音量监控(meteringEnabled/peakPowerForChannel/averagePowerForChannel)除上述功能外,还可以通过AVAudioPlayer的代理方法监控音乐的播放进度“流”媒体Stream网络的音频和视频MediaPlayer扬声器URL=缓冲区1缓冲区2缓冲区3之所以设置三个缓冲区,是为了解决磁盘缓存跟不上播放速度此方式会每次都从服务器重新下载播放.应用程序的实际应用场景!实例化AVAudioPlayerNSError*error=nil;AVAudioPlayer*player=[[AVAudioPlayer

alloc]initWithContentsOfURL:urlerror:&error];if(error){

NSLog(@"加载音乐播放器失败-%@",error.localizedDescription);

return

nil;}returnplayer;AVAudioPlayer播放时的音量监控应用场景:诵读类App的播放时长截取//1.加载朗诵音频_player=[SoundTool

audioPlayerWithName:@"上01一东.mp3"];_player.numberOfLoops=0;[_player

prepareToPlay];[_player

setDelegate:self];//2.允许音量测量[_player

setMeteringEnabled:YES];//3.实例化音频信息数组_soundInfo=[NSMutableArray

array];//4.启动时钟_timer=[NSTimer

scheduledTimerWithTimeInterval:0.1f

target:self

selector:@selector(timerFired:)userInfo:nil

repeats:YES];//5.开始播放[_player

play];时钟处理方法//1.更新播放器音量[_playerupdateMeters];//2.判断是否需要记录if([_playeraveragePowerForChannel:0]>-50.0){

if(_shouldRecord){NSLog(@"%f",[_playercurrentTime]);

if(![_soundInfocontainsObject:@([_playercurrentTime])]){[_soundInfoaddObject:@([_playercurrentTime])];}}_shouldRecord=NO;}else{_shouldRecord=YES;}关于AVAudioSessionAVAudioSession是一个单例,无需实例化即可直接使用。AVAudioSession在各种音频环境中起着非常重要的作用针对不同的音频应用场景,需要设置不同的音频会话分类AVAudioSession的类别(1)AVAudioSessionCategoryAmbient混音播放,例如雨声、汽车引擎等,可与其他音乐一起播放AVAudioSessionCategorySoloAmbient后台播放,其他音乐将被停止AVAudioSessionCategoryPlayback独占音乐播放AVAudioSessionCategoryRecord录制音频AVAudioSessionCategoryPlayAndRecord播放和录制音频AVAudioSessionCategoryAudioProcessing使用硬件解码器处理音频,该音频会话使用期间,不能播放或录音AVAudioSession的类别(2)类别输入输出与iPOD混合遵从静音AVAudioSessionCategoryAmbientNoYesYesYesAVAudioSessionCategorySoloAmbientNoYesNoYesAVAudioSessionCategoryPlaybackNoYesNoNoAVAudioSessionCategoryRecordYesNoNoNoAVAudioSessionCategoryPlayAndRecordYesYesNoNo后台播放音乐(1)——设置后台任务+(UIBackgroundTaskIdentifier)backgroundPlayerID:(UIBackgroundTaskIdentifier)backTaskId{

//1.设置并激活音频会话类别

AVAudioSession*session=[AVAudioSession

sharedInstance];[sessionAVAudioSessionCategoryPlayback

error:nil];[sessionsetActive:YES

error:nil];

//2.允许应用程序接收远程控制[[UIApplication

sharedApplication]beginReceivingRemoteControlEvents];

//3.设置后台任务ID

UIBackgroundTaskIdentifiernewTaskId=UIBackgroundTaskInvalid;newTaskId=[[UIApplication

sharedApplication]beginBackgroundTaskWithExpirationHandler:nil];

if(newTaskId!=UIBackgroundTaskInvalid&&backTaskId!=UIBackgroundTaskInvalid)

{[[UIApplication

sharedApplication]endBackgroundTask:backTaskId];}

returnnewTaskId;}后台播放音乐(2)——允许后台播放后台播放音乐(3)——记录后台任务代号//后台播放任务IdUIBackgroundTaskIdentifier_bgTaskId;//设置音频会话,允许后台播放_bgTaskId=[SoundToolbackgroundPlayerID:_bgTaskId];音频录音机参数字典NSMutableDictionary*setting=[[NSMutableDictionaryalloc]init];//音频格式[settingsetValue:[NSNumbernumberWithInt:kAudioFormatAppleIMA4]forKey:AVFormatIDKey];//音频采样率[settingsetValue:[NSNumbernumberWithFloat:8000.0]forKey:AVSampleRateKey];//音频通道数[set

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论