文档章节

Iphone开发之音频101(part 2):转换和录音

大侠自来也
 大侠自来也
发布于 2016/02/18 17:09
字数 1429
阅读 15
收藏 0

iPhone开发之音频101(Part 2):转换和录音

译者:大侠自来也

 

免责申明(必读!):本博客提供的所有教程的翻译原稿均来自于互联网,仅供学习交流之用,切勿进行商业传播。同时,转载时不要移除本申明。如产生任何纠纷,均与本博客所有人、发表该翻译稿之人无任何关系。谢谢合作! 

 

原文链接地址:http://www.raywenderlich.com/233/audio-101-for-iphone-developers-converting-and-recording 

 

这篇文章是这个系列(涵盖iPhone开发者感兴趣的音频主题)的第二篇。

在这个系列的第一篇文章中,我讲解了文件格式和数据格式的区别,还有哪些格式是在iPhone上面支持的。现在,让我们讨论一下你怎么样在不同格式之间转换。 

afplay, afconvert, afinfo

转换音频在Mac是相当简单的,因为在Mac上有三条内置的命令行工具:afplay、afconvert、afinfo。

使用最简单的是afplay,仅需要在终端里输入你的音频名字,它将会播放。当在听不同比特率下的压缩音频文件有什么差别时,这是相当方便的。

接下来是afinfo, 仅需输入你音频的名字,之后就可以看到这份文件的文件格式、数据格式、比特率和其他一些有用的信息。例子如下: 

 

上面的例子向你说明了这份文件的文件类型是CAF,数据格式是16位低字节序有符号整型(LEI16),采样频率是44100Hz,比特率是705600比特/秒。

最后,让我们讨论下里面最好的工具:afconvert。afconvert使用相当简单,只需要一个像下面的命令行:

afconvert -d [out data format] -f [out file format] [in file] [out file]

因此将一份文件转化为iPhone首选的无压缩音频编码(提醒:linear PCM的低字节序整型16位转化,也就是LEI16(the little-endian integer 16-bit variant of Linear PCM)),和iPhone首选的文件格式(提醒:核心音频文件格式,也就是CAFF),你可以输入如下命令行:

afconvert -d LEI16 -f 'caff' input_file.xxx output_file.caf

注意:我没有指出这个输入文件的扩展名,因为afconvert可以智能地检测音频文件的类型并且做相应的转换,因此输入的文件可以是任何数据格式和音频文件格式的文件。

还有一点需要注意:你可以在输入或者输出文件之前增加一个“-b”的选项来设置比特率。因此就像这个例子,我们使用32bit/sec来保存这个文件,然后使用128bit/sec来保存。

afconvert -d aac -f 'caff' -b 32768 background-music-lei.caf test_32.caf

afconvert -d aac -f 'caff' -b 131072 background-music-lei.caf test_128.caf

在Mac上面录制音频文件 

我想略记下两条关于在Mac上面为你的应用制作音乐和声音的好方法。

第一,需要GarageBand。GarageBand可以轻松的把一些预先准备好的鼓声、吉他声和一些其他的乐器声音组合到一起成为一小段歌曲。假如你很喜欢音乐,你可以自己边玩边录一些音乐,并且做一些很酷的东西。

 

假如你还没准备好,还不怎么了解,你可以花一些时间来了解一下Apple 的GarageBand教程 。我发现特别是 “Using Built-In Software Instruments” 这章最有用。

假如你觉得你的歌很好,你可以将它导出上传到iTunes,然后选择”Reveal in Finder”来获取你的文件以备将来使用。

我发现GarageBand 不是一个用来记录简单音效的最好工具。因此,我更喜欢一个很棒的免费音频程序,叫 Audacity。你可以插上你的麦克风(我用我的Rock Band麦克风,它工作得刚刚好!),记录你的声效,并能很简单的保存下来。

 

 

 

  不要忘了当你像这样制作你自己的声音的时候,你们最可能使用16位高字节顺序有符号整型来存储,或者使用“BEI16”来储存。因此,不要忘了在将它们包含到你的程序之前转换到LEI16。

假如你发现你自己没得很好的艺术细胞,这里有一些音效在免费声音项目里有Creative Commons许可证,或者你可以雇佣一个专业人员。 

接下来

接下来将会是这个系列的最后一篇文章,我将演示怎么在iPhone上通过程序播放音频

 

附录1 Mac下查看文件格式

要是你想了解那些文件格式支持那些数据格式,你可以在控制台输入:afconvert -hf

然后你就可以看到一下一些信息:

$ afconvert -hf

