小米手机能用caf格式转换器的音频吗

3212人阅读
cocos2dx教程(21)
本文由qinning199原创,转载请注明:
开发者必须要注意,cocos2dx在不同的平台调用了不同的SDK API来播放背景音乐和音效。cocosDenshion一次仅只能播放一首背景音乐,但是可以异步的播放很多音效。
支持android.media.MediaPlayer所支持的所有格式.
支持cocos2d-iphone中的格式,其中MP3和CAF是推荐的。
.mid,.wav被支持,注意 mp3不被支持
Blackberry
注意:Samsung i9100的音频驱动有bug。它不能一次播放太多的音效。你不要太频繁
去调用SimpleAudioEngine::playEffect(const char* filePah)
最支持.ogg,不太能很好的支持.wav格式
支持cocos2d-iphone中支持的格式。个人推荐.caf格式。
* .mid, .wav.
仅仅支持PCM格式
Blackberry
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:220747次
积分:2827
积分:2827
排名:第8094名
原创:43篇
转载:38篇
评论:25条
(1)(4)(8)(19)(2)(12)(2)(1)(3)(5)(13)(2)(1)(1)(7)天极传媒:天极网全国分站
您现在的位置:
& >&分享iPhone开发者需掌握的音频内容
分享iPhone开发者需掌握的音频内容天极网开发频道 10:06
  在面向iPhone开发游戏之前我对音频格式真的非常陌生。我只知道.WAVs和.之间的区别,但是我却怎么都说不出.AAC或.CAF到底是什么,或者在Mac上转换音频文件的最佳方法是什么。
  后来我发现如果想要在iPhone上开发游戏,我们就必须真正理解文件,数据格式,文件间的转换,录音以及API等基本元素。
  sweet_sound()
  文件格式和数据格式
  我们必须清楚每个音频文件都是由两部分内容所构成:它的文件格式(或者音频容器)以及它的数据格式(或者音频编码)。
  文件格式(或音频容器)是用于形容文件本身的格式。我们可以通过多种不同的方法为真正的音频数据编码。例如CAF文件便是一种文件格式,它能够包含MP3格式,线性PCM以及其它数据格式的音频。
  数据格式(或音频编码)
  我们将从音频编码开始阐述(而不是文件格式),因为编码是最重要的环节。
  以下是iPhone所支持的数据格式及其相关描述:
  AAC:AAC是指“高级音频编码”,可以说它MP3格式的延续。你可能会想这种格式将压缩最初的声音而保存在磁盘中,所以会降低原先声音的质量。但是通常情况下我们很难注意到质量的降低,并且这主要是取决于我们所设置的比特率。实际上AAC的压缩做得比MP3好多了,特别是在比特率低于每秒128千比特的情况下。
  HE-AAC:HE-AAC是AAC的超集,HE表示“高效率”。HE-AAC是对于低比特率音频(如流式音频)的优化。
  AMR:AMR代表“自适应多速率”,是优化的另一种编码优化格式,能够突出极低比特率音频。
  ALAC:同样也被称为“Apple Lossless”,它是一种可以不破坏质量而压缩音频的编码。实际上它大概会压缩原始数据的40-60%。再加上算法是经过精心设计的,所以我们可以以较快的速度解压数据,这非常适合像iPod或iPhone等设备。
  iLBC:这是另一种优化语音的编码,有益于IP语音和流媒体格式。
  IMA4:这是一种压缩格式,将对16位体的音频文件进行4:1的压缩。这是面向iPhone设备的一种重要编码。
  线性PCM:这是表示线性脉冲编码调制,主要是描写用于将模拟声音数据转换成数字格式的技术。简单地说也就是未压缩的数据。因为数据是未压缩的,所以我们便可以最快速地播放出音频,而如果空间不是问题的话这便是iPhone音频的优先代码选择。
  μ-law和a-law:这是两种交替式编码,能够将模拟数据转换成数字格式,但是比起线性PCM拥有更强的语音优化效果。
  MP3:这是我们最熟悉也是最喜欢的一种格式。这么多年以来MP3仍是最受欢迎的一种格式,而iPhone也支持这种格式。
  所以我们该使用哪种格式?
  在这一大串列表中我们必须选出几个优选编码格式。为了做出选择我们首先需要清楚:
  我们可以无需压缩或简单压缩而同时播放线性PCM,IMA4等格式并且不会出现任何问题。
  而对于更加高级的压缩方法如AAC,MP3以及ALAC,iPhone也拥有相关硬件能够帮助我们快速压缩这些数据――但是问题在于它一次只能处理一种文件。所以如果你一次希望播放2种以上的编码,你就不得不对其进行压缩,而这将耗费更多时间。
  为了选择合适的数据格式,你需要遵循以下规则:
  如果空间不是问题的话,我们便可以使用线性PCM对任何内容进行编码。这不仅是播放音频最快速的方法,并且你也可以同时播放多种声音且不会遭遇任何资源问题。
  如果空间是问题所在的话,你便可以使用AAC编码去播放背景音乐而使用IMA4编码去制造音效。
  线性PCM的各种变体
  关于线性PCM最需要注意的一点便是它应该算是iPhone首选的未压缩数据格式。基于数据的储存方式线性PCM具有多种变体。我们可以根据大端字节序或小端字节序,浮点数或整数以及不同位体去保存数据。
  在此我们需要清楚的是在iPhone中线性PCM的优选变体是小端字节序整数16位体,或简称为LEI16。同时这也不同于Mac OSX中的优选变体。因为我们总是在Mac上创造音频文件,所以我们最好能够仔细检查文件并将其转换成iPhone中的优选格式。
  文件格式(或音频容器)
  iPhone支持许多文件格式,包括MPEG-1(.mp3),MPEG-2 ADTS(.aac),AIFF,CAF以及WAVE。但是通常情况下我们都会选择CAF,因为它能够同时包含所有iPhone所支持的编码,并且它也是iPhone中的优先文件格式选择。
  比特率
  在此我们必须强调音频编码中一个非常重要的术语:比特率。
  比特率是指一个音频文件所占有的每秒字节数。像AAC或MP3等编码便能够指定字节数而压缩音频文件。当你降低每秒钟的字节数时,你同时也在降低音频的质量。
  你可以根据特定的音频文件选择比特率――尝试不同的比特率并判断哪一种最能够匹配文件规格和音频质量。如果你的文件主要与语音有关,你便可以选择较低的比特率。
  以下是一些较常见的比特率:
  每秒32千比特率:调频广播质量
  每秒48千比特率:较长的语音博客中常见的频率
  每秒64千比特率:标准长度的语音博客中常见的频率
  每秒96千比特率:调频的质量
  每秒128千比特率:MP3音乐最常见的比特率
  每秒160千比特率:音乐家和敏感听众的优先选择
  每秒192千比特率:数字无线电广播的质量
  每秒320千比特率:和CD的质量没两样了
  每秒500千至1411千比特率:无失真的音频编码,如线性PCM
  采样频率
  我们最后需要提到的一个术语便是:采样频率。
  当我们将模拟信号转换成数字格式时,采样频率是指我们多长时间抽取一次声波去创造数字信号。
  通常情况下44100赫兹便是最常用的采样频率,因为这与CD音频的频率相同。
  转换和记录
  这是iPhone开发者需要掌握的制作音频要素的第二部分。
  在上文中我提到了文件格式与数据格式间的区别,以及iPhone所支持的各种格式。而接下来我将说说如何在这两种格式间进行转换。
  Afplay,AFConvert以及AFInfo
  在Mac上转换音频文件非常简单,因为Mac中有三个内置命令行工具:afplay,afconvert以及afinfo。
  最容易使用的便是afplay――你只要通过终端输入音频文件名它便能够将其播放出来。当你想要将文件压缩成各种比特率以对比效果时这种工具便非常方便。
  接下来便是afinfo――当你输入音频文件名时它将呈现出文件格式,数据格式,比特率以及其它有用的信息,如下:
  afinfo pew-pew-lei.caf
  File: pew-pew-lei.caf
  File type ID: caff
  Data format: 1 ch, 44100 Hz, ‘lpcm’ (0x0000000C)
  16-bit little-endian signed integer no channel layout.
  estimated duration: 0.560 sec
  audio bytes: 49408
  audio packets: 24704
  audio 24704 valid frames + 0 priming + 0 remainder = 24704
  bit rate: 705600 bits per second
  packet size upper bound: 2
  audio data file offset: 4096
  optimized
  sound check:
  approximate duration in seconds 0.56
  从以上代码中我们可以看出这个文件拥有一个CAF文件类型,一个16位体小端字节序带符号整数数据格式(LEI16),一个44100赫兹的样本频率以及每秒705600的比特率。
  最后我们来说说最实用的工具:afconvert。afconvert也是最容易使用的一种,我们只需要发出如下命令行便可:
  afconvert -d [out data format] -f [out file format] [in file] [out file]
  为了将文件转换成iPhone首选的未压缩音频编码(提示:小端字节序整数16位线性PCM变体,也就是LEI16)以及首选的文件格式(提示:核心音频文件格式,也就是CAFF),你就需要发出如下命令行:
  afconvert -d LEI16 -f ‘caff’ input_file.xxx output_file.caf
  需要注意的是我并未在此指出输入文件的扩展名,因为afconvert已经能够帮助我们判别任何音频文件类型并进行适当的转换,所以它也算是带有音频文件格式的音频数据格式。
  另外一点需要注意的便是:你可以在输入/输出文件前添加-b选项以设置比特率。举个例子来说吧,在此我将文件保存为每秒32千比特率,随后又改为每秒128千比特率:
  afconvert -d aac -f ‘caff’ -b 131072 background-music-lei.caf test_128.caf
  afconvert -d aac -f ‘caff’ -b 32768 background-music-lei.caf test_32.caf
  在Mac上记录音频
  以下我将列出在Mac上制作音乐和声音的一些好方法。
  首先是GarageBand。GarageBand能够帮助我们更容易组合一些预制的乐器声,如鼓声,吉他声等,并如此创作出一首简单的音乐。而如果你自己懂音乐的话你便可以将自己的演奏录下来并创造出一些更酷的作品。
  Garage Band Full(from raywenderlich)
  我发现“使用内置软件工具”是最有效的一种方法。
  而当我们记录下满意的歌曲后我们需要将其传送到上,然后“记录在Finder(游戏邦注:Mac OS和Mac OS X中默认的应用程式,能让使用者管理档案,文件,磁盘,网络,以及启动其他的应用程式)”中以抓取文件方便今后的使用。
  我发现GarageBand并不能记录下最简单的音效。所以我便转向了免费的音频程序Audacity(游戏邦注:一款跨平台、免费开源的录音、编辑声音编辑器)。你可以将其插在上然后记录下你的声音,并轻松地将其保存下来。
  Audacity(from raywenderlich)
  不要忘记当你录下自己的声音时它们将被保存为16位体大端字节序带符号整数(BEI16),所以在整合到应用前一定要将其转换为LEI16。
  如果你不懂音乐的话也可以在The Freesound Project网站的创作共用许可版块中找到一些合适的声音授权,或者也可以聘请专业的音乐人士帮忙!
  使用编程方式播放音频
  这是iPhone开发者需要掌握的制作音频要素的第三部分。
  之前我们已经谈到了文件和数据格式间的区别以及如何在Mac上转换并记录音频。现在我们将尝试着在上播放音频。
  在Mac上播放音频的方法有很多,包括System Sound Services,AVAudioPlayer,Audio Queue Service以及。如果没有外部支持库的话,最简单的方法应该是System Sound Services和AVAudioPlayer――所以让我们开始讨论你何时想要(或不想要)使用哪种方法以及如何使用它们。
  System Sound Services
  System Sound Services为我们提供了一种非常简单的方法以播放音频文件。而我们只需要如下进行操作:
  NSString *pewPewPath = [[NSBundle mainBundle]
  pathForResource:@”pew-pew-lei” ofType:@”caf”];
  NSURL *pewPewURL = [NSURL fileURLWithPath:pewPewPath];
  AudioServicesCreateSystemSoundID((CFURLRef)pewPewURL, &_pewPewSound);
  AudioServicesPlaySystemSound(_pewPewSound);
  没有什么比这个还简单了。但是这一方法也存在许多缺陷:
  它只支持音频数据格式的线性PCM或IMA4.
  它只支持音频文件格式CAF,AIF或WAV。
  声音的长度只能压缩在30秒以内。
  AVAudioPlayer
  如果你想要以一个AAC或MP3格式的音频文件作为背景音乐的话你又该怎么做?另外一种简单的方法便是使用AVAudioPlayer类播放音乐。很大程度上看来这也是一种非常简单的方法:
  NSError *
  _backgroundMusicPlayer = [[AVAudioPlayer alloc]
  initWithContentsOfURL:backgroundMusicURL error:&error];
  [_backgroundMusicPlayer prepareToPlay];
  [_backgroundMusicPlayer play];
  而AVAudioPlayer的缺陷则是速度非常慢。如果你按压一个按钮并尝试着使用AVAudioPlayer去触发一个声音,此时便会出现一个非常明显的延迟。而如果你不在乎这种延迟的话(就像启动背景音乐),AVAudioPlayer便是一种非常合适的选择。
  同时我们还需牢记:
  1.如果你正在播放背景音乐,请一定要检查看看是否已经播放了其它音频,从而确保不会同时运行两个层面的音乐!
  2.如果一个接入而用户选择了“拒绝”后,你需要默认设置你的AVAudioPlayer为停止。你可以通过再次登录AVAudioPlayerDelegate而重新开启AVAudioPlayer并在audioPlayerEndInterruption方法中再次播放音乐。
  示例代码
  我组合了一些示例代码以呈现System Sound Services和AVAudioPlayer的使用。这些代码不仅能够演示出应用程序界面,同时也拥有一些特别的节拍和超酷的太空氛围。
  OpenAL
  如果你正在编写一款游戏或应用并希望在较低延迟性的前提下通过低细粒度去控制音频,那么你便不会使用上述的方法。相反地,你可能会选择使用OpenAL这个iPhone支持的跨平台音频库。
  OpenAL其实并不好理解。但是幸运的是Alex Restrepo已经在gehacktes.net网站上为我们呈现出一个非常棒的例子,并使用OpenAL创造了一个出色的声音引擎库,所以我们便能够在自己的项目中使用这一引擎库,或以它作为参考。
  还有一个选择便是Cocos2D游戏库,其中包含了一个非常容易使用的声音引擎能够创造出噼啪声的音效。
  以上这些便是我对于iPhone音频程序设计的相关内容,但是需要注意的是我只触及一些基础元素而未进行深入研究。我希望本文能够为那些刚刚接触音频理念的开发者提供一些帮助。
