Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
YangerProger
0 / 0 / 0
Регистрация: 12.03.2013
Сообщений: 25
#1

Изменение каждого бита WAV-файла - файл "портится" - C++

30.07.2014, 14:56. Просмотров 415. Ответов 6
Метки нет (Все метки)

Нагуглил здесь https://ccrma.stanford.edu/courses/4...ts/WaveFormat/ что данные в формате wav начинаются с 44 байта. Из файла я получаю байтовый массив. Изменяю младший бит, например, в первом байте данных, то есть в 44-ом, сохраняю файл, но он уже не воспроизводится. Не могу разобраться с этой структурой. Может кто шарит в этом? Мне нужно в каждом байте данных изменить младший бит так, чтобы файл воспроизводился, и изменения на слух были не уловимы.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.07.2014, 14:56     Изменение каждого бита WAV-файла - файл "портится"
Посмотрите здесь:

Замена в строке каждого второго символа "!" на "$" C++
C++ "Порядковый номер" для каждого экземпляра класса?
C++ создал "circle.h" файл. При компиляции Cpp файла выдаёт unable to open include file 'circle.h'
C++ Считать с файла информацию о команде "Название" "Город", количество побед, поражений, ничьих, забитых и пропущенных мячей
Определить длину каждого слова строки, и если она четная, то вставить в середину слова "aa", иначе "а" C++
C++ Что значит "%d %d\n" в функции вывода в файл fprintf(f, "%d %d\n", i, j);
C++ #include "Sales_item.h" - ошибка "включаемый файл включает самого себя"
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
castaway
Эксперт С++
4869 / 3008 / 370
Регистрация: 10.11.2010
Сообщений: 11,059
Записей в блоге: 10
Завершенные тесты: 1
30.07.2014, 15:05     Изменение каждого бита WAV-файла - файл "портится" #2
А в поле Format что распологается? "WAVE" ?
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5549 / 2583 / 235
Регистрация: 01.11.2011
Сообщений: 6,375
Завершенные тесты: 1
30.07.2014, 16:14     Изменение каждого бита WAV-файла - файл "портится" #3
Цитата Сообщение от YangerProger Посмотреть сообщение
Из файла я получаю байтовый массив.
Как именно?
Цитата Сообщение от YangerProger Посмотреть сообщение
сохраняю файл, но он уже не воспроизводится
Шапку тупо копируйте и потом ее же и пишите.

И вообще потренируйтесь без изменения бит: считайте, найдите, запишите. И проверьте - работает ли.

Цитата Сообщение от castaway Посмотреть сообщение
А в поле Format что распологается? "WAVE" ?
Обычно да. Но шапка может и быть нестандартной.
castaway
Эксперт С++
4869 / 3008 / 370
Регистрация: 10.11.2010
Сообщений: 11,059
Записей в блоге: 10
Завершенные тесты: 1
30.07.2014, 16:38     Изменение каждого бита WAV-файла - файл "портится" #4
Я поэтому и спрашиваю, что и .wav файлы бывают с компрессией и формат может различаться.
Nick Alte
Эксперт С++
1599 / 991 / 117
Регистрация: 27.09.2009
Сообщений: 1,910
Завершенные тесты: 1
30.07.2014, 20:16     Изменение каждого бита WAV-файла - файл "портится" #5
Я просто оставлю это здесь: RIFF
ValeryS
Модератор
6446 / 4912 / 451
Регистрация: 14.02.2011
Сообщений: 16,283
30.07.2014, 20:32     Изменение каждого бита WAV-файла - файл "портится" #6
Цитата Сообщение от YangerProger Посмотреть сообщение
что данные в формате wav начинаются с 44 байта.
не факт
нужно анализировать "шапку"
Nick Alte, скинул ссылку на RIFF
Цитата Сообщение от YangerProger Посмотреть сообщение
Из файла я получаю байтовый массив. Изменяю младший бит, например, в первом байте данных, то есть в 44-ом, сохраняю файл, но он уже не воспроизводится.
скорее всего испортил служебную информацию
и считывать лучше не байтами а структурами
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.07.2014, 12:21     Изменение каждого бита WAV-файла - файл "портится"
Еще ссылки по теме:

После каждого слова, в котором встречается сочетание "по" вставить символ ';' C++
Символьный массив: проверить, чтобы после каждого вхождения "1" шло парное вхождение "0" C++
Добавление в файл и удаление из файла записей о объектах структуры "Фильм" C++
Функции: для каждого числа последовательности найти количество цифр "5" C++
Для каждого прочитанного числа напечатать строку, содержащую соответствующее число символов "*" C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Croessmah
Модератор
Эксперт CЭксперт С++
 Аватар для Croessmah
12501 / 7063 / 793
Регистрация: 27.09.2012
Сообщений: 17,447
Записей в блоге: 2
Завершенные тесты: 1
31.07.2014, 12:21     Изменение каждого бита WAV-файла - файл "портится" #7
Цитата Сообщение от YangerProger Посмотреть сообщение
что данные в формате wav начинаются с 44 байта.
Изучайте структуру RIFF. Блоков может быть намного больше, как до, так и после "звуковых" данных. Считывайте все блоки(если памяти хватает), потом выбирайте нужный и работайте с ним.
Наложение звукового эффекта на wav файл
Yandex
Объявления
31.07.2014, 12:21     Изменение каждого бита WAV-файла - файл "портится"
Ответ Создать тему
Опции темы

Текущее время: 02:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru