Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.03.2016, 08:27   #1
AleK135
 
Регистрация: 31.03.2016
Сообщений: 3
Печаль Считывание и запись Wav

Здравствуйте, подскажите, почему с таким кодом файл не остается таким же, а уменьшается размером и длительностью звучания?

Код:
using System;
using System.Collections.Generic;
using System.IO;
 
namespace ConsoleApplication1
{
    class Program
    {
        struct WavHeader
        {
            public byte[] riffID;
            public uint size;
            public byte[] wavID;
            public byte[] fmtID;
            public uint fmtSize;
            public ushort format;
            public ushort channels;
            public uint sampleRate;
            public uint bytePerSec;
            public ushort blockSize;
            public ushort bit;
            public byte[] dataID;
            public uint dataSize;
        }
        static void Main(string[] args)
        {
            WavHeader Header = new WavHeader();
            List<Int16> lDataList = new List<Int16>();
 
            using (FileStream fs = new FileStream("C:\\Users\\Admin\\Downloads\\key.wav", FileMode.Open, FileAccess.Read))
            using (BinaryReader br = new BinaryReader(fs))
            {
                try
                {
                    Header.riffID = br.ReadBytes(4);//1
                    Header.size = br.ReadUInt32();//2
                    Header.wavID = br.ReadBytes(4);//3
                    Header.fmtID = br.ReadBytes(4);//4
                    Header.fmtSize = br.ReadUInt32();//5
                    Header.format = br.ReadUInt16();//6
                    Header.channels = br.ReadUInt16();//7
                    Header.sampleRate = br.ReadUInt32();//8
                    Header.bytePerSec = br.ReadUInt32();//9
                    Header.blockSize = br.ReadUInt16();//10
                    Header.bit = br.ReadUInt16();//11
                    Header.dataID = br.ReadBytes(4);//12
                    Header.dataSize = br.ReadUInt32();//13
 
                    int n = (int)(Header.dataSize/8/16); // (int)Header.dataSize;
 
                    for (int i = 0; i < n; i++)
                    {
                        Int16 tmp = 0;
                        tmp = br.ReadInt16();
                        lDataList.Add(tmp);
                        //rDataList.Add((short)br.ReadUInt16());
                    }
                }
                finally
                {
                    if (br != null)
                    {
                        br.Close();
                    }
                    if (fs != null)
                    {
                        fs.Close();
                    }
                }
            }
            Console.WriteLine("Открыт");
 
            using (FileStream fs = new FileStream("C:\\Users\\Admin\\Downloads\\key.wav", FileMode.Create, FileAccess.Write))
            using (BinaryWriter bw = new BinaryWriter(fs))
            {
                try
                {
                    bw.Write(Header.riffID);//1
                    bw.Write(Header.size);//2
                    bw.Write(Header.wavID);//3
                    bw.Write(Header.fmtID);//4
                    bw.Write(Header.fmtSize);//5
                    bw.Write(Header.format);//6
                    bw.Write(Header.channels);//7
                    bw.Write(Header.sampleRate);//8
                    bw.Write(Header.bytePerSec);//9
                    bw.Write(Header.blockSize);//10
                    bw.Write(Header.bit);//11
                    bw.Write(Header.dataID);//12
                    bw.Write(Header.dataSize);//13
 
                    int n = (int)(Header.dataSize/8/16); // (int)Header.dataSize;
 
                    for (int i = 0; i < n; i++)
                    {
                        Int16 tmp = lDataList[i];
                        bw.Write(tmp);
                    }
                    
                }
                finally
                {
                    if (bw != null)
                    {
                        bw.Close();
                    }
                    if (fs != null)
                    {
                        fs.Close();
                    }
                }
            }
 
            return;
        }
    }
}
AleK135 вне форума Ответить с цитированием
Старый 07.04.2016, 10:48   #2
AleK135
 
Регистрация: 31.03.2016
Сообщений: 3
По умолчанию

Нашел рабочий код, кому надо, берите: deposit files . com/files/.........


Код:
using System;
using System.Collections.Generic;
using System.IO;