(作者:游戏邦责任编辑:王健楠)
天极新媒体&最酷科技资讯扫码赢大奖
* 网友发言均非本站立场,本站不在评论栏推荐任何网店、经销商,谨防上当受骗!
办公软件IT新闻整机Android 通过AudioTrack播放CAF音频_Linux编程_Linux公社-Linux系统门户网站
你好,游客
Android 通过AudioTrack播放CAF音频
来源:Linux公社&
作者:noodle123
我们知道iPhone录制的音频都是caf格式,的Mediaplayer不支持这个格式的播放..那么怎么办? 我们使用AudioTrack来播放!!代码如下:
import&android.app.A&&
import&android.os.B&&
import&android.view.V&&
import&android.widget.B&&
import&android.widget.TextV&&
import&android.media.MediaP&&
import&android.media.AudioM&&
import&android.media.AudioT&&
import&android.media.AudioF&&
public&class&LRChannel&extends&Activity&{&&
&&&&private&Button&lB&&
&&&&private&Button&rB&&
&&&&private&TextView&myTextV&&
&&&&private&MediaPlayer&mMediaPlayer01&=&null;&&
&&&&private&AudioTrack&aAudioTrack01&=&null;&&
&&&&private&String&strFilePath&=&"/sdcard/test.caf";&&
&&&&private&float&midVol&=&0;&&
&&&&@Override&&
&&&&public&void&onCreate(Bundle&savedInstanceState)&{&&
&&&&&&&&super.onCreate(savedInstanceState);&&
&&&&&&&&setContentView(R.layout.main);&&
&&&&&&&&&&
&&&&&&&&lButton&=&(Button)&findViewById(R.id.ButtonL);&&
&&&&&&&&rButton&=&(Button)&findViewById(R.id.ButtonR);&&
&&&&&&&&myTextView&=&(TextView)&findViewById(R.id.myTextView);&&
&&&&&&&&&&
&&&&&&&&&&
&&&&&&&&lButton.setOnClickListener(new&Button.OnClickListener()&&
&&&&&&&&{&&
&&&&&&&&&&@Override&&
&&&&&&&&&&public&void&onClick(View&arg0)&&
&&&&&&&&&&{&&
&&&&&&&&&&&&&&&&playSound(strFilePath,&0);&&
&&&&&&&&&&}&&
&&&&&&&&});&&
&&&&&&&&&&
&&&&&&&&&&
&&&&&&&&rButton.setOnClickListener(new&Button.OnClickListener()&&
&&&&&&&&{&&
&&&&&&&&&&@Override&&
&&&&&&&&&&public&void&onClick(View&arg0)&&
&&&&&&&&&&{&&
&&&&&&&&&&&&&&playSound(strFilePath,&1);&&
&&&&&&&&&&}&&
&&&&&&&&});&&
&&&&private&void&playSound(String&strPath,&int&iChannel)&&
&&&&&&if&(&aAudioTrack01&!=&null&)&&
&&&&&&&&&&aAudioTrack01.release();&&
&&&&&&&&&&aAudioTrack01&=&null;&&
&&&&&&int&iMinBufSize&=&AudioTrack.getMinBufferSize(<FONT color=#c,&&
&&&&&&&&&&&&&&&&&&&&&&&&&&AudioFormat.CHANNEL_CONFIGURATION_STEREO,&&
&&&&&&&&&&&&&&&&&&&&&&&&&&AudioFormat.ENCODING_PCM_16BIT);&&
&&&&&&if&(&iMinBufSize&==&AudioTrack.ERROR_BAD_VALUE&||&iMinBufSize&==&AudioTrack.ERROR&)&&
&&&&&&&&&&return;&&
&&&&&&try&&
&&&&&&&&&&aAudioTrack01&=&new&AudioTrack(AudioManager.STREAM_MUSIC,&<FONT color=#c,&&
&&&&&&&&&&&&&&&&&&&&AudioFormat.CHANNEL_CONFIGURATION_STEREO,&&
&&&&&&&&&&&&&&&&&&&&AudioFormat.ENCODING_PCM_16BIT,&&
&&&&&&&&&&&&&&&&&&&&iMinBufSize,&&
&&&&&&&&&&&&&&&&&&&&AudioTrack.MODE_STREAM);&&
&&&&&&catch&(IllegalArgumentException&iae)&&
&&&&&&&&&&myTextView.setText("new&AudioTrack&Exceeption:"&+&iae.toString());&&
&&&&&&&&&&iae.printStackTrace();&&
&&&&&&byte&data[]&=&new&byte[iMinBufSize];&&
&&&&&&aAudioTrack01.write(data,&0,&data.length);&&
&&&&&&aAudioTrack01.write(data,&0,&data.length);&&
&&&&&&float&lValue&=&0;&&
&&&&&&float&rValue&=&0;&&
&&&&&&if&(&iChannel&==&0&)&&
&&&&&&&&&&lValue&=&1.0f;&&
&&&&&&&&&&rValue&=&0.0f;&&
&&&&&&else&if&(&iChannel&==&1&)&&
&&&&&&&&&&lValue&=&0.0f;&&
&&&&&&&&&&rValue&=&1.0f;&&
&&&&&&aAudioTrack01.play();&&
&&&&&&if&(&aAudioTrack01.setStereoVolume(lValue,&rValue)&==&AudioTrack.SUCCESS&)&&
&&&&&&&&&&myTextView.setText("setStereoVolume&successfully!");&&
&&&&&&aAudioTrack01.stop();&&
&&&&&&if&(&aAudioTrack01.setStereoVolume(midVol,&midVol)&==&AudioTrack.SUCCESS&)&&
&&&&&&&&&&myTextView.setText("Restore&setStereoVolume&successfully!");&&
&&&&&&aAudioTrack01.release();&&
&&&&&&aAudioTrack01&=&null;&&
&&&&@Override&&
&&&&protected&void&onDestroy()&{&&
&&&&&&&&super.onDestroy();&&
&&&&&&&&&&
&&&&&&&&if&(&aAudioTrack01&!=&null&)&{&&
&&&&&&&&&&&&aAudioTrack01.setStereoVolume(midVol,&midVol);&&
&&&&&&&&&&&&aAudioTrack01.release();&&
&&&&&&&&&&&&aAudioTrack01&=&null;&&
&&&&&&&&}&&
更多Android相关信息见 专题页面
相关资讯 & & &
& (03/06/:38)
& (02/18/:27)
& (11/06/:26)
& (01/20/:15)
& (09/16/:31)
图片资讯 & & &
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款
QQ 发表于 乱起八糟 caf文件呢?苹果的.caf音频格式,在电脑上用什么软件播放?用什么软件可以转为mp3格式?_百度知道
苹果的.caf音频格式,在电脑上用什么软件播放?用什么软件可以转为mp3格式?
用什么软件可以转为mp3格式苹果的,在电脑上用什么软件播放.caf音频格式
提问者采纳
itunse可以,footbar也行,转化魔力工厂,格式工厂都行
itunse我试过不行啊
footbar行不?goldenear试试
提问者评价
其他类似问题
为您推荐:
音频格式的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁移动端 java后台把 caf、amr格式的音频文件转换成MP3格式文件
[问题点数:100分,结帖人caoyanan_com]
移动端 java后台把 caf、amr格式的音频文件转换成MP3格式文件
[问题点数:100分,结帖人caoyanan_com]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。}

我要回帖

更多关于 caf格式转换器 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信