PDA

View Full Version : تبدیل base64 به فایل wave



shahrzad87
شنبه 06 اردیبهشت 1393, 10:15 صبح
سلام

من این کد رو برای تبدیل به wave نوشتم اما فایل wave کامل ذخیره نمیشه.


byte[] dummyAudioData = Convert.FromBase64String(base64Data);
var fname = "test.wav";
FileStream stream = new FileStream(fname, FileMode.Append, FileAccess.Write);
System.IO.BinaryWriter br = new System.IO.BinaryWriter(stream);
br.Write(dummyAudioData);
br.Close();


این کد رو هم امتحان کردم نشد...


byte[] binaryData = Convert.FromBase64String(base64Data);
File.WriteAllBytes("test.wav", binaryData);

rahnema1
شنبه 06 اردیبهشت 1393, 12:11 عصر
سلام
نمی دونم این داده های شما چیه ولی اگه فقط داده های خامه شما باید در ابتدای یک فایل wav هدر اون را بذارید که شامل سایز کل فایل و سایز داده ها و فرمت فایل مثل sample rate و غیره هست بعد از اینها داده های خود را بگذارید
این لینک هم فرمت wav را توضیح داده:
https://ccrma.stanford.edu/courses/422/projects/WaveFormat/

shahrzad87
شنبه 06 اردیبهشت 1393, 12:21 عصر
ممنون. نمی دونم شما وب و جاوااسکریپت کار کردید یا نه ...

من یک وبسایت دارم که صدای کاربر رو رکورد می کنم و فایل رکورد رو به وب سرویس می فرستم که در سرور ذخیره کنم. برای رکورد صدا هم از recorderWorker.js و recordLive.js استفاده کردم. در function handleWAV


var url = URL.createObjectURL(blob);
var reader = new window.FileReader();
reader.readAsDataURL(blob);
reader.onloadend = function () {
base64data = reader.result;
console.log(base64data);
}


base64Data رو به وب سرویس فرستادم.

rahnema1
شنبه 06 اردیبهشت 1393, 12:31 عصر
اگه بتونید یک نمونه فایل ایجاد شده را بفرستید

shahrzad87
شنبه 06 اردیبهشت 1393, 12:39 عصر
data:audio/wav;base64,UklGRiDAAgBXQVZFZm10IBAAAAABAAIAgLsAAAD uAgAEABAAZGF0Y…oACgAMAAoADAANAA0ADQANAAwADAALAA0 ADAAMAAwADQAMAAsADAAKAA0ADQAMAAwADQAKAA==

rahnema1
شنبه 06 اردیبهشت 1393, 13:18 عصر
این قسمت اضافیه

data:audio/wav;base64,

بقیه را تبدیل کنید

shahrzad87
شنبه 06 اردیبهشت 1393, 13:26 عصر
منظورتون این هست که در این کد


byte[] binaryData = Convert.FromBase64String(base64Data);

File.WriteAllBytes("test.wav", binaryData);





در base64Data قسمت
data:audio/wav;base64, را حذف کنم ؟

این کار رو انجام دادم، اما فایل ذخیره نمیشه...

rahnema1
شنبه 06 اردیبهشت 1393, 13:41 عصر
اگه امکان داره لطفا اون استرینگ را در یک فایل تکست بریزید و rar کنید و بفرستید چون فکر کنم قبلی مشکل داشت ( برش خورده بود)

shahrzad87
شنبه 06 اردیبهشت 1393, 13:45 عصر
در ضمیمه فرستادم.

rahnema1
شنبه 06 اردیبهشت 1393, 14:21 عصر
من با این کد ذخیره می کنم. ذخیره میشه ولی محتواش معلوم نیست . شاید حین رد و بدل داده ها مقداری از دست رفته باشه


byte[] dummyAudioData = Convert. FromBase64String( System. IO.File.ReadAllText("base64data.txt") .Substring(22));
File.WriteAllBytes("f.wav", dummyAudioData);

shahrzad87
شنبه 06 اردیبهشت 1393, 14:32 عصر
نمی دونم مشکل از چی هست ...