マイクからオーディオを録音してクラウド ストレージに送信するアプリを Windows Phone で作成中です。
WP で正常に記録および再生できますが、データを Base64 に変換して JSON オブジェクトにアタッチしようとしています。
これが私が今していることです
jsonObject.Recording = Convert.ToBase64String(stream.toArray());
ストリームの場所
private MemoryStream stream = new MemoryStream();
void microphone_BufferReady(object sender, EventArgs e)
{
// Retrieve audio data
microphone.GetData(buffer);
// Store the audio data in a stream
stream.Write(buffer, 0, buffer.Length);
}
そしてバッファは
buffer = new byte[microphone.GetSampleSizeInBytes(microphone.BufferDuration)];
Android 側では、Base64 をデコードし、再生用の .MP4 ファイルを作成しています。エンコーディング/フォーマットの問題があると確信しているため、これは失敗します。
誰かが私を正しい方向に向けることができますか?
ありがとう
アップデート:
WP は PCM、サンプル レート 16000 Hz、サンプル サイズ 16 ビット、チャンネル 1、オーディオ エンコーディング PCM で記録します。
私が見る限り、Android はこれをサポートしています。
私は次のようにAndroidでデコードしています:
byte[] decoded = Base64.decode(jsonObject.getRecording(), Base64.DEFAULT);
String path = getCacheDir().toString() + "recording.wav";
File file2 = new File(path);
FileOutputStream os = new FileOutputStream(file2, false);
os.write(decoded);
os.close();
そして、次のように再生します。
fileInputStream = new FileInputStream(path);
mPlayer.setDataSource(fileInputStream.getFD());
mPlayer.prepare();
mPlayer.start();