0

マイクからオーディオを録音してクラウド ストレージに送信するアプリを 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();
4

0 に答える 0