마이크에서 오디오를 녹음하고 base64 문자열로 변환 한 다음 서버로 보내려고합니다.서버에 마이크의 오디오 보내기
그런 다음 서버는 base64 문자열을 .wav 파일로 변환합니다.
을 내 C# 코드 :IsolatedStorageFileStream fileStream = new IsolatedStorageFileStream(Filename, FileMode.Create, myIsolatedStorage);
fileStream.Write(stream.GetBuffer(), 0, (int)stream.Position);
fileStream.Position = 0;
// Convert to base64 string and then urlencode it:
byte[] binaryData = new Byte[fileStream.Length];
long bytesRead = fileStream.Read(binaryData, 0, (int)fileStream.Length);
string fileBase64 = System.Convert.ToBase64String(binaryData, 0, binaryData.Length);
fileBase64 = HttpUtility.UrlEncode(fileBase64);
// Send it to server:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://.../upload.php");
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8";
string postData = String.Format("file={0}", fileBase64);
// Getting the request stream.
request.BeginGetRequestStream
(result =>
{
// Sending the request.
using (var requestStream = request.EndGetRequestStream(result))
{
using (StreamWriter writer = new StreamWriter(requestStream))
{
writer.Write(postData);
writer.Flush();
}
}
// Getting the response.
request.BeginGetResponse(responseResult =>
{
var webResponse = request.EndGetResponse(responseResult);
using (var responseStream = webResponse.GetResponseStream())
{
using (var streamReader = new StreamReader(responseStream))
{
string srresult = streamReader.ReadToEnd();
}
}
}, null);
}, null);
내 PHP 스크립트는 "+/8cADkAOQAWAPD/7 층/5 ..."다음 base64_decode로 .wav 파일로 변환 PHP와 같은 base64로 문자열을받을 기능. 그러나이 파일을 VLC로 열면 아무 것도 재현하지 못합니다.
이byte[] buffer = new byte[microphone.GetSampleSizeInBytes(duration)];
using (IsolatedStorageFile userStore = IsolatedStorageFile.GetUserStoreForApplication())
using (IsolatedStorageFileStream openfilestream = userStore.OpenFile(Filename, FileMode.Open))
{
openfilestream.Read(buffer, 0, buffer.Length);
}
SoundEffect sound = new SoundEffect(buffer, microphone.SampleRate, AudioChannels.Mono);
soundInstance = sound.CreateInstance();
soundIsPlaying = true;
soundInstance.Play();
누군가가 나를 도울 수 :이 방법으로 파일을 열 대신하는 경우
내가 저장 한 직후, 다음 사운드를 재현, (아래 참조)?
원시 오디오 데이터를 저장하고 SoundEffect로 재생하고 있습니다. WAVE 파일은 단순히 데이터가 아니지만 헤더도 있습니다 (비트 맵 파일은 일련의 픽셀이 아니므로). 프로그램으로 재생하려면 헤더 (Google for specs)로 저장해야합니다. 운이 좋으면 단순한 파일 형식이고 헤더는 바이트 (형식, 주파수, 채널) 일뿐입니다. –