У меня есть простой читатель WAV, который я нашел онлайн давным -давно, я вернулся к его использованию, но, похоже, он заменит около 1200 образцов в конце чанка данных одним случайным повторяющимся номером , например, -126800. В конце выборки ожидается молчание, поэтому число должно быть нулевым. < /P>
Вот простая программа: < /p>
void main() {
WAV_HEADER* wav = loadWav(".\\audio\\test.wav");
double sample_count = wav->SubChunk2Size * 8 / wav->BitsPerSample;
printf("Sample count: %i\n", (int)sample_count);
vector samples = vector();
for (int i = 0; i < wav->SubChunk2Size; i++)
{
int val = ((wav->data & 0xff) data[i + 1] & 0xff);
samples.push_back(val);
}
printf("done\n");
}
< /code>
И вот WAV Reader: < /p>
typedef struct
{
//riff
uint32_t Chunk_ID;
uint32_t ChunkSize;
uint32_t Format;
//fmt
uint32_t SubChunk1ID;
uint32_t SubChunk1Size;
uint16_t AudioFormat;
uint16_t NumberOfChanels;
uint32_t SampleRate;
uint32_t ByteRate;
uint16_t BlockAlignment;
uint16_t BitsPerSample;
//data
uint32_t SubChunk2ID;
uint32_t SubChunk2Size;
//Everything else is data. We note it's offset
char data[];
} WAV_HEADER;
#pragma pack()
inline WAV_HEADER* loadWav(const char* filePath)
{
long size;
WAV_HEADER* header;
void* buffer;
FILE* file;
fopen_s(&file,filePath, "r");
assert(file);
fseek(file, 0, SEEK_END);
size = ftell(file);
rewind(file);
std::cout
Я не уверен, в чем проблема, я подтвердил, что метадан нет, и не существует несоответствия между числами, считываемыми из заголовка и фактического файл. Я предполагаю, что на моей стороне это размер/смещение, но я не вижу его.
Любая помощь приветствует.>
Подробнее здесь: https://stackoverflow.com/questions/706 ... rather-tha
Загрузка волнового файла, но в конце данных есть случайная чепуха, а не ожидаемые образцы ⇐ C++
Программы на C++. Форум разработчиков
1739431157
Anonymous
У меня есть простой читатель WAV, который я нашел онлайн давным -давно, я вернулся к его использованию, но, похоже, он заменит около 1200 образцов в конце чанка данных одним случайным повторяющимся номером , например, -126800. В конце выборки ожидается молчание, поэтому число должно быть нулевым. < /P>
Вот простая программа: < /p>
void main() {
WAV_HEADER* wav = loadWav(".\\audio\\test.wav");
double sample_count = wav->SubChunk2Size * 8 / wav->BitsPerSample;
printf("Sample count: %i\n", (int)sample_count);
vector samples = vector();
for (int i = 0; i < wav->SubChunk2Size; i++)
{
int val = ((wav->data[i] & 0xff) data[i + 1] & 0xff);
samples.push_back(val);
}
printf("done\n");
}
< /code>
И вот WAV Reader: < /p>
typedef struct
{
//riff
uint32_t Chunk_ID;
uint32_t ChunkSize;
uint32_t Format;
//fmt
uint32_t SubChunk1ID;
uint32_t SubChunk1Size;
uint16_t AudioFormat;
uint16_t NumberOfChanels;
uint32_t SampleRate;
uint32_t ByteRate;
uint16_t BlockAlignment;
uint16_t BitsPerSample;
//data
uint32_t SubChunk2ID;
uint32_t SubChunk2Size;
//Everything else is data. We note it's offset
char data[];
} WAV_HEADER;
#pragma pack()
inline WAV_HEADER* loadWav(const char* filePath)
{
long size;
WAV_HEADER* header;
void* buffer;
FILE* file;
fopen_s(&file,filePath, "r");
assert(file);
fseek(file, 0, SEEK_END);
size = ftell(file);
rewind(file);
std::cout
Я не уверен, в чем проблема, я подтвердил, что метадан нет, и не существует несоответствия между числами, считываемыми из заголовка и фактического файл. Я предполагаю, что на моей стороне это размер/смещение, но я не вижу его.
Любая помощь приветствует.>
Подробнее здесь: [url]https://stackoverflow.com/questions/70627117/loading-wave-file-but-there-is-random-nonsense-at-the-end-of-the-data-rather-tha[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия