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