Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 09.05.2018
Сообщений: 2

Навигация (перемотка) по большим Аудиофайлам и использование памяти

09.05.2018, 13:19. Показов 1592. Ответов 3

Студворк — интернет-сервис помощи студентам
Привет всем! Пытаюсь сделать музыкальный Mp3-плеер, возникли вопросы по поводу реализации перемотки музыкального трека использую методы mark,reset,skip для (AudioInputStream), но при работе с большими аудиофайлами используется очень много озу.

Получается что вся дорожка загружается в оп-память?
Или я что-то делаю не так как надо?

В общем на помощь...

Для работы с mp3 использую

http://www.javazoom.net/projects.html

(jl1.0.1,mp3spi1.9.5,tritonus_share)

Java
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
public class MainClass {
 
    static long HowManySkip = 0;
    static long FileLeg = 0;
 
    public static void main(String[] args) {
 
        int num = 0;
        byte[] data = new byte[5000];
 
        ///////////////// GUI/////////////
        JFrame frame = new JFrame("Test");
        JProgressBar prb = new JProgressBar();
        prb.setMaximum(100);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(400, 70);
        frame.setResizable(false);
        frame.setLocationRelativeTo(null);
 
        frame.add(prb);
 
        prb.addMouseListener(new MouseListener() {
 
            @Override
            public void mousePressed(MouseEvent e) {
                HowManySkip = (long) Map(e.getX(), 0, 400, 0, FileLeg);
 
            }
            public void mouseReleased(MouseEvent e) {}
            public void mouseExited(MouseEvent e) {}
            public void mouseEntered(MouseEvent e) {}
            public void mouseClicked(MouseEvent e) {}
            
        });
 
        frame.setVisible(true);
        //////////////////////////////////
 
        try {
            File f = new File("test.mp3");
            AudioInputStream in = AudioSystem.getAudioInputStream(f);
 
            FileLeg = in.available();
            
            in.mark(in.available());
 
            AudioFormat decodedFormat = new AudioFormat(
                    AudioFormat.Encoding.PCM_SIGNED, in.getFormat().getSampleRate(),16, 2, 4, 44100.0f, true);
 
            AudioInputStream din = AudioSystem.getAudioInputStream(decodedFormat, in);
            DataLine.Info info = new DataLine.Info(SourceDataLine.class, decodedFormat);
            SourceDataLine Output = (SourceDataLine) AudioSystem.getLine(info);
 
            Output.open(decodedFormat);
            Output.start();
 
            while (num != -1) {
                // Прогресс бар
                prb.setValue((int) (100 - Map(in.available(), 0, FileLeg, 0, 100)));
 
                Output.write(data, 0, num);
                
                if (HowManySkip != 0) {
                    Output.stop();
                    in.reset();
                    while (HowManySkip != 0) {
                        HowManySkip -= in.skip(HowManySkip);
                    }
                    Output.drain();
                    Output.start();
                }
 
                num = din.read(data);
                Thread.sleep(20);
 
            }
 
        } catch (Exception e) {
            e.printStackTrace();
        }
 
    }
 
    static double Map(double n, double start1, double stop1, double start2, double stop2) {
        return ((n - start1) / (stop1 - start1)) * (stop2 - start2) + start2;
 
    }
 
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.05.2018, 13:19
Ответы с готовыми решениями:

Какую лучше выбрать видеокарту - с большим объёмом памяти или большими частотами памяти?
Какую лучше выбрать видеокарту - с большим объёмом памяти или большими частотами памяти?! Всё вместе не получается(

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

Добавление тишины к аудиофайлам
Есть в папке множество mp3-файлов. Нужно в конец каждого аудиофайла добавить 3 секунды тишины. На сколько я понимаю, в одиночном случае...

3
 Аватар для Aviz__
2755 / 2062 / 509
Регистрация: 17.02.2014
Сообщений: 9,492
09.05.2018, 15:30
https://stackoverflow.com/ques... s-for-java много всего, покопайтесь
0
502 / 348 / 134
Регистрация: 14.06.2016
Сообщений: 669
09.05.2018, 15:43
Minepolz320, ткни пальцем, где в твоем коде что-то из JLayer? Вообще, там есть готовый AdvancedPlayer.
0
0 / 0 / 0
Регистрация: 09.05.2018
Сообщений: 2
09.05.2018, 22:56  [ТС]
Здравствуйте,
Делал всё как было в примере тут
http://www.javazoom.net/mp3spi/documents.html

Готовый "AdvancedPlayer" мне не подходит.

Добавлено через 7 часов 3 минуты
UPD:
Стало известно что много памяти занимает AudioInputStream а точнее его буфер...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.05.2018, 22:56
Помогаю со студенческими работами здесь

Чтение в richtextbox больших файлов сопровождается большим потреблением памяти приложением
Здравствуйте! Вот мне не понятно: я читаю содержимое файла в RichTextBox (вес этого файла 207 мб). ...

Использование оперативной памяти (вылетают игры из-за нехватки памяти)
Перезагружаю комп, играю часа 3-4 и вся память пропадает куда-то в результате чего игры вылетают(закрытие всех прог и игр оставляет где-то...

Нет доступа к файлам изображения и аудиофайлам
Добрый день! Я восстановил Windows 7x64 из резервной копии. Папка МОИ ДОКУМЕНТЫ, видео, музыка хранятся на другом физическом жестком...

Почему код, написанный на С++, в разы быстрее работает с большим объемом памяти, чем с маленьким?
Привет! Понадобилось мне сравнить скорость работы идентичных алгоритмов на Fortran и C++. Алгоритм - перемножение матриц. Решил...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru