0 / 0 / 0
Регистрация: 01.12.2015
Сообщений: 54
1

Много нулевых значений у байтов из mp3

13.05.2017, 12:17. Показов 553. Ответов 1
Метки mp3 (Все метки)

Author24 — интернет-сервис помощи студентам
Записываю mp3 файл как массив байтов и когда выводятся значения то больше половины значений 0.
Беру 1500 элементов чтобы сократить процесс так как 1 трек вмещает в себе до 1млн байтов, а может и больше.
Оно так и должно быть?

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
private void buttonEnter_Click(object sender, EventArgs e)
        {
            byte[] track = File.ReadAllBytes(textBoxPathToFile.Text); //записываем трек в массив
 
            label1.Visible = true;
            progressBar1.Visible = true;
            label2.Visible = true;
            progressBar2.Visible = true;
 
            PCM pcm = new PCM(track, 1500, progressBar1);
 
            MessageBox.Show("Size buffer: " + track.Length);
 
            label1.Visible = false;
            progressBar1.Visible = false;
 
            pcm.Function(chartPCM, textBoxData, progressBar2);
            
            label2.Visible = false;
            progressBar2.Visible = false;
        }
 
        public void Function(Chart chartPCM, TextBox textBoxData, ProgressBar progressBar2)
        {            
            double u = 0.47, wd = 68;
            double w = 2 * Math.PI * u;
            double td = 2 * Math.PI / wd;
            int n = Convert.ToInt32(Length / td);
            double[] T = new double[n];
            
            for (double i = 0, j = 0; i < n; i++, j += td)
            {
                T[Convert.ToInt32(i)] = j;
            }
 
            double[] sampling = new double[n];
            int[] quantization = new int[n];
 
            progressBar2.Maximum = n;
 
            for (int i = 0; i < n; i++)
            {
                sampling[i] = signal[(int)T[i]] * Math.Sin(w * T[i]);
                quantization[i] = Convert.ToInt32(sampling[i] + 1.0f);
 
                if (i < signal.Length)
                {
                    chartPCM.Series[0].Points.AddXY(i, signal[i]);
                    textBoxData.Invoke(new Action(() => 
                        textBoxData.Text += signal[i].ToString() + Environment.NewLine));//выводим трек в текстовое поле
                }
 
                chartPCM.Series[1].Points.AddXY(T[i], sampling[i]);
                chartPCM.Series[2].Points.AddXY(T[i], quantization[i]);
 
                progressBar2.Value = i + 1;
            }
        }
Добавлено через 6 минут
C#
1
2
3
4
5
6
7
8
9
10
11
12
public PCM(byte[] track, int length, ProgressBar progressBar1)
        {
            signal = new double[length];
            Length = length;
            progressBar1.Maximum = Length;
            
            for (int i = 0; i < signal.Length; i++)
            {
                signal[i] = Convert.ToDouble(track[i]);
                progressBar1.Value = i + 1;
            }
        }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.05.2017, 12:17
Ответы с готовыми решениями:

Создать файл состоящий из нулевых байтов
Сабж. Это как? Кодировка походу ASCII. У меня два варианта... 1) По ascii таблице...

Конвертировать звуковой файл (.mp3, .wav) в массив байтов
Итак, передо мной встала непростая задача - конвертировать звуковой файл (.mp3, .wav) в массив...

Нужно воспроизвести mp3 файл много раз
Нужно воспроизвести mp3 файл много раз. После конца заново начать как это сделать? Добавлено...

Как лучше организовать список значений, если есть очень много значений?
Есть сводная таблица, в которой есть список значений. Как лучше организовать выборку нужных...

1
Эксперт .NETАвтор FAQ
10409 / 5139 / 1824
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
13.05.2017, 14:13 2
Цитата Сообщение от Vex788 Посмотреть сообщение
Записываю mp3 файл как массив байтов и когда выводятся значения то больше половины значений 0.
Вы просто берете байты mp3 файла и пытаетесь их обрабатывать как семплы звука? seriously?
Mp3 - это сложный формат, с заголовком, с чанками, к тому же он обычно сжатый. Что бы получить из него семплы нужно пользоваться специальными библиотеками типа NAudio.
Просто так работать с байтами mp3 - бессмысленно.
0
13.05.2017, 14:13
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.05.2017, 14:13
Помогаю со студенческими работами здесь

ввести массив содержащий много нулевых элементов заменить все группы подряд нулей на один ноль
ввести массив содержащий много нулевых элементов заменить все группы подряд нулей на один...

Ввести массив, содержащий много нулевых элементов, и заменить все группы подряд идущих нулей на один ноль
ввести массив содержащий много нулевых элементов заменить все группы подряд нулей на один...

Ввести массив, который содержит много нулевых элементов. Заменить все группы подряд расположенных нулей на один ноль
Ввести массив, который содержит много нулевых элементов. Заменить все группы подряд расположенных...

Определить наибольшее из всех отрицательных значений, наибольшее из всех значений, количество нулевых значений
Доброго времени суток. Помоги пожалуйста,никак не получается. Использование функций в языке СИ,...

Отображение нулевых значений
Задание состоит в том,чтобы в запросе с помощью функции Count отобразить число елементов. Все...

Подстановка нулевых значений ?
Всем привет . Возникла проблема с кодом sql, в котором я, собственно, нибумбум . Собственно, сабж...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru