前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >开发之声音

开发之声音

作者头像
Helloted
发布2022-06-07 13:11:22
9860
发布2022-06-07 13:11:22
举报
文章被收录于专栏:Helloted

部分代码位置Github-VoiceDemo

Pre

与图片中默认的格式为PNG格式一样,iOS开发中声音的格式也有默认格式,为wav格式,本文中的产生的格式均为wav格式,其他格式则需要转换。有第三方的框架,进行转换成amr等格式

一、声音录制

要先引入AVFoundation的框架

代码语言:javascript
复制
#import <AVFoundation/AVFoundation.h>
代码语言:javascript
复制
    self.voiceRecorder = [[AVAudioRecorder alloc]initWithURL:[NSURL fileURLWithPath:self.voicePath] settings:self.recorderSetting error:nil];
    if ([self.voiceRecorder prepareToRecord]){
        [[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayAndRecord error:nil];
        [[AVAudioSession sharedInstance] setActive:YES error:nil];
        
        //开始录音
        [self.voiceRecorder record];
    }

录制声音主要设置两个参数,Path和Setting

Path:声音文件录制后存储的路径

Setting:一个录制参数的字典,设置一些录制的必要的参数,需要进行调整到合适的值

代码语言:javascript
复制
        _recorderSetting = [[NSDictionary alloc] initWithObjectsAndKeys:
                            [NSNumber numberWithFloat: 8000.0],AVSampleRateKey, //采样率
                            [NSNumber numberWithInt: kAudioFormatLinearPCM],AVFormatIDKey,
                            [NSNumber numberWithInt:16],AVLinearPCMBitDepthKey,//采样位数 默认 16
                            [NSNumber numberWithInt: 1], AVNumberOfChannelsKey,//通道的数目
                            nil];

AVAudioRecorder在录制的时候可以暂停和恢复

暂停

代码语言:javascript
复制
- (void)pause; /* pause recording */

恢复/开始

代码语言:javascript
复制
- (void)record;

录制完成

代码语言:javascript
复制
- (void)stop;

二、声音播放

先引入MediaPlayer

代码语言:javascript
复制
#import <MediaPlayer/MediaPlayer.h>
@import AVFoundation;
@import AudioToolbox;

设置好录音文件路径就可以播放。注意:如果在播上一段录音,同时再点播放的话,两个声音会一起播放

代码语言:javascript
复制
    if (_player) { // 如果正在播放上一段录音,则停止
        [_player stop];
    }
    [[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error:nil];
    [[AVAudioSession sharedInstance] setActive:YES error:nil];
    if (path&& [self fileSizeAtPath:path]) {
        self.player = [self.player initWithContentsOfURL:[NSURL URLWithString:path] error:nil];
        self.player.delegate = self;
        [self.player play];
        NSLog(@"开始播放");
    }else{
        NSLog(@"no voice");
    }

声音播放也可以暂停恢复和停止

完整代码位置Github-VoiceDemo

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、声音录制
  • 二、声音播放
相关产品与服务
云点播
面向音视频、图片等媒体,提供制作上传、存储、转码、媒体处理、媒体 AI、加速分发播放、版权保护等一体化的高品质媒体服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档