录制成amr声音文件的实现代码

如果你搜一下Nokia或NewLC论坛,会有很多问关于如何录制amr声音文件

的帖子。呵呵,关于这个问题,可是困扰了我很久的了,一不小心,今

天就搞定了,如此甚是欢心,现把一些心得写出来,与大家分享!

首先让我们了解一下Nokia手机上常用的声音文件格式,一般的Nokia手

机都会支持wav,midi,pcm,amr这几种文件格式。其中wav波形文件一

般比较大,由于手机资源有限,它的使用范围不是很广。而midi和amr的

存储格式则比较小,应用比较广泛;Nokia默认的录制的声音文件保存为

amr格式。

需要熟悉的几个类:CMdaAudioPlayerUtility,

CMdaAudioRecorderUtility和CMdaAudioConvertUtility。

以前有人说录制成amr文件需要先流成pcm格式,然后对得到的pcm数据进

行转换后存盘;但最简单的方法还是直接录制成amr文件。

哦,说了一堆乱七八糟的东西,忘了说心得了,其实也很简单。直接使

用CMdaAudioRecorderUtility::OpenFileL()方法录制成amr文件是可以

实现的,但在调用iMdaAudioRecorderUtility->OpenFileL(aFile);之前

,需要加上CEikonEnv::Static()->FsSession().Replace(aFile,aFile)

来确保aFile文件是存在的,并且现在里面没有数据。然后就是不要调用

SDK例子里的iMdaAudioRecorderUtility->SetPosition(

TTimeIntervalMicroSeconds( 0 ) )和iMdaAudioRecorderUtility-

>CropL()。呵呵,简单吧!

下面是源代码:

//===================================

void CMyAudioRecorder::ConstructL(const TDesC& aFile)
{
 // Create a file audio recorder utility instance
 iMdaAudioRecorderUtility = CMdaAudioRecorderUtility::NewL(

*this );

 // this is very important here
 CEikonEnv::Static()->FsSession().Replace(aFile,aFile);
 iMdaAudioRecorderUtility->OpenFileL(aFile);
}

//-------------
void CMyAudioRecorder::RecordL()
{
     // Create a file audio recorder utility instance
     iMdaAudioRecorderUtility = CMdaAudioRecorderUtility::NewL(

*this );

     // this is very important here
     CEikonEnv::Static()->FsSession().Replace(aFile,aFile);
      iMdaAudioRecorderUtility->OpenFileL(aFile);

    // Record from the device microphone
    iMdaAudioRecorderUtility->SetAudioDeviceMode(
                                           

CMdaAudioRecorderUtility::ELocal );
    // Set maximum gain for recording
    iMdaAudioRecorderUtility->SetGain(

iMdaAudioRecorderUtility->MaxGain() );
   
    // 下面两句是不能留的!
    //iMdaAudioRecorderUtility->SetPosition(

TTimeIntervalMicroSeconds( 0 ) );
    //iMdaAudioRecorderUtility->CropL();

    //start recorder

    iMdaAudioRecorderUtility->RecordL();
}

 //转贴或引用以上内容请注明出处!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值