Symbian中音频API的运用
2010-07-22 01:41:00 来源:WEB开发网{
// iAudioPlayer->Duration()可以得到歌曲的总时间,值和aDuration相等
iAudioPlayer->SetVolume(iAudioPlayer->MaxVolume() / 3);
iAudioPlayer->Play(); /* 播放音频数据。此方法为异步方法,载入完成会调用MMdaAudioPlayerCallback::MapcPlayComplete(TInt aError)方法。注意有些方法需要在正在播放音频数据时调用才有意义,比如 iAudioPlayer->GetPosition(TTimeIntervalMicroSeconds &)和iAudioPlayer->Pause() 等等 */
}
else
{
//iAudioPlayer->CancelRegisterAudioResourceNotification();
iAudioPlayer->Stop();
}
}
// 播放完成
void CMyObserver::MapcPlayComplete(TInt aError)
{
if (aError == KErrNone)
{
iAudioPlayer->Close(); /* Closes the current audio clip, so can allow another clip to be opened). */
iAudioPlayer->OpenFileL(_L("c:\data\Fur-Elise.mid")); /* 打开另一个音频文件并重复播放流程 */
}
else
{
iAudioPlayer->Stop();
}
}
三. CMdaAudioOutputStream
音频流播放类允许程序播放音频时,不必拥有全部音频的数据。音频数据以递增方式存取和缓冲,并尽量保证平滑和连续播放。
这个类的工作原理就是将PCM数据传递给底层音乐设备并通知其开始播放。
如果我们的程序中使用了第三方解码库,也需要使用这个类来将解码后的音频数据传递给底层音乐设备。
流播放器支持的唯一一种音频格式是16位脉冲编码调制(pulse code modulation,PCM)。通常PCM数据包含一个44字节的头部(包含音频数据的有效载荷信息)。由于流播放器只接受16位PCM,因此它并不需要这个头部信息。
CMdaAudioOutputStream::SetAudioPropertiesL(TInt aSampleRate, TInt aChannels)方法可以设置取样率和通道数。
而音量等附加信息可以通过传递TMdaAudioDataSettings(TMdaAudioDataSettings 是TMdaPackage类的子类)对象给Open()方法来控制。
CMdaAudioOutputStream * iOutputStream =
更多精彩
赞助商链接