С Новым годом! Форум программистов, компьютерный форум, киберфорум
C++/CLI Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 06.12.2014
Сообщений: 2

Как считать заголовок WAV файла?

06.12.2014, 15:18. Показов 2540. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как считать заголовок WAV файла? Есть код под конс. но надо windowsform. Помогите! Заранее , спасибо!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#include <stdio.h>
#include <tchar.h>
#include <conio.h>
#include <math.h>
 
// Структура, описывающая заголовок WAV файла.
struct WAVHEADER
{
    // WAV-формат начинается с RIFF-заголовка:
 
    // Содержит символы "RIFF" в ASCII кодировке
    // (0x52494646 в big-endian представлении)
    char chunkId[4];
 
    // 36 + subchunk2Size, или более точно:
    // 4 + (8 + subchunk1Size) + (8 + subchunk2Size)
    // Это оставшийся размер цепочки, начиная с этой позиции.
    // Иначе говоря, это размер файла - 8, то есть,
    // исключены поля chunkId и chunkSize.
    unsigned long chunkSize;
 
    // Содержит символы "WAVE"
    // (0x57415645 в big-endian представлении)
    char format[4];
 
    // Формат "WAVE" состоит из двух подцепочек: "fmt " и "data":
    // Подцепочка "fmt " описывает формат звуковых данных:
    
    // Содержит символы "fmt "
    // (0x666d7420 в big-endian представлении)
    char subchunk1Id[4];
 
    // 16 для формата PCM.
    // Это оставшийся размер подцепочки, начиная с этой позиции.
    unsigned long subchunk1Size;
 
    // Аудио формат, полный список можно получить здесь 
    // Для PCM = 1 (то есть, Линейное квантование).
    // Значения, отличающиеся от 1, обозначают некоторый формат сжатия.
    unsigned short audioFormat;
 
    // Количество каналов. Моно = 1, Стерео = 2 и т.д.
    unsigned short numChannels;
 
    // Частота дискретизации. 8000 Гц, 44100 Гц и т.д.
    unsigned long sampleRate;
 
    // sampleRate * numChannels * bitsPerSample/8
    unsigned long byteRate;
 
    // numChannels * bitsPerSample/8
    // Количество байт для одного сэмпла, включая все каналы.
    unsigned short blockAlign;
 
    // Так называемая "глубиная" или точность звучания. 8 бит, 16 бит и т.д.
    unsigned short bitsPerSample;
 
    // Подцепочка "data" содержит аудио-данные и их размер.
 
    // Содержит символы "data"
    // (0x64617461 в big-endian представлении)
    char subchunk2Id[4];
 
    // numSamples * numChannels * bitsPerSample/8
    // Количество байт в области данных.
    unsigned long subchunk2Size;
 
    // Далее следуют непосредственно Wav данные.
};
 
int main(int argc, _TCHAR* argv[])
{
    FILE *file;
    errno_t err;
    err = fopen_s(&file, "test.wav", "rb");
    if (err)
    {
        printf_s("Failed open file, error %d", err);
        return 0;
    }
 
    WAVHEADER header;
 
    fread_s(&header, sizeof(WAVHEADER), sizeof(WAVHEADER), 1, file);
 
    // Выводим полученные данные
    printf_s("Sample rate: %d\n", header.sampleRate);
    printf_s("Channels: %d\n", header.numChannels);
    printf_s("Bits per sample: %d\n", header.bitsPerSample);
 
    // Посчитаем длительность воспроизведения в секундах
    float fDurationSeconds = 1.f * header.subchunk2Size / (header.bitsPerSample / 8) / header.numChannels / header.sampleRate;
    int iDurationMinutes = (int)floor(fDurationSeconds) / 60;
    fDurationSeconds = fDurationSeconds - (iDurationMinutes * 60);
    printf_s("Duration: %02d:%02.f\n", iDurationMinutes, fDurationSeconds);
 
    fclose(file);
 
    _getch();
    return 0;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.12.2014, 15:18
Ответы с готовыми решениями:

Как считать заголовок Wav файла
Как считать заголовок

Как считать из .wav файла длительность аудиозаписи?
Здравствуйте! Какой командой можно занести аудиофайл в переменную Добавлено через 20 минут Как считать из .wav файла длительность...

Заголовок wav файла
Помогите решить проблему. Пытаюсь написать программу, которая бы считывала информацию из заголовка wav файла (Subchunk2Size, Bits per...

1
Заблокирован
12.12.2014, 05:39
А почему нельзя скомпилировать код под консоль и полученное консольное приложение запускать из приложения Winform? Передачу информации туда и обратно можно осуществить через аргументы + return (либо саму консоль, в нее можно что-то программно вводить при запуске приложения и отслеживать вывод).

Да и свой код с нуля написать обычно проще, чем переделывать готовый.
wav обычный бинарный формат. Читаем по байтам с помощью BinaryReader, получаем значения определенных по счету байтов - они и содержат нужную нам информацию.
Весь вопрос только в том, какие именно байт нам нужны. Ну это можно узнать опытным путем: в каком-нибудь редакторе создаем wav, открываем HEX-редактором, потом что-то меняем в этом wav, снова открываем в HEX-редакторе, смотрим, какие байты изменились. Вот в этих байтах и хранится нужная нам информация.

Конечно, не со всеми форматами такое проходит одинаково успешно, попадаются всякие подводные камни. У меня с JPEGом так не получилось. Но вероятность высока.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.12.2014, 05:39
Помогаю со студенческими работами здесь

Заголовок WAV файла
Требуется прочитать сам звук из wav файла. Читаю для начала заголовок , таким образом: wavheader openWH(FILE *fo) { wavheader...

Создание нового Wav - файла, используя заголовок другого
Помогите пожалуйста! Задали такую задачу: надо полностью считать все о любом WAV файле (заголовок, сами данные), а потом записать их в...

Считать data из wav файла
Ребят, все перелазил и не могу дойти как считать данные звукового файла. Заголовок считал. Теперь нужно считать в массив данные,...

Как побайтово считать Wav файл?
Так, чтобы у я мог с ним работать, а потом опять выгрузить его как wav файл?

Как считать файл Wav в массив байт
Добрый день дорогие форумчане. Подскажите пожалуйста, как считать wav файл в byte. Выглядит это вот так byte buffer =...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru