|
3 / 3 / 0
Регистрация: 15.12.2012
Сообщений: 94
|
||||||||||||||||
Собрать Wav файл при попарном считывании03.09.2015, 12:23. Показов 1397. Ответов 11
Метки нет (Все метки)
Здравствуйте, на вход мне подаётся Raw файл попарно считываю с него по 16 бит, и пытаюсь сформировать из них стерео wav файл(16 бит в левый, 16 в правый). Вот код того что я сделал, но почему-то сформированый файл всё равно не открывается нормально
wav.h
заметил странность что элемент дата весит 16 байт, но каждый элемент по отдельности(коих 10) весит по 4 байта Добавлено через 2 минуты Ошибка явно в этом потому что, размер даты по факту, меньше чем я прописывал в хед файле, как это исправить? Добавлено через 7 минут fwrite(&data, sizeof(long)*data.size(), 1, file_out); - изменил так строчку записи даты в файл, теперь размер правильно но всё равно файл не читается, может я неправильно записываю вектор в файл?
0
|
||||||||||||||||
| 03.09.2015, 12:23 | |
|
Ответы с готовыми решениями:
11
Знаю что информация неправильно преобразовывается при записи в файл, скорее всего и при считывании тоже. Как это исправить? Написать программу, формирующую по исходному WAV файлу новый WAV файл Как определить, что файл закончился при считывании с помощью binaryreader? |
|
|
|
| 03.09.2015, 12:25 | |
|
Вам нужно проверить пересчет. Вы делаете из одного канала два, значит блок данных у вас станет ровно вдвое больше. Это первое. Второе: вам нужно убедиться, что отсчеты вы пишете парно. То есть: отсчет одного канала, отсчет второго и т.д. Далее видно будет.
1
|
|
|
3 / 3 / 0
Регистрация: 15.12.2012
Сообщений: 94
|
|
| 03.09.2015, 12:35 [ТС] | |
|
если я правильно понял, то мне на вход подаётся по 2 пары двухбайтовых слов, из них я делаю 1 двойное слово (4 байта), а насчёт 2 пункта я не понял
0
|
|
|
|
|||||||||||
| 03.09.2015, 12:47 | |||||||||||
Добавлено через 26 секунд
1
|
|||||||||||
|
3 / 3 / 0
Регистрация: 15.12.2012
Сообщений: 94
|
||||||
| 03.09.2015, 12:51 [ТС] | ||||||
|
а как можно я так сделал
0
|
||||||
|
|
||
| 03.09.2015, 13:45 | ||
|
1
|
||
|
3 / 3 / 0
Регистрация: 15.12.2012
Сообщений: 94
|
|
| 03.09.2015, 14:02 [ТС] | |
|
В исходном файле блоки данных по 16 бит, я их поочерёдно и считываю. Вот откуда я брал информацию http://www.graphicon.ru/oldgr/... avfmt2.htm
Вот этот обзац: " Что же касается формата самих звуковых данных, то он зависит от количества каналов и от дискретности. Для монофонического сигнала с дискретностью 8 бит звуковые данные пред ставляют собой массив однобайтовых значений, каждое из которых является выбор-кой сигнала. Для стереофонического сигнала с дискретностью 8 бит звуковые данных имеют формат массива двухбайтовых слов, причем младший байт слова соответствует левому каналу, а старший - правому. Формат звуковых данных с дискретностью 16 бит выглядит аналогично. Для монофонического сигнала данные хранятся в массиве 16-битовых слов. Для стерео-фонического используется массив двойных слов, причем младшему слову соот-ветствует левый канал, а старшему - правый." Добавлено через 7 минут "Идея в том, чтобы каждый отсчет из моно файла продублировать на второй канал в стерео." -скорее всего нет, у меня в файле исходном уже пары блоков по 16 бит для стерео, их не надо дублировать
0
|
|
|
|
||
| 03.09.2015, 14:04 | ||
|
Это все понятно. Вопрос не в этом. Вопрос в том, понимаете ли вы, что записать два подряд 16-битных числа это то же самое что записать 32-битное, сформированное в том же порядке. Это я вот к чему: для простоты и чтобы не мучиться с битовыми операциями, на чтении исходного файла просто пушбэкайте в ваш вектор один отсчет дважды. Потом просто правильно запишите вектор в файл. Дальше видно будет.
Добавлено через 24 секунды
1
|
||
|
3 / 3 / 0
Регистрация: 15.12.2012
Сообщений: 94
|
|||||||||||
| 03.09.2015, 14:11 [ТС] | |||||||||||
|
мне дали raw файл и сказали что надо считывать 16 бит для левого, потом 16 бит для правого, и из них формировать wav файл. Сейчас попробую сделать без битовых операций
Добавлено через 4 минуты Всё равно ошибка вот что получилось wav.cpp
0
|
|||||||||||
|
|
||
| 03.09.2015, 14:18 | ||
|
emmure, а, все, меня переглючило. Я думал у вас только моно файл из которого стерео сделать надо. В качестве лирического отступления: если
Размер блока только просчитать верно нужно будет.Добавлено через 5 минут Зачем же вы вектор так насилуете? Пушбэкайте, не инсертьте. Особо не вчитывался, но может вы и в файл его не правильно пишете. Если вам сложновато, попробуйте просто на массиве сделать.
0
|
||
|
3 / 3 / 0
Регистрация: 15.12.2012
Сообщений: 94
|
|
| 03.09.2015, 14:42 [ТС] | |
|
не мне надо именно попарно считывать, чтобы была возможность не весь файл в wav сделать
Добавлено через 20 минут как вообще узнать что именно в wav файле не так?
0
|
|
|
3 / 3 / 0
Регистрация: 15.12.2012
Сообщений: 94
|
||||||
| 04.09.2015, 22:39 [ТС] | ||||||
|
По итогу оказалось ошибка в этой строчке
0
|
||||||
| 04.09.2015, 22:39 | |
|
Помогаю со студенческими работами здесь
12
Как проигрывать .wav файл на страничке при использовании Internet Explorer 9 Создать wav файл имея raw файл с данными При считывании текста из файла, при нахождении пробела или enter ставится пробел Ошибка при считывании Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
|
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение.
И на уровне агентов добавится между грибами или бактериями взаимодействий.
До того я пробовал подход через многомерные массивы,. . .
|
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Сочетание глобально распределённой вычислительной мощности и инновационных. . .
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|