С Новым годом! Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.79/34: Рейтинг темы: голосов - 34, средняя оценка - 4.79
Си-решеточник
 Аватар для Rameron
141 / 135 / 60
Регистрация: 07.02.2011
Сообщений: 669

Библиотека для проигрывания MP3

30.01.2012, 16:49. Показов 6655. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток.

Не могли бы подсказать библиотеку для воспроизведения mp3?
Интересует, чтобы в ней была возможность перемотки, взятие текущей позиции и паузы.
Пользовался JLayer 1.0.1, но в ней слишком маленький функционал.

Заранее спасибо за ответы.

P.S. С JMF так и не разобрался...
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.01.2012, 16:49
Ответы с готовыми решениями:

Библиотека для проигрывания видео
Решил написать библиотеку для проигрывания видео, но выходят какие-то нестыковки. Что не так в моем коде? namespace video { ...

Free OCX для проигрывания сильно сжатых небольших MP3- файлов
Не подскажете, где можно скачать исходники или работающий Сontrol для проигывания из VB MP3 c низкими битрейтами.Или файл .ACM для...

Нужна библиотека для mp3
Мне для плеера очень нужно, представляете, библиотеку для хотя бы mp3шек. Заодно тащите все: примеры кода, как использовать, как включить и...

2
Luger
08.06.2012, 08:45
Лучший ответ Сообщение было отмечено Rameron как решение

Решение

конктретно чем не устраивает функционал? нет паузы? или нельзя узнать позицию проигрывания?
меняешь Player.java код следующим образом
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
    
private boolean isPaused = false;
 
    /**
     * @return void
     * устанавливает флаг "пауза" в значение истина, иначе говоря останавливает плейер
     */
    public void pause (){
        this.isPaused = true;
    }
 
    /**
     * @return void
     * устанавливает флаг "пауза" в значение ложь, иначе говоря продолжаетпроигрывание плейера
     */
    public void resume (){
        this.isPaused = false;
    }
 
        public boolean play(int frames) throws JavaLayerException
    {
        boolean ret = true;
            
        while (frames-- > 0 && ret)
        {
/*isPaused - флаг, который указываето на то что надо отсановить\продолжить проигрывание*/
            if (!isPaused)ret = decodeFrame();
            else{
                try {
                    Thread.sleep(100);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
        
        if (!ret)
        {
            
            AudioDevice out = audio;
            if (out!=null)
            {               
                out.flush();
                synchronized (this)
                {
                    complete = (!closed);
                    close();
                }               
            }
        }
        return ret;
    }
решение не самое изящное, лучше сделать с помощью семафоров, Thread.sleep вешает проц вообщем то.

потом в каком то другом модуле где исползуешь свой плейер делаешь примерно так :
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
package javazoom.jl.player;
 
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
 
import javazoom.jl.decoder.JavaLayerException;
 
public class mp3PlayerManager implements Runnable{
    private byte [] buffer;
    private ByteArrayInputStream inStream;
    private FileInputStream inFileStream;
    private Player player;
    /**
     * if local mp3 , mode = 0;
     * if remote mp3 , mode = 1;
     * if radio, mode = 2;
     * 
     */
    private int mode;
    private boolean paused = false, stopped = true;
    
    protected AudioDevice getAudioDevice()
            throws JavaLayerException
    {
            return FactoryRegistry.systemRegistry().createAudioDevice();
    }
 
    public mp3PlayerManager (){
    }
    
    public void setLocalMp3 (URL filename) throws IOException, JavaLayerException{
        mode = 0;
        inFileStream = new FileInputStream(filename.getFile());
        player = new Player(inFileStream, getAudioDevice());
    }
 
    public void setRemoteMp3 (byte [] buf) throws JavaLayerException{
        mode = 1;
        this.buffer = buf;
        this.inStream = new ByteArrayInputStream(buffer);
        player = new Player(inStream, getAudioDevice());
    }
    
    public int getCurrentPosition (){
        return this.player.getPosition();
    }
    
    public void play (){
        if (player != null) {
            paused = false;
            stopped = false;
            new Thread(this).start();
        }
    }
    
    public void pause (){
        this.player.pause();
        this.paused = true;
    }
    
    public void resume (){
        this.player.resume();
        this.paused = false;
    }
    
    public void stop (){
        this.player.pause();
        this.player.close();
        this.stopped = true;
    }
    @Override
    public void run() {
        // TODO Auto-generated method stub
        System.out.println("starting...");
        try {
            System.out.println("playing...");
            this.player.play();
        } catch (JavaLayerException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    
    public void pauseToggle (){
        this.paused = !this.paused;
        if (this.paused){
            System.out.println("player paused");
            this.player.pause();
        }
        else {
            System.out.println("player playing");
            this.player.resume();
        }
    }
    
    public static void main (String args[]){
        mp3PlayerManager mp3man = new mp3PlayerManager();
        try {
            mp3man.setLocalMp3(new java.net.URL("file:///~/any.mp3"));
            mp3man.play();
            BufferedReader consoleReader = new BufferedReader   (new InputStreamReader(System.in));
            while (1 == 1)
            {
                try
                {
                    consoleReader.readLine();
                }
                catch (Exception ex)
                {
                    ex.printStackTrace();
                }
 
                System.out.println("toggling pause");
                System.out.println(mp3man.getCurrentPosition());
 
                mp3man.pauseToggle();
            }
 
        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (JavaLayerException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
    }
}
 Аватар для ShakeZula
5 / 5 / 0
Регистрация: 28.05.2012
Сообщений: 14
08.06.2012, 15:25
Сама библиотека для проигрывания mp3 там есть и документация
http://www.javazoom.net/javalayer/javalayer.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.06.2012, 15:25
Помогаю со студенческими работами здесь

Событие завершения проигрывания mp3 файла
Здравствуйте, уважаемые форумчане. Столкнулся со следующей проблемой: Создаю объект WindowsMediaPlayer так: WindowsMediaPlayer...

Библиотека для воспроизведения mp3 файла по url
Какую библиотеку лучше выбрать? Нужна возможность воспроизводить mp3 файлы на компьютере и по url.

Создать плеер хотя бы с кнопкой "открыть" "играть" и с TrackBar для проигрывания mp3
Мне требуется создать плеер, я смотрел исходники, но они мне не подходят. Прошу помочь создать плеер хотя бы с кнопкой...

Библиотека для работы с id3-тегами mp3-файлов
Подскажите сабж. id3lib видел, но она старая и не поддерживает v2.4 тэгов.

Библиотека и mp3(Builder C++)
Здравствуйте вот недавно дали задание создать проект(в билдере С++) библиотеку с мп3 проигрывателем.Нужно что бы программа сортировала...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход
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. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru