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