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

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

Восстановить пароль Регистрация
 
YangerProger
0 / 0 / 0
Регистрация: 12.03.2013
Сообщений: 25
30.07.2014, 14:56     Изменение каждого бита WAV-файла - файл "портится" #1
Нагуглил здесь 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-файла - файл "портится"
Посмотрите здесь:

Программа, которая считывает текст из файла и выводит его на экран, заменив цифры от 0 до 9 на слова "ноль", "один",..."девять" C++
Вывести текст файла, заменив цифры от 0 до 9 на слова "ноль", "один"."девять", начиная каждое предложение с новой строки C++
C++ Определить длину каждого слова. Удалить все буквы "а" и "о" с фамилии
Работа с файлами (вывести в текстовый файл "g.txt" любую цифру из исходного файла "f.txt" с сохранением строгого порядка) C++
Определить длину каждого слова строки, и если она четная, то вставить в середину слова "aa", иначе "а" C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
castaway
Эксперт С++
4839 / 2978 / 367
Регистрация: 10.11.2010
Сообщений: 11,012
Записей в блоге: 10
Завершенные тесты: 1
30.07.2014, 15:05     Изменение каждого бита WAV-файла - файл "портится" #2
А в поле Format что распологается? "WAVE" ?
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5547 / 2561 / 233
Регистрация: 01.11.2011
Сообщений: 6,330
Завершенные тесты: 1
30.07.2014, 16:14     Изменение каждого бита WAV-файла - файл "портится" #3
Цитата Сообщение от YangerProger Посмотреть сообщение
Из файла я получаю байтовый массив.
Как именно?
Цитата Сообщение от YangerProger Посмотреть сообщение
сохраняю файл, но он уже не воспроизводится
Шапку тупо копируйте и потом ее же и пишите.

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

Цитата Сообщение от castaway Посмотреть сообщение
А в поле Format что распологается? "WAVE" ?
Обычно да. Но шапка может и быть нестандартной.
castaway
Эксперт С++
4839 / 2978 / 367
Регистрация: 10.11.2010
Сообщений: 11,012
Записей в блоге: 10
Завершенные тесты: 1
30.07.2014, 16:38     Изменение каждого бита WAV-файла - файл "портится" #4
Я поэтому и спрашиваю, что и .wav файлы бывают с компрессией и формат может различаться.
Nick Alte
Эксперт С++
1590 / 982 / 115
Регистрация: 27.09.2009
Сообщений: 1,897
Завершенные тесты: 1
30.07.2014, 20:16     Изменение каждого бита WAV-файла - файл "портится" #5
Я просто оставлю это здесь: RIFF
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,040
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++ Создать список из целых чисел. После каждого элемента, равного "х" вставить элемент, равный "у"
Переписать в файл О все элементы файла К с заменой в них символа "0" на символ "1" и наоборот C++
Переписать в файл О все элементы файла К с заменой в них символа "0" на символ "1" и наоборот C++

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

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

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