0

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 呼び出しもありません。私にできることは、演奏を止めることだけです。

私はそれを機能させる方法がわかりません。

4

0 に答える 0