Сайт | Скачать | Видео | Wiki

Автор Тема: Gui для проигрывателя mpg123  (Прочитано 6997 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Автор темы
  • Старый чайник
Gui для проигрывателя mpg123
« : 19 Февраль 2020, 14:19:58 »
 Так как sfs не разрешил мне дербанить default*, с расстройства написал выключалку для mpg123.
« Последнее редактирование: 20 Февраль 2020, 16:57:27 от sfs »
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33965
  • Репутация: +231/-0
    • PuppyRus-A
Re: Вот...
« Ответ #1 : 19 Февраль 2020, 14:35:00 »
Как всегда все супер - от названия темы до объяснения - что это , для чего и как юзать

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Автор темы
  • Старый чайник
Re: Вот...
« Ответ #2 : 19 Февраль 2020, 16:07:19 »
что это
Выключалка
для чего
Для mpg123
как юзать
Кликаешь файл *.mp3, слушаешь, не хочешь, кликаешь кнопочку. Теперь понятно, или не...
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн I-Jurij

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 533
  • Репутация: +16/-0
Re: Вот...
« Ответ #3 : 19 Февраль 2020, 21:25:38 »
Жесть...
Не видел как мпг123 запускается в пра почему-то, наверное, что-то другое аудио открывало, но кнопка убивания плеера - это что-то.
Код
mpg123 -C
включает поддержку клавиш управления.
Т.е. можно просто запустить в терминале, а потом управлять с клавиатуры. И костыли для убивания не нужны будут.
« Последнее редактирование: 19 Февраль 2020, 21:27:28 от I-Jurij »

Оффлайн knn

  • Ветеран
  • *****
  • Сообщений: 2538
  • Репутация: +33/-0
Re: Вот...
« Ответ #4 : 19 Февраль 2020, 23:04:49 »
mpg123.
для радио mplayer|mpg123 - разбег( на rv510-в-подписи):
- по процу  ~= 40%,
- по памяти ~= в 6 раз.
( и там и там получается в htop-е pulseaudio видно )
[ правда в mpg123 перематывать радио вроде нельзя, но и совсем не часто такое нужно] upd: ...вроде как-то мотает...
« Последнее редактирование: 19 Февраль 2020, 23:15:24 от knn »
Gr4D, Grub2; HP Mini 210 VT - Intel Atom N470  @ 1.83GHz, Intel GMA3150, RAM=2 ГБ ;
Sams-n110: N270 - 1,6 ГГц, Intel GMA 950, RAM=2 ГБ.

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Автор темы
  • Старый чайник
Re: Вот...
« Ответ #5 : 20 Февраль 2020, 07:05:01 »
как мпг123 запускается в пра
При чём здесь pra?
mpg123 -C
Да, "Ctrl + \ " выход, но не каждый это знает, в help и man этого не сказано.
можно просто запустить в терминале
И будет этот терминал висеть... А он нужен?
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн knn

  • Ветеран
  • *****
  • Сообщений: 2538
  • Репутация: +33/-0
Re: Вот...
« Ответ #6 : 20 Февраль 2020, 07:43:33 »
"Ctrl + \ " выход, но не каждый это знает, в help и man этого не сказано.
- это получается - да.
Зато "случайно" обнаружил :) :
-= terminal control keys =-
Код
[s] or [ ]	interrupt/restart playback (i.e. '(un)pause')
[f] next track
[d] previous track
[]] next directory (next track until directory part changes)
[[] previous directory (previous track until directory part changes)
[b] back to beginning of track
[p] loop around current position (don't combine with output buffer)
[.] forward
[,] rewind
[:] fast forward
[;] fast rewind
[>] fine forward
[<] fine rewind
[+] volume up
[-] volume down
[r] RVA switch
[v] verbose switch
[l] list current playlist, indicating current track there
[t] display tag info (again)
[m] print MPEG header info (again)
[h] this help
[q] quit
[c] or [C] pitch up (small step, big step)
[x] or [X] pitch down (small step, big step)
[w] reset pitch to zero
[k] print out current position in playlist and track, for the benefit of some external tool to store bookmarks
Gr4D, Grub2; HP Mini 210 VT - Intel Atom N470  @ 1.83GHz, Intel GMA3150, RAM=2 ГБ ;
Sams-n110: N270 - 1,6 ГГц, Intel GMA 950, RAM=2 ГБ.

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Автор темы
  • Старый чайник
Re: Вот...
« Ответ #7 : 20 Февраль 2020, 08:12:56 »
И костыли для убивания не нужны будут.
Утверждение ложно. Достаточно свернуть консоль или перекрыть другим окном и "-C" не работает. И как тогда?
-= terminal control keys =-
Работает, но не все.
« Последнее редактирование: 20 Февраль 2020, 08:40:08 от DdShurick »
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн k0l0p0k

  • Ветеран
  • *****
  • Сообщений: 1611
  • Репутация: +27/-1
Re: Вот...
« Ответ #8 : 20 Февраль 2020, 10:51:47 »
осталось приделать меню по ПКМ (пауза, вперед, назад .... )
и еще один микропроигрыватель готов :)
пс
посмотрел хэлп:
в mpg123 (так же как и mplayer) можно засылать команды управления через предварительно созданный канал, опция --fifo <path>
« Последнее редактирование: 20 Февраль 2020, 11:00:19 от k0l0p0k »
1.пень G2020,8Gb,Radeon RX460 (Debian+openBox+LXPanel)
2.нетбук  Samsung N145 (Debian+openBox+LXPanel, ddr01)

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33965
  • Репутация: +231/-0
    • PuppyRus-A
Re: Вот...
« Ответ #9 : 20 Февраль 2020, 12:23:00 »
Может нормальное название дать и в раздел программирование перенести?

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Автор темы
  • Старый чайник
Re: Вот...
« Ответ #10 : 20 Февраль 2020, 16:50:44 »
в раздел программирование перенести?
Если хочешь. Могу по косточкам разобрать, глядишь и ты научишься.
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33965
  • Репутация: +231/-0
    • PuppyRus-A
Re: Gui для проигрывателя mpg123
« Ответ #11 : 20 Февраль 2020, 16:57:58 »
Могу по косточкам разобрать, глядишь и ты научишься.
Было бы интересно многим

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Автор темы
  • Старый чайник
Re: Gui для проигрывателя mpg123
« Ответ #12 : 20 Февраль 2020, 17:55:30 »
Gui для проигрывателя mpg123
Название слишком пышное. Я не собирался писать GUI, их и так 100500
Было бы интересно многим
Хорошо. "C" тоже конструктор, но если в bash мы запускаем утилиты, то в "C" используем функции.
Объявляем функции, в самом начале пишем:
Код
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>
#include <gtk/gtk.h>
#include <gdk/gdk.h>
#include <glib/gstdio.h>
Объявлякм глобальные переменные.
Код
GtkStatusIcon *tray_icon;
В данном случае одну.
Секция main, обычно в самом конце:
Код
int main(int argc, char **argv) { /* argc это число аргументов (перепенная типа int), argv сами аргументы (имена, переменная char), * - указатель */

pid_t pid; /* переменная для pid */

char media[128]="mpg123 \""; /* переменная media строка до 128 символов */
for(int i=1; i<argc; i++) strcat(media,argv[i]); /* цикл for пока i меньше argc, strcat добавляет аргумент № i в конец строки media */
strcat(media,"\""); /*закрываем кавычки */

switch(pid=fork()) { /* форкаем прцесс */
case -1:
exit(1);
case 0:
system(media); /* Запускаем плеер */
kill(getppid(),15);
raise(15);
default:
gtk_init(&argc, &argv);
tray_icon = create_tray_icon(); /* Запускаем иконку в трее */
gtk_main();
kill(pid,15);
} /* kill обеспечивает уничтожение иторого процесса по окончании первого (гарантированное взаимоуничтожение) */
return 0;
}
Эта секция описывает иконку;
Код
static GtkStatusIcon *create_tray_icon() {

    tray_icon = gtk_status_icon_new();
    g_signal_connect(G_OBJECT(tray_icon), "activate", G_CALLBACK(tray_icon_on_click), NULL); /* отсылка к действию по ЛКМ */
gtk_status_icon_set_from_stock(tray_icon,"gtk-media-stop"); /* отображаемая иконка */
gtk_status_icon_set_tooltip(tray_icon," Выключить mpg123 "); /* подсказка */
    gtk_status_icon_set_visible(tray_icon, TRUE); /* запуск иконки */
    return tray_icon;
}
Секция действия по клику
Код
static void tray_icon_on_click(GtkStatusIcon *status_icon, gpointer user_data)
{
    system("killall mpg123"); /* вырубаем проигрыватель */
gtk_main_quit(); /* выходим из gtk (убираем иконку) */
}
Понятно, или не очень?
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33965
  • Репутация: +231/-0
    • PuppyRus-A
Re: Gui для проигрывателя mpg123
« Ответ #13 : 20 Февраль 2020, 17:59:22 »
Мне начиная с main не очень понятно.
Я даже букварей по си не читал. А комментарии более менее понятны

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Автор темы
  • Старый чайник
Re: Gui для проигрывателя mpg123
« Ответ #14 : 20 Февраль 2020, 18:38:52 »
начиная с main не очень понятно.
Что именно?

Функции си.
« Последнее редактирование: 20 Февраль 2020, 20:22:25 от DdShurick »
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64