我正在 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();