Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Общие вопросы > 2 wav |
Автор: Гость_Intro 4.8.2004, 18:54 |
Я разрабатываю проект сравнения двух wav файлов. Открываю wav файлы с помощью обычных потоков файлового ввода-вывода(возможно кому-то это покажется топорным ). Моя начальная цель програмно вычислить то место, где у wav начинается основная часть(то есть звук). Зачем это нужно? Чтобы потом написать программу сравнивающую звук обоих файлов и выводящую процентное соотношение похожести. Сама программа написана и работает, но основная часть, то есть функция сравнения не коректно выводит результаты! --- при компиляции ошибок замечено не было. P.S. ... Результат сравнения двух одинаковых файлов : 268 совпадений при размерах файлов 7 мегабайт Вот функция : void sravn_file(ifstream& wave1in, ifstream& wave2in, ofstream& result) { char w1,w2; while(! wave1in.eof() || ! wave2in.eof()) { wave1in.get(w1); wave2in.get(w2); if (w1 == w2) { i++; //это переменная-счётчик обьявленная как глобальная result.put(w2); cout << w2; wave1in.get(w1); wave2in.get(w2); } } } //Не судите меня строго я только начинающий. |
Автор: p0s0l 4.8.2004, 20:17 |
Зачем два последних get'а ? Какого типа у тебя переменная i ? Может просто происходит переполнение ?... |
Автор: lynx_916 4.8.2004, 20:44 |
попробуй старыую ф-цию read(). читай за раз байт эдак 10. и помещай их куда-то. потом сравни и выбрось. |
Автор: Гость_Intro 5.8.2004, 05:58 |
Вообще по хорошему надо было сделать цикл do while... мне надо совместить и условие о конечности входящих файловых потоках и условие обязательного предварительного сравнивания. Именно поэтому из-за своей топорности код выглядит нелепым ![]() ............................................................................................................ А про read() по-подробней... Дело в том, что я встретился с проблеммой когда даже ну очень похожие по звуку файлы различаются по-байтово. Эсть ли как какая-то уловка, чтобы пропускать некоторые байты в группе входящих по файловому потоку байтов? Пожалуйста напишите какой заголовочный файл нужен для read() и возможные параметры этой функции. Заранее благодарен. |
Автор: C/L 7.8.2004, 02:52 | ||
Сравнивались копии одного и того же файла или файлы с похожим звуком? Сравнивать похожие звуки по байтам думаю мало что даст, совпадение будет только у копии одного и тогоже файла. Сравнивать нужно спектры звуков или что-то более сложное. Если хочешь знать где начинается звук - формат файлов WAV в инете думаю найти несложно. |
Автор: C/L 7.8.2004, 03:09 |
http://geom.mgsu.ru/Docs/CodeNet/www.codenet.al.ru/progr/audio/sbprot.htm#part_3 http://graphics.cs.msu.ru/courses/cg02b/assigns/hw-2/help/wavfmt2.htm http://art.bdk.com.ru/govor/infast49.htm |
Автор: C/L 7.8.2004, 04:42 |
http://www.developing.ru/ubb/Forum18/HTML/000103.html |