namespace ConsoleApplication1
{
    class Program
    {
        struct WavHeader
        {
            public byte[] riffID;
            public uint size;
            public byte[] wavID;
            public byte[] fmtID;
            public uint fmtSize;
            public ushort format;
            public ushort channels;
            public uint sampleRate;
            public uint bytePerSec;
            public ushort blockSize;
            public ushort bit;
            public byte[] dataID;
            public uint dataSize;
        }
        static void Main(string[] args)
        {
            WavHeader Header = new WavHeader();
            List<Int16> lDataList = new List<Int16>();

            using (FileStream fs = new FileStream("file name", FileMode.Open, FileAccess.Read))
            using (BinaryReader br = new BinaryReader(fs))
            {
                try
                {
                    Header.riffID = br.ReadBytes(4);//1
                    Header.size = br.ReadUInt32();//2
                    Header.wavID = br.ReadBytes(4);//3
                    Header.fmtID = br.ReadBytes(4);//4
                    Header.fmtSize = br.ReadUInt32();//5
                    Header.format = br.ReadUInt16();//6
                    Header.channels = br.ReadUInt16();//7
                    Header.sampleRate = br.ReadUInt32();//8
                    Header.bytePerSec = br.ReadUInt32();//9
                    Header.blockSize = br.ReadUInt16();//10
                    Header.bit = br.ReadUInt16();//11
                    Header.dataID = br.ReadBytes(6);//12
                    Header.dataSize = br.ReadUInt32();//13

                    int n = (int)(Header.dataSize/ Header.channels*8 / Header.bit);

                    for (int i = 0; i < n; i++)
                    {
                        Int16 tmp = 0;
                        tmp = br.ReadInt16();
                        lDataList.Add(tmp);
                    }
                }
                finally
                {
                    if (br != null)
                    {
                        br.Close();
                    }
                    if (fs != null)
                    {
                        fs.Close();
                    }
                }
            }
            Console.WriteLine("Открыт");

            using (FileStream fs = new FileStream("file name", FileMode.Create, FileAccess.Write))
            using (BinaryWriter bw = new BinaryWriter(fs))
            {
                try
                {
                    bw.Write(Header.riffID);//1
                    bw.Write(Header.size);//2
                    bw.Write(Header.wavID);//3
                    bw.Write(Header.fmtID);//4
                    bw.Write(Header.fmtSize);//5
                    bw.Write(Header.format);//6
                    bw.Write(Header.channels);//7
                    bw.Write(Header.sampleRate);//8
                    bw.Write(Header.bytePerSec);//9
                    bw.Write(Header.blockSize);//10
                    bw.Write(Header.bit);//11
                    bw.Write(Header.dataID);//12
                    bw.Write(Header.dataSize);//13

                    int n = (int)(Header.dataSize / Header.channels * 8 / Header.bit);

                    for (int i = 0; i < n; i++)
                    {
                        Int16 tmp = lDataList[i];
                        bw.Write(tmp);
                    }
                    
                }
                finally
                {
                    if (bw != null)
                    {
                        bw.Close();
                    }
                    if (fs != null)
                    {
                        fs.Close();
                    }
                }
            }

            return;
        }
    }
}

Последний раз редактировалось Alex11223; 07.04.2016 в 11:57.
AleK135 вне форума Ответить с цитированием
Старый 07.04.2016, 10:51   #3
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Если и правда нашли, то хотя бы загрузите в нормальное место типа яндекс.диска, дропбокса, вложений файлов этом форуме (внизу в расширенном режиме), github, ...

А еще лучше выложить сюда основную часть кода.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос про обработку WAV (касетная запись в бинарь) Tronix Мультимедиа в Delphi 24 02.03.2013 23:50
Запись и считывание USB. mr.ppc Общие вопросы Delphi 1 10.08.2012 11:07
Обработка и запись WAV Voxa7 Помощь студентам 2 13.03.2011 11:28
Запись и чтение WAV-файлов в/из базы Sanprof БД в Delphi 1 15.11.2010 13:27
Считывание и запись в файл Oki Помощь студентам 3 01.11.2010 21:08