我想在 WP8 上播放来自 iOS 的录音,反之亦然。
在 iOS 上,我为此目的使用 AVAudioRecorder,配置如下:
NSString *tempPath = NSTemporaryDirectory();
NSURL *soundFileURL = [NSURL fileURLWithPath:[tempPath stringByAppendingPathComponent:@"sound.aac"]];
NSDictionary *recordSettings = [NSDictionary
dictionaryWithObjectsAndKeys:
[NSNumber numberWithInt:kAudioFormatMPEG4AAC],
AVFormatIDKey,
[NSNumber numberWithInt:AVAudioQualityMin],
AVEncoderAudioQualityKey,
[NSNumber numberWithInt:8000],
AVEncoderBitRateKey,
[NSNumber numberWithInt: 1],
AVNumberOfChannelsKey,
[NSNumber numberWithFloat:8000.0],
AVSampleRateKey,
[NSNumber numberWithInt:16],
AVEncoderBitDepthHintKey,
nil];
NSError *error = nil;
_audioRecorder = [[AVAudioRecorder alloc]
initWithURL:soundFileURL
settings:recordSettings
error:&error];
_audioRecorder.delegate = self;
文件“sound.aac”包含 AAC 容器中的录音,播放录制的音频样本在 iOS 上效果很好。
将文件传输到 WP8 设备后,我无法在 WP8 上播放“sound.aac”。根据以下链接: http: //msdn.microsoft.com/en-us/library/windowsphone/develop/ff462087 (v=vs.105).aspx #BKMK_AudioSupport WP8 应该可以播放该文件。我使用的 WP8 上的代码是:
try
{
this.mediaPlayer = new MediaElement();
mediaPlayer.MediaEnded += new RoutedEventHandler(mediaPlayer_MediaEnded);
IsolatedStorageFile myStore = IsolatedStorageFile.GetUserStoreForApplication();
IsolatedStorageFileStream mediaStream = myStore.OpenFile("sound.aac", FileMode.Open, FileAccess.Read);
this.mediaPlayer.SetSource(mediaStream);
this.messageTextBlock.Text = "Playing the message...";
mediaPlayer.Play();
}
catch (Exception exception)
{
MessageBox.Show("Error playing audio!");
Debug.WriteLine(exception);
return;
}
在此之后,“sound.aac”无休止地播放,扬声器没有声音。显示消息“正在播放消息...”,没有抛出异常,没有 mediaPlayer_MediaEnded 调用。我能做的就是停止播放。
我不知道如何让它工作。