Audio file and data formats:

    '3gpp' = 3GP Audio (.3gp)

               data_formats: 'aac ' 'aace' 'aach' 'aacl' 'aacp' 'samr'

    '3gp2' = 3GPP-2 Audio (.3g2)

               data_formats: 'aac ' 'aace' 'aach' 'aacl' 'aacp' 'samr'

    'adts' = AAC ADTS (.aac, .adts)

               data_formats: 'aac ' 'aach' 'aacp'

    'ac-3' = AC3 (.ac3)

               data_formats: 'ac-3'

    'AIFC' = AIFC (.aifc, .aiff, .aif)

               data_formats: I8 BEI16 BEI24 BEI32 BEF32 BEF64 UI8 'ulaw'

                             'alaw' 'MAC3' 'MAC6' 'ima4' 'QDMC' 'QDM2'

                             'Qclp' 'agsm'

    'AIFF' = AIFF (.aiff, .aif)

               data_formats: I8 BEI16 BEI24 BEI32

    'amrf' = AMR (.amr)

               data_formats: 'samr'

    'caff' = Apple CAF (.caf)

               data_formats: '.mp1' '.mp2' '.mp3' 'QDM2' 'QDMC' 'Qclp'

                             'Qclq' 'aac ' 'aace' 'aach' 'aacl' 'aacp'

                             'alac' 'alaw' 'dvi8' 'ilbc' 'ima4' I8 BEI16

                             BEI24 BEI32 BEF32 BEF64 LEI16 LEI24 LEI32

                             LEF32 LEF64 'ms\x00\x02' 'ms\x00\x11' 'ms\x001'

                             'samr' 'ulaw'

    'm4af' = Apple MPEG-4 Audio (.m4a)

               data_formats: 'aac ' 'aace' 'aach' 'aacl' 'aacp' 'alac'

    'MPG1' = MPEG Layer 1 (.mp1, .mpeg, .mpa)

               data_formats: '.mp1'

    'MPG2' = MPEG Layer 2 (.mp2, .mpeg, .mpa)

               data_formats: '.mp2'

    'MPG3' = MPEG Layer 3 (.mp3, .mpeg, .mpa)

               data_formats: '.mp3'

    'mp4f' = MPEG-4 Audio (.mp4)

               data_formats: 'aac ' 'aace' 'aach' 'aacl' 'aacp'

    'NeXT' = NeXT/Sun (.snd, .au)

               data_formats: I8 BEI16 BEI24 BEI32 BEF32 BEF64 'ulaw'

    'Sd2f' = Sound Designer II (.sd2)

               data_formats: I8 BEI16 BEI24 BEI32

    'WAVE' = WAVE (.wav)

               data_formats: UI8 LEI16 LEI24 LEI32 LEF32 LEF64 'ulaw' 'alaw'

 

 

 

© 著作权归作者所有

大侠自来也
粉丝 0
博文 4
码字总数 5166
作品 0
程序员
私信 提问
AVFoundation开发秘籍笔记-02播放和录制音频

一、音频会话 AVAudioSession 音频会话在应用程序和操作系统之间扮演着中间人的角色,提供一种简单实用的方法是OS得知应用程序应该如何与iOS音频环境进行交互。 有框架引入。每个iOS应用程序...

竹与豆
2018/05/25
0
0
AVAudioSessionCategory说明

#pragma mark -- Values for the category property -- /* Use this category for background sounds such as rain, car engine noise, etc. Mixes with other music. */AVF_EXPORT NSString......

OSMaker_-
2016/04/08
49
0
Android音视频开发之使用AudioRecord采集音频

AudioRecord 是 Android 系统提供的用于实现录音功能的 API,官方文档是这么解释的: AndioRecord类的主要功能是让各种Java应用能够管理音频资源,以便它们通过此类能够录制声音相关的硬件所...

落英坠露
2018/10/30
0
0
华为手机录音m4a格式怎么转换为MP3格式

  大家都知道,华为手机的录音格式一般是m4a格式,但是我们一般常见的音频格式是MP3格式,如果我们录了一段比较有趣的音频,分享给朋友,但是对方由于手机型号不同,无法打开,那岂不是很可...

萤火的萤火
2018/09/08
0
0
基于react的录音及音频曲线绘制的组件开发

##简介 演示地址 最近由于工作需要,需要在react上用到一个录音的功能,录音主要包含开始录音,暂停录音,停止录音,并将频谱通过canvas绘制出来。起初开发时找了一个现成的包,但是这个第三...

j_bleach
2018/08/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

系列一、入门教程web端实现地图功能

废话不多说,社会我多多 实现步骤如下 第一步、在高德api注册账户 搜索高德api点击进入官网,自己注册一个账号,你懂得怎么注册撒 点击进入下图画框位置,来到官网api入门教程 第二步、按照以...

我叫小糖主
15分钟前
4
0
springboot统一校验validator实现

第一步: pom.xml需引入spring-boot-start-web依赖,其中包含validator框架包 <!--Spring Boot Web依赖--><dependency> <groupId>org.springframework.boot</groupId> <artifact......

zzx10
17分钟前
1
0
vue组件系列-预览、放大、缩小、旋转

这个用的是别人的,如果有问题,估计改起来会很纠结。 安装 npm install v-viewer --save 卸载 npm uninstall v-viewer 注册 在main.js中 // The Vue build version to load with the `impor...

轻轻的走过
18分钟前
1
0
Taro Input输入内容无法绑定state问题

在onInput事件中,返回内容,返回内容即是输入框内容 例如只能输入一个小数点: <Input type='digit' placeholder='带小数点的数字键盘' value={this.state.advance} onInput={ e => this.ch......

步步登高
19分钟前
0
0
Windows10远程连接CentOS7(搭建Xrdp服务器)

Windows10远程连接CentOS7(搭建Xrdp服务器) 听语音 浏览:0 | 更新:2018-02-11 12:56 1 2 3 4 5 6 7 分步阅读 通过VNC或Xdmcp的方式远程连接linux图形桌面,虽然都很方便,但有个缺点就是...

linjin200
20分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部