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

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

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

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

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

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

Вставить пробел после каждого символа "." "," "!" или "?", если за этими символами не следует пробел - C++
Вставить пробел после каждого символа "." "," "!" или "?", если за этими символами не следует пробел (т. е. следует любой символ, кроме...

После каждого знака препинания (".", ",", ";") вставить в строку пробел, если там его нет - C++
Выполните задания с использованием библиотечного класса string. Даны строка S. Необходимо после каждого знака препинания (".", ",",...

Переписать в файл О все элементы файла К с заменой в них символа "0" на символ "1" и наоборот - C++
Помогите создать файл К,элементы которого являются символьными. Переписать в файл О все элементы файла К с заменой в нх символа 0 на символ...

Переписать в файл О все элементы файла К с заменой в них символа "0" на символ "1" и наоборот - C++
Помогите. Нужно создать файл К,элементы которого являются символами. Переписать в файл О все элементы файла К с заменой в них символа 0 на...

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно" - C++
В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно". Я так...

Чтения структуры из файла (описать структуру с именем "ORDER": "счет плательщика"; "счет получателя"; "сумма, переводится банковской операцией") - C++
Описать структуру с именем "ORDER", содержащий следующие поля: "Счет плательщика"; "Счет получателя"; "Сумма, переводится банковской...

6
castaway
Эксперт С++
4885 / 3020 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
30.07.2014, 15:05 #2
А в поле Format что распологается? "WAVE" ?
0
SatanaXIII
Супер-модератор
Эксперт С++
5616 / 2651 / 246
Регистрация: 01.11.2011
Сообщений: 6,534
Завершенные тесты: 1
30.07.2014, 16:14 #3
Цитата Сообщение от YangerProger Посмотреть сообщение
Из файла я получаю байтовый массив.
Как именно?
Цитата Сообщение от YangerProger Посмотреть сообщение
сохраняю файл, но он уже не воспроизводится
Шапку тупо копируйте и потом ее же и пишите.

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

Цитата Сообщение от castaway Посмотреть сообщение
А в поле Format что распологается? "WAVE" ?
Обычно да. Но шапка может и быть нестандартной.
0
castaway
Эксперт С++
4885 / 3020 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
30.07.2014, 16:38 #4
Я поэтому и спрашиваю, что и .wav файлы бывают с компрессией и формат может различаться.
0
Nick Alte
Эксперт С++
1639 / 1011 / 119
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
30.07.2014, 20:16 #5
Я просто оставлю это здесь: RIFF
0
ValeryS
Модератор
6679 / 5088 / 476
Регистрация: 14.02.2011
Сообщений: 17,086
30.07.2014, 20:32 #6
Цитата Сообщение от YangerProger Посмотреть сообщение
что данные в формате wav начинаются с 44 байта.
не факт
нужно анализировать "шапку"
Nick Alte, скинул ссылку на RIFF
Цитата Сообщение от YangerProger Посмотреть сообщение
Из файла я получаю байтовый массив. Изменяю младший бит, например, в первом байте данных, то есть в 44-ом, сохраняю файл, но он уже не воспроизводится.
скорее всего испортил служебную информацию
и считывать лучше не байтами а структурами
0
Croessmah
Эксперт CЭксперт С++
13514 / 7673 / 866
Регистрация: 27.09.2012
Сообщений: 18,891
Записей в блоге: 3
Завершенные тесты: 1
31.07.2014, 12:21 #7
Цитата Сообщение от YangerProger Посмотреть сообщение
что данные в формате wav начинаются с 44 байта.
Изучайте структуру RIFF. Блоков может быть намного больше, как до, так и после "звуковых" данных. Считывайте все блоки(если памяти хватает), потом выбирайте нужный и работайте с ним.
Наложение звукового эффекта на wav файл
0
31.07.2014, 12:21
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.07.2014, 12:21
Привет! Вот еще темы с ответами:

Работа с файлами (вывести в текстовый файл "g.txt" любую цифру из исходного файла "f.txt" с сохранением строгого порядка) - C++
Помогите с задачей. Надо вывести в текстовый файл "g.txt" любую цифру из исходного файла "f.txt" с сохранением строгого...

Вывести текст файла, заменив цифры от 0 до 9 на слова "ноль", "один"."девять", начиная каждое предложение с новой строки - C++
Написать программу, которая считывает текст из файла и выводит его на экран, заменив цифры от 0 до 9 на слова "ноль", "один"..."девять",...

Символьный массив: проверить, чтобы после каждого вхождения "1" шло парное вхождение "0" - C++
Доброго времени суток. Есть программа, которая реализует данную задачу: Проверить что б после каждого вхождения "1" шло парное...

Создать список из целых чисел. После каждого элемента, равного "х" вставить элемент, равный "у" - C++
Задача со стеком. Создать список из целых чисел. После каждого элемента,равного х вставить элемент,равный у. какое условие нужно поменять...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

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